Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrbrooks2010-08-29 08:19:34 +0000
committerrbrooks2010-08-29 08:19:34 +0000
commit59f9aeec1800ce305d6075446f99269385af9c9b (patch)
tree2f1a2b4b28561e7afc90fd9501e056a4edf43cd8 /plugins/org.eclipse.osee.ats/src
parentd8dfd93647951a8fd2dfe74bf6fadb2697f08543 (diff)
parent9279bf9b85bf1ceb07098e922625e00996c085de (diff)
downloadorg.eclipse.osee-0.9.5.v201008280938.tar.gz
org.eclipse.osee-0.9.5.v201008280938.tar.xz
org.eclipse.osee-0.9.5.v201008280938.zip
0.9.5 Branch Creation0.9.5.v201008280938
Diffstat (limited to 'plugins/org.eclipse.osee.ats/src')
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/access/AtsObjectContextId.java2
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/DuplicateWorkflowAction.java98
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/DuplicateWorkflowViaWorldEditorAction.java114
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/EditActionableItemsAction.java88
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/ISelectedAtsArtifacts.java54
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/ImportTasksViaSimpleList.java104
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/ImportTasksViaSpreadsheet.java104
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/NewGoal.java102
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenInAtsWorkflowEditor.java140
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenInAtsWorldAction.java134
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenNewAtsTaskEditorAction.java112
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenNewAtsTaskEditorSelected.java124
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenNewAtsWorldEditorAction.java112
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenNewAtsWorldEditorSelectedAction.java126
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/ShowMergeManagerAction.java106
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/TaskAddAction.java80
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/TaskDeleteAction.java80
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/ArtifactSelectWizardPage.java446
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/IAtsTeamWorkflow.java2
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/IAtsWizardItem.java8
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/NewActionPage1.java408
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/NewActionPage2.java270
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/ATSArtifact.java122
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/ATSAttributes.java142
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/ATSLog.java818
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/ATSNote.java410
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/ActionArtifact.java2462
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/ActionableItemArtifact.java246
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/AtsAttributeTypes.java164
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/DecisionReviewArtifact.java154
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/DecisionReviewWorkflowManager.java2
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/GoalArtifact.java552
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/PeerToPeerReviewArtifact.java258
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/PeerToPeerReviewWorkflowManager.java3
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/ReviewSMArtifact.java682
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/StateMachineArtifact.java3825
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/TaskArtifact.java804
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/TaskableStateMachineArtifact.java680
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/TeamDefinitionArtifact.java1015
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/TeamWorkFlowArtifact.java1196
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/TeamWorkflowExtensions.java184
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/VersionArtifact.java393
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/config/AtsBulkLoad.java120
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/config/AtsCacheManager.java632
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/config/AtsConfigManager.java1
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/config/wizard/AtsConfigWizardPage1.java3
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/AtsTaskEditorRenderer.java136
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/AtsWorldEditorRenderer.java162
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/ISMAOperationsSection.java42
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMADetailsSection.java192
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMADragAndDrop.java82
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAEditor.java1572
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAEditorArtifactEventManager.java2
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAEditorInput.java96
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAGoalMembersSection.java818
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAHistorySection.java212
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAOperationsSection.java512
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAPrint.java388
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMARelationsHyperlinkComposite.java18
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMARelationsSection.java174
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAWorkFlowSection.java1790
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAWorkFlowTab.java1338
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAWorkflowMetricsHeader.java192
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/stateItem/AtsDecisionReviewDecisionStateItem.java210
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/stateItem/AtsDecisionReviewPrepareStateItem.java90
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/stateItem/AtsLogWorkPage.java8
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/stateItem/IAtsStateItem.java5
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/widget/EstimatedHoursXWidget.java76
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/widget/ReviewInfoXWidget.java622
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/widget/StateHoursSpentXWidget.java212
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/widget/StatePercentCompleteXWidget.java222
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/widget/TaskInfoXWidget.java274
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/export/AtsExportManager.java376
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/export/AtsExportPage.java322
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/export/AtsExportWizard.java176
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/goal/GoalXViewerFactory.java213
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/handlers/AtsEditorHandler.java64
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/handlers/AtsExportHandler.java78
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/handlers/AtsTaskEditorHandler.java78
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/handlers/AtsWorkflowConfigEditorHandler.java64
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/handlers/AtsWorldEditorHandler.java64
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/health/AtsHealthCheck.java134
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/health/ChangeReportComparer.java112
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/health/TxImportedValidateChangeReports.java594
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/health/ValidateAtsDatabase.java1778
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/health/ValidateChangeReportByHrid.java172
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/health/ValidateChangeReports.java761
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/health/change/ArtifactChangeReportComparer.java90
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/health/change/AttributeChangeReportComparer.java114
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/health/change/DataChangeReportComparer.java58
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/health/change/RelationChangeReportComparer.java94
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/health/change/ValidateChangeReportParser.java129
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/hyper/ActionHyperItem.java254
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/hyper/ActionHyperView.java738
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/hyper/ActionSkyWalker.java568
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/hyper/ArtifactHyperView.java782
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/hyper/HyperView.java2334
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/hyper/HyperViewItem.java390
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/hyper/TasksActionHyperItem.java108
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/hyper/TasksHyperViewArtifact.java150
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/internal/AtsActionReportingServiceImpl.java50
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/internal/AtsPlugin.java182
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/internal/OseeDslProviderUpdateListener.java118
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/ArtifactImpactToActionSearchItem.java361
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/AtsNavigateComposite.java138
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/AtsNavigateViewItems.java734
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/AtsQuickSearchData.java88
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/AtsQuickSearchOperation.java218
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/AtsRemoteEventTestItem.java573
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/BarChartExample.java332
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/CreateNewVersionItem.java1
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/DisplayCurrentOseeEventListeners.java3
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/EmailTeamsItem.java1
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/FirstTimeQualityMetricReportItem.java392
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/GenerateFullVersionReportItem.java276
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/GenerateGuid.java70
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/GenerateReviewParticipationReport.java232
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/GoalSearchWorkflowSearchItem.java384
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/ImportActionsViaSpreadsheet.java3
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/NavigateView.java602
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/NewPeerToPeerReviewItem.java3
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/PublishFullVersionReportItem.java268
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/ReleaseVersionItem.java1
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/TeamWorkflowSearchWorkflowSearchItem.java716
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/UpdateAtsWorkItemDefinitions.java3
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/VisitedItems.java3
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/operation/PurgeUser.java39
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/report/CreateActionArtifactChangeReportJob.java36
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/report/ExtendedStatusReportJob.java3
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/task/TaskComposite.java4
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/task/TaskXViewer.java16
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/AtsBranchManager.java1
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/AtsUtil.java1
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/DoesNotWorkItemAts.java3
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/Import/ActionImportPage.java4
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/Overview.java4
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/SMAUtil.java4
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/StateManager.java16
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/VersionReportJob.java10
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/DecisionOption.java5
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/SMAState.java5
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/defect/DefectXViewer.java4
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/defect/XDefectViewer.java25
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/dialog/ActionTeamVersionListDialog.java3
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/dialog/SimpleTaskResolutionOptionsRule.java5
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/dialog/StateListAndTitleDialog.java5
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/dialog/TaskOptionStatusDialog.java4
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/dialog/TaskResOptionDefinition.java2
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/dialog/TaskResolutionOptionRule.java1
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/role/UserRoleXViewer.java4
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/role/XUserRoleViewer.java14
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/xviewer/column/XViewerReviewRoleColumn.java1
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/xviewer/column/XViewerSmaCompletedDateColumn.java1
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/xviewer/column/XViewerSmaCreatedDateColumn.java1
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/xviewer/column/XViewerSmaStateColumn.java1
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/ATSXWidgetOptionResolver.java3
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/AtsWorkflowConfigEditor.java2
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/actions/ValidateDiagramToolEntry.java6
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/CancelledWorkPageShape.java3
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/CompletedWorkPageShape.java3
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/DefaultTransitionConnection.java4
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/ReturnTransitionConnection.java4
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/WorkPageShape.java67
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/WorkflowDiagram.java2
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/commands/ShapeDeleteCommand.java2
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/parts/ConnectionEditPart.java2
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/parts/DiagramEditPart.java4
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/parts/ShapeEditPart.java4
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/wizard/AtsWorkflowConfigCreationWizard.java4
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/wizard/NewWorkflowConfigPage1.java3
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/flow/GoalWorkflowDefinition.java5
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/flow/SimpleWorkflowDefinition.java5
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/flow/TaskWorkflowDefinition.java5
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/flow/TeamWorkflowDefinition.java6
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/item/AtsAddDecisionReviewRule.java2
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/item/AtsAddPeerToPeerReviewRule.java3
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/item/AtsWorkDefinitions.java17
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/vue/LoadAIsAndTeamsAction.java4
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/IAtsWorldEditorItem.java2
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/WorldXViewerFactory.java89
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/WorldXViewerSorter.java3
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/search/MultipleHridSearchUi.java3
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/search/TaskSearchWorldSearchItem.java7
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/search/WorldSearchItem.java1
184 files changed, 22060 insertions, 22101 deletions
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/access/AtsObjectContextId.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/access/AtsObjectContextId.java
index 6359ce1a7d5..5286ed9b665 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/access/AtsObjectContextId.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/access/AtsObjectContextId.java
@@ -27,7 +27,7 @@ public final class AtsObjectContextId {
// @formatter:on
private AtsObjectContextId() {
- //
+ //
}
}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/DuplicateWorkflowAction.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/DuplicateWorkflowAction.java
index f637067682a..f7da1500e7d 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/DuplicateWorkflowAction.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/DuplicateWorkflowAction.java
@@ -1,49 +1,49 @@
-/*******************************************************************************
- * 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.actions;
-
-import java.util.Collection;
-import org.eclipse.jface.action.Action;
-import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact;
-import org.eclipse.osee.ats.internal.AtsPlugin;
-import org.eclipse.osee.ats.operation.DuplicateWorkflowBlam;
-import org.eclipse.osee.framework.logging.OseeLevel;
-import org.eclipse.osee.framework.logging.OseeLog;
-import org.eclipse.osee.framework.ui.skynet.FrameworkImage;
-import org.eclipse.osee.framework.ui.skynet.blam.BlamEditor;
-import org.eclipse.osee.framework.ui.swt.ImageManager;
-
-/**
- * @author Donald G. Dunne
- */
-public class DuplicateWorkflowAction extends Action {
-
- private final Collection<TeamWorkFlowArtifact> teams;
-
- public DuplicateWorkflowAction(Collection<TeamWorkFlowArtifact> teams) {
- super(
- teams.size() == 1 ? "Duplicate this \"" + teams.iterator().next().getArtifactTypeName() + "\" Workflow" : "Duplicate Workflows");
- this.teams = teams;
- setImageDescriptor(ImageManager.getImageDescriptor(FrameworkImage.DUPLICATE));
- }
-
- @Override
- public void run() {
- try {
- DuplicateWorkflowBlam blamOperation = new DuplicateWorkflowBlam();
- blamOperation.setDefaultTeamWorkflows(teams);
- BlamEditor.edit(blamOperation);
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
- }
- }
-
-}
+/*******************************************************************************
+ * 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.actions;
+
+import java.util.Collection;
+import org.eclipse.jface.action.Action;
+import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact;
+import org.eclipse.osee.ats.internal.AtsPlugin;
+import org.eclipse.osee.ats.operation.DuplicateWorkflowBlam;
+import org.eclipse.osee.framework.logging.OseeLevel;
+import org.eclipse.osee.framework.logging.OseeLog;
+import org.eclipse.osee.framework.ui.skynet.FrameworkImage;
+import org.eclipse.osee.framework.ui.skynet.blam.BlamEditor;
+import org.eclipse.osee.framework.ui.swt.ImageManager;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class DuplicateWorkflowAction extends Action {
+
+ private final Collection<TeamWorkFlowArtifact> teams;
+
+ public DuplicateWorkflowAction(Collection<TeamWorkFlowArtifact> teams) {
+ super(
+ teams.size() == 1 ? "Duplicate this \"" + teams.iterator().next().getArtifactTypeName() + "\" Workflow" : "Duplicate Workflows");
+ this.teams = teams;
+ setImageDescriptor(ImageManager.getImageDescriptor(FrameworkImage.DUPLICATE));
+ }
+
+ @Override
+ public void run() {
+ try {
+ DuplicateWorkflowBlam blamOperation = new DuplicateWorkflowBlam();
+ blamOperation.setDefaultTeamWorkflows(teams);
+ BlamEditor.edit(blamOperation);
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
+ }
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/DuplicateWorkflowViaWorldEditorAction.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/DuplicateWorkflowViaWorldEditorAction.java
index 9bf9ba67c35..08e14f7bafb 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/DuplicateWorkflowViaWorldEditorAction.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/DuplicateWorkflowViaWorldEditorAction.java
@@ -1,57 +1,57 @@
-/*******************************************************************************
- * 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.actions;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.osee.ats.internal.AtsPlugin;
-import org.eclipse.osee.ats.operation.DuplicateWorkflowBlam;
-import org.eclipse.osee.ats.world.WorldEditor;
-import org.eclipse.osee.framework.logging.OseeLevel;
-import org.eclipse.osee.framework.logging.OseeLog;
-import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
-import org.eclipse.osee.framework.ui.skynet.FrameworkImage;
-import org.eclipse.osee.framework.ui.skynet.blam.BlamEditor;
-import org.eclipse.osee.framework.ui.swt.ImageManager;
-
-/**
- * @author Donald G. Dunne
- */
-public class DuplicateWorkflowViaWorldEditorAction extends Action {
-
- private final WorldEditor worldEditor;
-
- public DuplicateWorkflowViaWorldEditorAction(WorldEditor worldEditor) {
- this.worldEditor = worldEditor;
- setText("Duplicate Team Workflow");
- }
-
- @Override
- public ImageDescriptor getImageDescriptor() {
- return ImageManager.getImageDescriptor(FrameworkImage.DUPLICATE);
- }
-
- @Override
- public void run() {
- if (worldEditor.getWorldComposite().getXViewer().getSelectedTeamWorkflowArtifacts().isEmpty()) {
- AWorkbench.popup("ERROR", "Must select one or more team workflows to duplicate");
- return;
- }
- try {
- DuplicateWorkflowBlam blamOperation = new DuplicateWorkflowBlam();
- blamOperation.setDefaultTeamWorkflows(worldEditor.getWorldComposite().getXViewer().getSelectedTeamWorkflowArtifacts());
- BlamEditor.edit(blamOperation);
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
- }
- }
-
-}
+/*******************************************************************************
+ * 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.actions;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.osee.ats.internal.AtsPlugin;
+import org.eclipse.osee.ats.operation.DuplicateWorkflowBlam;
+import org.eclipse.osee.ats.world.WorldEditor;
+import org.eclipse.osee.framework.logging.OseeLevel;
+import org.eclipse.osee.framework.logging.OseeLog;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
+import org.eclipse.osee.framework.ui.skynet.FrameworkImage;
+import org.eclipse.osee.framework.ui.skynet.blam.BlamEditor;
+import org.eclipse.osee.framework.ui.swt.ImageManager;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class DuplicateWorkflowViaWorldEditorAction extends Action {
+
+ private final WorldEditor worldEditor;
+
+ public DuplicateWorkflowViaWorldEditorAction(WorldEditor worldEditor) {
+ this.worldEditor = worldEditor;
+ setText("Duplicate Team Workflow");
+ }
+
+ @Override
+ public ImageDescriptor getImageDescriptor() {
+ return ImageManager.getImageDescriptor(FrameworkImage.DUPLICATE);
+ }
+
+ @Override
+ public void run() {
+ if (worldEditor.getWorldComposite().getXViewer().getSelectedTeamWorkflowArtifacts().isEmpty()) {
+ AWorkbench.popup("ERROR", "Must select one or more team workflows to duplicate");
+ return;
+ }
+ try {
+ DuplicateWorkflowBlam blamOperation = new DuplicateWorkflowBlam();
+ blamOperation.setDefaultTeamWorkflows(worldEditor.getWorldComposite().getXViewer().getSelectedTeamWorkflowArtifacts());
+ BlamEditor.edit(blamOperation);
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
+ }
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/EditActionableItemsAction.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/EditActionableItemsAction.java
index de4e52eafcd..8a4e9bf712a 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/EditActionableItemsAction.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/EditActionableItemsAction.java
@@ -1,44 +1,44 @@
-/*******************************************************************************
- * 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.actions;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.osee.ats.AtsImage;
-import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact;
-import org.eclipse.osee.ats.internal.AtsPlugin;
-import org.eclipse.osee.ats.util.AtsUtil;
-import org.eclipse.osee.framework.logging.OseeLevel;
-import org.eclipse.osee.framework.logging.OseeLog;
-import org.eclipse.osee.framework.ui.swt.ImageManager;
-
-/**
- * @author Donald G. Dunne
- */
-public class EditActionableItemsAction extends Action {
-
- private final TeamWorkFlowArtifact teamWf;
-
- public EditActionableItemsAction(TeamWorkFlowArtifact teamWf) {
- super("Add/Update Actionable Items/Workflows");
- this.teamWf = teamWf;
- setImageDescriptor(ImageManager.getImageDescriptor(AtsImage.ACTIONABLE_ITEM));
- }
-
- @Override
- public void run() {
- try {
- AtsUtil.editActionableItems(teamWf.getParentActionArtifact());
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
- }
- }
-
-}
+/*******************************************************************************
+ * 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.actions;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.osee.ats.AtsImage;
+import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact;
+import org.eclipse.osee.ats.internal.AtsPlugin;
+import org.eclipse.osee.ats.util.AtsUtil;
+import org.eclipse.osee.framework.logging.OseeLevel;
+import org.eclipse.osee.framework.logging.OseeLog;
+import org.eclipse.osee.framework.ui.swt.ImageManager;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class EditActionableItemsAction extends Action {
+
+ private final TeamWorkFlowArtifact teamWf;
+
+ public EditActionableItemsAction(TeamWorkFlowArtifact teamWf) {
+ super("Add/Update Actionable Items/Workflows");
+ this.teamWf = teamWf;
+ setImageDescriptor(ImageManager.getImageDescriptor(AtsImage.ACTIONABLE_ITEM));
+ }
+
+ @Override
+ public void run() {
+ try {
+ AtsUtil.editActionableItems(teamWf.getParentActionArtifact());
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
+ }
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/ISelectedAtsArtifacts.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/ISelectedAtsArtifacts.java
index 26c1b4fe2fe..4f4b6d33848 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/ISelectedAtsArtifacts.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/ISelectedAtsArtifacts.java
@@ -1,27 +1,27 @@
-/*******************************************************************************
- * 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.actions;
-
-import java.util.List;
-import java.util.Set;
-import org.eclipse.osee.framework.core.exception.OseeCoreException;
-import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
-
-/**
- * @author Donald G. Dunne
- */
-public interface ISelectedAtsArtifacts {
-
- public Set<? extends Artifact> getSelectedSMAArtifacts() throws OseeCoreException;
-
- public List<Artifact> getSelectedAtsArtifacts() throws OseeCoreException;
-
-}
+/*******************************************************************************
+ * 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.actions;
+
+import java.util.List;
+import java.util.Set;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+
+/**
+ * @author Donald G. Dunne
+ */
+public interface ISelectedAtsArtifacts {
+
+ public Set<? extends Artifact> getSelectedSMAArtifacts() throws OseeCoreException;
+
+ public List<Artifact> getSelectedAtsArtifacts() throws OseeCoreException;
+
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/ImportTasksViaSimpleList.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/ImportTasksViaSimpleList.java
index 4679767b179..b355162e34a 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/ImportTasksViaSimpleList.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/ImportTasksViaSimpleList.java
@@ -1,52 +1,52 @@
-/*******************************************************************************
- * 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.actions;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.osee.ats.artifact.TaskableStateMachineArtifact;
-import org.eclipse.osee.ats.internal.AtsPlugin;
-import org.eclipse.osee.ats.operation.ImportTasksFromSimpleList;
-import org.eclipse.osee.framework.logging.OseeLevel;
-import org.eclipse.osee.framework.logging.OseeLog;
-import org.eclipse.osee.framework.ui.skynet.FrameworkImage;
-import org.eclipse.osee.framework.ui.skynet.blam.BlamEditor;
-import org.eclipse.osee.framework.ui.swt.ImageManager;
-import org.eclipse.swt.widgets.Listener;
-
-/**
- * @author Donald G. Dunne
- */
-public class ImportTasksViaSimpleList extends Action {
-
- private final TaskableStateMachineArtifact taskableArt;
- private final Listener listener;
-
- public ImportTasksViaSimpleList(TaskableStateMachineArtifact taskableArt, Listener listener) {
- this.taskableArt = taskableArt;
- this.listener = listener;
- setText("Import Tasks via simple list");
- setImageDescriptor(ImageManager.getImageDescriptor(FrameworkImage.IMPORT));
- }
-
- @Override
- public void run() {
- try {
- ImportTasksFromSimpleList blamOperation = new ImportTasksFromSimpleList();
- blamOperation.setTaskableStateMachineArtifact(taskableArt);
- BlamEditor.edit(blamOperation);
- if (listener != null) {
- listener.notify();
- }
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
- }
- }
-}
+/*******************************************************************************
+ * 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.actions;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.osee.ats.artifact.TaskableStateMachineArtifact;
+import org.eclipse.osee.ats.internal.AtsPlugin;
+import org.eclipse.osee.ats.operation.ImportTasksFromSimpleList;
+import org.eclipse.osee.framework.logging.OseeLevel;
+import org.eclipse.osee.framework.logging.OseeLog;
+import org.eclipse.osee.framework.ui.skynet.FrameworkImage;
+import org.eclipse.osee.framework.ui.skynet.blam.BlamEditor;
+import org.eclipse.osee.framework.ui.swt.ImageManager;
+import org.eclipse.swt.widgets.Listener;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class ImportTasksViaSimpleList extends Action {
+
+ private final TaskableStateMachineArtifact taskableArt;
+ private final Listener listener;
+
+ public ImportTasksViaSimpleList(TaskableStateMachineArtifact taskableArt, Listener listener) {
+ this.taskableArt = taskableArt;
+ this.listener = listener;
+ setText("Import Tasks via simple list");
+ setImageDescriptor(ImageManager.getImageDescriptor(FrameworkImage.IMPORT));
+ }
+
+ @Override
+ public void run() {
+ try {
+ ImportTasksFromSimpleList blamOperation = new ImportTasksFromSimpleList();
+ blamOperation.setTaskableStateMachineArtifact(taskableArt);
+ BlamEditor.edit(blamOperation);
+ if (listener != null) {
+ listener.notify();
+ }
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
+ }
+ }
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/ImportTasksViaSpreadsheet.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/ImportTasksViaSpreadsheet.java
index c58a5cd1cd9..24c2862443a 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/ImportTasksViaSpreadsheet.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/ImportTasksViaSpreadsheet.java
@@ -1,52 +1,52 @@
-/*******************************************************************************
- * 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.actions;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.osee.ats.artifact.TaskableStateMachineArtifact;
-import org.eclipse.osee.ats.internal.AtsPlugin;
-import org.eclipse.osee.ats.operation.ImportTasksFromSpreadsheet;
-import org.eclipse.osee.framework.logging.OseeLevel;
-import org.eclipse.osee.framework.logging.OseeLog;
-import org.eclipse.osee.framework.ui.skynet.FrameworkImage;
-import org.eclipse.osee.framework.ui.skynet.blam.BlamEditor;
-import org.eclipse.osee.framework.ui.swt.ImageManager;
-import org.eclipse.swt.widgets.Listener;
-
-/**
- * @author Donald G. Dunne
- */
-public class ImportTasksViaSpreadsheet extends Action {
-
- private final TaskableStateMachineArtifact taskableArt;
- private final Listener listener;
-
- public ImportTasksViaSpreadsheet(TaskableStateMachineArtifact taskableArt, Listener listener) {
- this.taskableArt = taskableArt;
- this.listener = listener;
- setText("Import Tasks via spreadsheet");
- setImageDescriptor(ImageManager.getImageDescriptor(FrameworkImage.IMPORT));
- }
-
- @Override
- public void run() {
- try {
- ImportTasksFromSpreadsheet blamOperation = new ImportTasksFromSpreadsheet();
- blamOperation.setTaskableStateMachineArtifact(taskableArt);
- BlamEditor.edit(blamOperation);
- if (listener != null) {
- listener.notify();
- }
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
- }
- }
-}
+/*******************************************************************************
+ * 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.actions;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.osee.ats.artifact.TaskableStateMachineArtifact;
+import org.eclipse.osee.ats.internal.AtsPlugin;
+import org.eclipse.osee.ats.operation.ImportTasksFromSpreadsheet;
+import org.eclipse.osee.framework.logging.OseeLevel;
+import org.eclipse.osee.framework.logging.OseeLog;
+import org.eclipse.osee.framework.ui.skynet.FrameworkImage;
+import org.eclipse.osee.framework.ui.skynet.blam.BlamEditor;
+import org.eclipse.osee.framework.ui.swt.ImageManager;
+import org.eclipse.swt.widgets.Listener;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class ImportTasksViaSpreadsheet extends Action {
+
+ private final TaskableStateMachineArtifact taskableArt;
+ private final Listener listener;
+
+ public ImportTasksViaSpreadsheet(TaskableStateMachineArtifact taskableArt, Listener listener) {
+ this.taskableArt = taskableArt;
+ this.listener = listener;
+ setText("Import Tasks via spreadsheet");
+ setImageDescriptor(ImageManager.getImageDescriptor(FrameworkImage.IMPORT));
+ }
+
+ @Override
+ public void run() {
+ try {
+ ImportTasksFromSpreadsheet blamOperation = new ImportTasksFromSpreadsheet();
+ blamOperation.setTaskableStateMachineArtifact(taskableArt);
+ BlamEditor.edit(blamOperation);
+ if (listener != null) {
+ listener.notify();
+ }
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
+ }
+ }
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/NewGoal.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/NewGoal.java
index 4f8e006d33c..469cbbc9b81 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/NewGoal.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/NewGoal.java
@@ -1,52 +1,52 @@
-/*******************************************************************************
- * 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.actions;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.osee.ats.AtsImage;
-import org.eclipse.osee.ats.artifact.GoalArtifact;
-import org.eclipse.osee.ats.config.AtsBulkLoad;
-import org.eclipse.osee.ats.editor.SMAEditor;
-import org.eclipse.osee.ats.internal.AtsPlugin;
-import org.eclipse.osee.framework.logging.OseeLevel;
-import org.eclipse.osee.framework.logging.OseeLog;
-import org.eclipse.osee.framework.ui.skynet.widgets.dialog.EntryDialog;
-import org.eclipse.osee.framework.ui.swt.ImageManager;
-
-/**
- * @author Donald G. Dunne
- */
-public class NewGoal extends Action {
-
- public NewGoal() {
- super("Create New Goal");
- setImageDescriptor(ImageManager.getImageDescriptor(AtsImage.GOAL_NEW));
- setToolTipText("Create New Goal");
- }
-
- @Override
- public void run() {
- super.run();
- AtsBulkLoad.loadConfig(true);
- try {
- EntryDialog ed = new EntryDialog("New Goal", "Enter Title");
- if (ed.open() == 0) {
- String title = ed.getEntry();
- GoalArtifact goalArt = GoalArtifact.createGoal(title);
- goalArt.persist();
- SMAEditor.editArtifact(goalArt);
- }
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
- }
- }
-
+/*******************************************************************************
+ * 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.actions;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.osee.ats.AtsImage;
+import org.eclipse.osee.ats.artifact.GoalArtifact;
+import org.eclipse.osee.ats.config.AtsBulkLoad;
+import org.eclipse.osee.ats.editor.SMAEditor;
+import org.eclipse.osee.ats.internal.AtsPlugin;
+import org.eclipse.osee.framework.logging.OseeLevel;
+import org.eclipse.osee.framework.logging.OseeLog;
+import org.eclipse.osee.framework.ui.skynet.widgets.dialog.EntryDialog;
+import org.eclipse.osee.framework.ui.swt.ImageManager;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class NewGoal extends Action {
+
+ public NewGoal() {
+ super("Create New Goal");
+ setImageDescriptor(ImageManager.getImageDescriptor(AtsImage.GOAL_NEW));
+ setToolTipText("Create New Goal");
+ }
+
+ @Override
+ public void run() {
+ super.run();
+ AtsBulkLoad.loadConfig(true);
+ try {
+ EntryDialog ed = new EntryDialog("New Goal", "Enter Title");
+ if (ed.open() == 0) {
+ String title = ed.getEntry();
+ GoalArtifact goalArt = GoalArtifact.createGoal(title);
+ goalArt.persist();
+ SMAEditor.editArtifact(goalArt);
+ }
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
+ }
+ }
+
} \ No newline at end of file
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenInAtsWorkflowEditor.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenInAtsWorkflowEditor.java
index d7ada1bd8fb..a1527c018a3 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenInAtsWorkflowEditor.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenInAtsWorkflowEditor.java
@@ -1,70 +1,70 @@
-/*******************************************************************************
- * 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.actions;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.osee.ats.AtsOpenOption;
-import org.eclipse.osee.ats.internal.AtsPlugin;
-import org.eclipse.osee.ats.util.AtsUtil;
-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.ui.skynet.FrameworkImage;
-import org.eclipse.osee.framework.ui.swt.ImageManager;
-
-/**
- * @author Donald G. Dunne
- */
-public class OpenInAtsWorkflowEditor extends Action {
-
- private final ISelectedAtsArtifacts selectedAtsArtifacts;
-
- public OpenInAtsWorkflowEditor(String name, ISelectedAtsArtifacts selectedAtsArtifacts) {
- this.selectedAtsArtifacts = selectedAtsArtifacts;
- setText(name);
- }
-
- public OpenInAtsWorkflowEditor(ISelectedAtsArtifacts selectedAtsArtifacts) {
- this("Open in ATS Workflow Editor", selectedAtsArtifacts);
- }
-
- public void performOpen() {
- try {
- for (Artifact art : selectedAtsArtifacts.getSelectedSMAArtifacts()) {
- AtsUtil.openATSAction(art, AtsOpenOption.OpenAll);
- }
- } catch (OseeCoreException ex) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
- }
- }
-
- public void updateEnablement() {
- try {
- setEnabled(selectedAtsArtifacts.getSelectedSMAArtifacts().size() > 0);
- } catch (OseeCoreException ex) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
- setEnabled(false);
- }
- }
-
- @Override
- public void run() {
- performOpen();
- }
-
- @Override
- public ImageDescriptor getImageDescriptor() {
- return ImageManager.getImageDescriptor(FrameworkImage.WORKFLOW);
- }
-
-}
+/*******************************************************************************
+ * 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.actions;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.osee.ats.AtsOpenOption;
+import org.eclipse.osee.ats.internal.AtsPlugin;
+import org.eclipse.osee.ats.util.AtsUtil;
+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.ui.skynet.FrameworkImage;
+import org.eclipse.osee.framework.ui.swt.ImageManager;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class OpenInAtsWorkflowEditor extends Action {
+
+ private final ISelectedAtsArtifacts selectedAtsArtifacts;
+
+ public OpenInAtsWorkflowEditor(String name, ISelectedAtsArtifacts selectedAtsArtifacts) {
+ this.selectedAtsArtifacts = selectedAtsArtifacts;
+ setText(name);
+ }
+
+ public OpenInAtsWorkflowEditor(ISelectedAtsArtifacts selectedAtsArtifacts) {
+ this("Open in ATS Workflow Editor", selectedAtsArtifacts);
+ }
+
+ public void performOpen() {
+ try {
+ for (Artifact art : selectedAtsArtifacts.getSelectedSMAArtifacts()) {
+ AtsUtil.openATSAction(art, AtsOpenOption.OpenAll);
+ }
+ } catch (OseeCoreException ex) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
+ }
+ }
+
+ public void updateEnablement() {
+ try {
+ setEnabled(selectedAtsArtifacts.getSelectedSMAArtifacts().size() > 0);
+ } catch (OseeCoreException ex) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
+ setEnabled(false);
+ }
+ }
+
+ @Override
+ public void run() {
+ performOpen();
+ }
+
+ @Override
+ public ImageDescriptor getImageDescriptor() {
+ return ImageManager.getImageDescriptor(FrameworkImage.WORKFLOW);
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenInAtsWorldAction.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenInAtsWorldAction.java
index 0583798f23f..112c451b2f7 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenInAtsWorldAction.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenInAtsWorldAction.java
@@ -1,67 +1,67 @@
-/*******************************************************************************
- * 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.actions;
-
-import java.util.Arrays;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.osee.ats.AtsImage;
-import org.eclipse.osee.ats.artifact.ActionArtifact;
-import org.eclipse.osee.ats.artifact.StateMachineArtifact;
-import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact;
-import org.eclipse.osee.ats.internal.AtsPlugin;
-import org.eclipse.osee.ats.world.WorldEditor;
-import org.eclipse.osee.ats.world.WorldEditorSimpleProvider;
-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.ImageManager;
-
-/**
- * @author Donald G. Dunne
- */
-public class OpenInAtsWorldAction extends Action {
-
- private final StateMachineArtifact sma;
-
- public OpenInAtsWorldAction(StateMachineArtifact sma) {
- this.sma = sma;
- setText("Open in ATS World Editor");
- }
-
- public void performOpen() {
- try {
- if (sma.isTeamWorkflow()) {
- ActionArtifact actionArt = ((TeamWorkFlowArtifact) sma).getParentActionArtifact();
- WorldEditor.open(new WorldEditorSimpleProvider("Action " + actionArt.getHumanReadableId(),
- Arrays.asList(actionArt)));
- return;
- } else {
- WorldEditor.open(new WorldEditorSimpleProvider(sma.getArtifactTypeName() + ": " + sma.getHumanReadableId(),
- Arrays.asList(sma)));
- return;
- }
- } catch (OseeCoreException ex) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
- }
- }
-
- @Override
- public void run() {
- performOpen();
- }
-
- @Override
- public ImageDescriptor getImageDescriptor() {
- return ImageManager.getImageDescriptor(AtsImage.GLOBE);
- }
-
-}
+/*******************************************************************************
+ * 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.actions;
+
+import java.util.Arrays;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.osee.ats.AtsImage;
+import org.eclipse.osee.ats.artifact.ActionArtifact;
+import org.eclipse.osee.ats.artifact.StateMachineArtifact;
+import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact;
+import org.eclipse.osee.ats.internal.AtsPlugin;
+import org.eclipse.osee.ats.world.WorldEditor;
+import org.eclipse.osee.ats.world.WorldEditorSimpleProvider;
+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.ImageManager;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class OpenInAtsWorldAction extends Action {
+
+ private final StateMachineArtifact sma;
+
+ public OpenInAtsWorldAction(StateMachineArtifact sma) {
+ this.sma = sma;
+ setText("Open in ATS World Editor");
+ }
+
+ public void performOpen() {
+ try {
+ if (sma.isTeamWorkflow()) {
+ ActionArtifact actionArt = ((TeamWorkFlowArtifact) sma).getParentActionArtifact();
+ WorldEditor.open(new WorldEditorSimpleProvider("Action " + actionArt.getHumanReadableId(),
+ Arrays.asList(actionArt)));
+ return;
+ } else {
+ WorldEditor.open(new WorldEditorSimpleProvider(sma.getArtifactTypeName() + ": " + sma.getHumanReadableId(),
+ Arrays.asList(sma)));
+ return;
+ }
+ } catch (OseeCoreException ex) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
+ }
+ }
+
+ @Override
+ public void run() {
+ performOpen();
+ }
+
+ @Override
+ public ImageDescriptor getImageDescriptor() {
+ return ImageManager.getImageDescriptor(AtsImage.GLOBE);
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenNewAtsTaskEditorAction.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenNewAtsTaskEditorAction.java
index 7d3c084b66a..b1278fe6305 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenNewAtsTaskEditorAction.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenNewAtsTaskEditorAction.java
@@ -1,56 +1,56 @@
-/*******************************************************************************
- * 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.actions;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.nebula.widgets.xviewer.customize.CustomizeData;
-import org.eclipse.osee.ats.AtsImage;
-import org.eclipse.osee.ats.internal.AtsPlugin;
-import org.eclipse.osee.ats.task.ITaskEditorProvider;
-import org.eclipse.osee.ats.task.TaskEditor;
-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.plugin.xnavigate.XNavigateComposite.TableLoadOption;
-import org.eclipse.osee.framework.ui.swt.ImageManager;
-
-/**
- * @author Donald G. Dunne
- */
-public class OpenNewAtsTaskEditorAction extends Action {
-
- private final IOpenNewAtsTaskEditorHandler openNewAtsTaskEditorHandler;
-
- public OpenNewAtsTaskEditorAction(IOpenNewAtsTaskEditorHandler openNewAtsTaskEditorHandler) {
- this.openNewAtsTaskEditorHandler = openNewAtsTaskEditorHandler;
- setImageDescriptor(ImageManager.getImageDescriptor(AtsImage.TASK));
- setToolTipText("Open New ATS Task Editor");
- }
-
- public interface IOpenNewAtsTaskEditorHandler {
- public ITaskEditorProvider getTaskEditorProviderCopy() throws OseeCoreException;
-
- public CustomizeData getCustomizeDataCopy() throws OseeCoreException;
- }
-
- @Override
- public void run() {
- try {
- ITaskEditorProvider provider = openNewAtsTaskEditorHandler.getTaskEditorProviderCopy();
- provider.setCustomizeData(openNewAtsTaskEditorHandler.getCustomizeDataCopy());
- provider.setTableLoadOptions(TableLoadOption.NoUI);
- TaskEditor.open(provider);
- } catch (OseeCoreException ex) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
- }
- }
-
-}
+/*******************************************************************************
+ * 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.actions;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.nebula.widgets.xviewer.customize.CustomizeData;
+import org.eclipse.osee.ats.AtsImage;
+import org.eclipse.osee.ats.internal.AtsPlugin;
+import org.eclipse.osee.ats.task.ITaskEditorProvider;
+import org.eclipse.osee.ats.task.TaskEditor;
+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.plugin.xnavigate.XNavigateComposite.TableLoadOption;
+import org.eclipse.osee.framework.ui.swt.ImageManager;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class OpenNewAtsTaskEditorAction extends Action {
+
+ private final IOpenNewAtsTaskEditorHandler openNewAtsTaskEditorHandler;
+
+ public OpenNewAtsTaskEditorAction(IOpenNewAtsTaskEditorHandler openNewAtsTaskEditorHandler) {
+ this.openNewAtsTaskEditorHandler = openNewAtsTaskEditorHandler;
+ setImageDescriptor(ImageManager.getImageDescriptor(AtsImage.TASK));
+ setToolTipText("Open New ATS Task Editor");
+ }
+
+ public interface IOpenNewAtsTaskEditorHandler {
+ public ITaskEditorProvider getTaskEditorProviderCopy() throws OseeCoreException;
+
+ public CustomizeData getCustomizeDataCopy() throws OseeCoreException;
+ }
+
+ @Override
+ public void run() {
+ try {
+ ITaskEditorProvider provider = openNewAtsTaskEditorHandler.getTaskEditorProviderCopy();
+ provider.setCustomizeData(openNewAtsTaskEditorHandler.getCustomizeDataCopy());
+ provider.setTableLoadOptions(TableLoadOption.NoUI);
+ TaskEditor.open(provider);
+ } catch (OseeCoreException ex) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
+ }
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenNewAtsTaskEditorSelected.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenNewAtsTaskEditorSelected.java
index a734518306a..a760f912ac6 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenNewAtsTaskEditorSelected.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenNewAtsTaskEditorSelected.java
@@ -1,62 +1,62 @@
-/*******************************************************************************
- * 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.actions;
-
-import java.util.ArrayList;
-import org.eclipse.jface.action.Action;
-import org.eclipse.nebula.widgets.xviewer.customize.CustomizeData;
-import org.eclipse.osee.ats.AtsImage;
-import org.eclipse.osee.ats.internal.AtsPlugin;
-import org.eclipse.osee.ats.task.TaskEditor;
-import org.eclipse.osee.ats.task.TaskEditorSimpleProvider;
-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.ui.plugin.util.AWorkbench;
-import org.eclipse.osee.framework.ui.swt.ImageManager;
-
-/**
- * @author Donald G. Dunne
- */
-public class OpenNewAtsTaskEditorSelected extends Action {
-
- private final IOpenNewAtsTaskEditorSelectedHandler openNewAtsTaskEditorSelectedHandler;
-
- public OpenNewAtsTaskEditorSelected(IOpenNewAtsTaskEditorSelectedHandler openNewAtsTaskEditorSelectedHandler) {
- this.openNewAtsTaskEditorSelectedHandler = openNewAtsTaskEditorSelectedHandler;
- setImageDescriptor(ImageManager.getImageDescriptor(AtsImage.TASK_SELECTED));
- setToolTipText("Open Selected in ATS Task Editor");
- }
-
- public interface IOpenNewAtsTaskEditorSelectedHandler {
- public CustomizeData getCustomizeDataCopy() throws OseeCoreException;
-
- public ArrayList<? extends Artifact> getSelectedArtifacts() throws OseeCoreException;
-
- }
-
- @Override
- public void run() {
- try {
- if (openNewAtsTaskEditorSelectedHandler.getSelectedArtifacts().isEmpty()) {
- AWorkbench.popup("ERROR", "Select items to open");
- return;
- }
- TaskEditor.open(new TaskEditorSimpleProvider("Tasks",
- openNewAtsTaskEditorSelectedHandler.getSelectedArtifacts(),
- openNewAtsTaskEditorSelectedHandler.getCustomizeDataCopy()));
- } catch (OseeCoreException ex) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
- }
- }
-
-}
+/*******************************************************************************
+ * 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.actions;
+
+import java.util.ArrayList;
+import org.eclipse.jface.action.Action;
+import org.eclipse.nebula.widgets.xviewer.customize.CustomizeData;
+import org.eclipse.osee.ats.AtsImage;
+import org.eclipse.osee.ats.internal.AtsPlugin;
+import org.eclipse.osee.ats.task.TaskEditor;
+import org.eclipse.osee.ats.task.TaskEditorSimpleProvider;
+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.ui.plugin.util.AWorkbench;
+import org.eclipse.osee.framework.ui.swt.ImageManager;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class OpenNewAtsTaskEditorSelected extends Action {
+
+ private final IOpenNewAtsTaskEditorSelectedHandler openNewAtsTaskEditorSelectedHandler;
+
+ public OpenNewAtsTaskEditorSelected(IOpenNewAtsTaskEditorSelectedHandler openNewAtsTaskEditorSelectedHandler) {
+ this.openNewAtsTaskEditorSelectedHandler = openNewAtsTaskEditorSelectedHandler;
+ setImageDescriptor(ImageManager.getImageDescriptor(AtsImage.TASK_SELECTED));
+ setToolTipText("Open Selected in ATS Task Editor");
+ }
+
+ public interface IOpenNewAtsTaskEditorSelectedHandler {
+ public CustomizeData getCustomizeDataCopy() throws OseeCoreException;
+
+ public ArrayList<? extends Artifact> getSelectedArtifacts() throws OseeCoreException;
+
+ }
+
+ @Override
+ public void run() {
+ try {
+ if (openNewAtsTaskEditorSelectedHandler.getSelectedArtifacts().isEmpty()) {
+ AWorkbench.popup("ERROR", "Select items to open");
+ return;
+ }
+ TaskEditor.open(new TaskEditorSimpleProvider("Tasks",
+ openNewAtsTaskEditorSelectedHandler.getSelectedArtifacts(),
+ openNewAtsTaskEditorSelectedHandler.getCustomizeDataCopy()));
+ } catch (OseeCoreException ex) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
+ }
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenNewAtsWorldEditorAction.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenNewAtsWorldEditorAction.java
index 3c5ddc99208..a396ed99e64 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenNewAtsWorldEditorAction.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenNewAtsWorldEditorAction.java
@@ -1,56 +1,56 @@
-/*******************************************************************************
- * 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.actions;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.nebula.widgets.xviewer.customize.CustomizeData;
-import org.eclipse.osee.ats.AtsImage;
-import org.eclipse.osee.ats.internal.AtsPlugin;
-import org.eclipse.osee.ats.world.IWorldEditorProvider;
-import org.eclipse.osee.ats.world.WorldEditor;
-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.plugin.xnavigate.XNavigateComposite.TableLoadOption;
-import org.eclipse.osee.framework.ui.swt.ImageManager;
-
-/**
- * @author Donald G. Dunne
- */
-public class OpenNewAtsWorldEditorAction extends Action {
-
- private final IOpenNewAtsWorldEditorHandler openNewAtsWorldEditorHandler;
-
- public OpenNewAtsWorldEditorAction(IOpenNewAtsWorldEditorHandler openNewAtsWorldEditorHandler) {
- this.openNewAtsWorldEditorHandler = openNewAtsWorldEditorHandler;
- setImageDescriptor(ImageManager.getImageDescriptor(AtsImage.GLOBE));
- setToolTipText("Open in ATS World Editor");
- }
-
- public interface IOpenNewAtsWorldEditorHandler {
- public IWorldEditorProvider getWorldEditorProviderCopy() throws OseeCoreException;
-
- public CustomizeData getCustomizeDataCopy() throws OseeCoreException;
- }
-
- @Override
- public void run() {
- try {
- IWorldEditorProvider provider = openNewAtsWorldEditorHandler.getWorldEditorProviderCopy();
- provider.setCustomizeData(openNewAtsWorldEditorHandler.getCustomizeDataCopy());
- provider.setTableLoadOptions(TableLoadOption.NoUI);
- WorldEditor.open(provider);
- } catch (OseeCoreException ex) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
- }
- }
-
-}
+/*******************************************************************************
+ * 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.actions;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.nebula.widgets.xviewer.customize.CustomizeData;
+import org.eclipse.osee.ats.AtsImage;
+import org.eclipse.osee.ats.internal.AtsPlugin;
+import org.eclipse.osee.ats.world.IWorldEditorProvider;
+import org.eclipse.osee.ats.world.WorldEditor;
+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.plugin.xnavigate.XNavigateComposite.TableLoadOption;
+import org.eclipse.osee.framework.ui.swt.ImageManager;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class OpenNewAtsWorldEditorAction extends Action {
+
+ private final IOpenNewAtsWorldEditorHandler openNewAtsWorldEditorHandler;
+
+ public OpenNewAtsWorldEditorAction(IOpenNewAtsWorldEditorHandler openNewAtsWorldEditorHandler) {
+ this.openNewAtsWorldEditorHandler = openNewAtsWorldEditorHandler;
+ setImageDescriptor(ImageManager.getImageDescriptor(AtsImage.GLOBE));
+ setToolTipText("Open in ATS World Editor");
+ }
+
+ public interface IOpenNewAtsWorldEditorHandler {
+ public IWorldEditorProvider getWorldEditorProviderCopy() throws OseeCoreException;
+
+ public CustomizeData getCustomizeDataCopy() throws OseeCoreException;
+ }
+
+ @Override
+ public void run() {
+ try {
+ IWorldEditorProvider provider = openNewAtsWorldEditorHandler.getWorldEditorProviderCopy();
+ provider.setCustomizeData(openNewAtsWorldEditorHandler.getCustomizeDataCopy());
+ provider.setTableLoadOptions(TableLoadOption.NoUI);
+ WorldEditor.open(provider);
+ } catch (OseeCoreException ex) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
+ }
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenNewAtsWorldEditorSelectedAction.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenNewAtsWorldEditorSelectedAction.java
index af3178133cc..3d157c9f258 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenNewAtsWorldEditorSelectedAction.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenNewAtsWorldEditorSelectedAction.java
@@ -1,63 +1,63 @@
-/*******************************************************************************
- * 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.actions;
-
-import java.util.ArrayList;
-import org.eclipse.jface.action.Action;
-import org.eclipse.nebula.widgets.xviewer.customize.CustomizeData;
-import org.eclipse.osee.ats.AtsImage;
-import org.eclipse.osee.ats.internal.AtsPlugin;
-import org.eclipse.osee.ats.world.WorldEditor;
-import org.eclipse.osee.ats.world.WorldEditorSimpleProvider;
-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.ui.plugin.util.AWorkbench;
-import org.eclipse.osee.framework.ui.plugin.xnavigate.XNavigateComposite.TableLoadOption;
-import org.eclipse.osee.framework.ui.swt.ImageManager;
-
-/**
- * @author Donald G. Dunne
- */
-public class OpenNewAtsWorldEditorSelectedAction extends Action {
-
- private final IOpenNewAtsWorldEditorSelectedHandler openNewAtsWorldEditorSelectedHandler;
-
- public OpenNewAtsWorldEditorSelectedAction(IOpenNewAtsWorldEditorSelectedHandler openNewAtsWorldEditorSelectedHandler) {
- this.openNewAtsWorldEditorSelectedHandler = openNewAtsWorldEditorSelectedHandler;
- setImageDescriptor(ImageManager.getImageDescriptor(AtsImage.GLOBE_SELECT));
- setToolTipText("Open Selected in ATS World Editor");
- }
-
- public interface IOpenNewAtsWorldEditorSelectedHandler {
- public CustomizeData getCustomizeDataCopy() throws OseeCoreException;
-
- public ArrayList<Artifact> getSelectedArtifacts() throws OseeCoreException;
-
- }
-
- @Override
- public void run() {
- try {
- if (openNewAtsWorldEditorSelectedHandler.getSelectedArtifacts().isEmpty()) {
- AWorkbench.popup("ERROR", "Select items to open");
- return;
- }
- WorldEditor.open(new WorldEditorSimpleProvider("ATS World",
- openNewAtsWorldEditorSelectedHandler.getSelectedArtifacts(),
- openNewAtsWorldEditorSelectedHandler.getCustomizeDataCopy(), (TableLoadOption[]) null));
- } catch (OseeCoreException ex) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
- }
- }
-
-}
+/*******************************************************************************
+ * 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.actions;
+
+import java.util.ArrayList;
+import org.eclipse.jface.action.Action;
+import org.eclipse.nebula.widgets.xviewer.customize.CustomizeData;
+import org.eclipse.osee.ats.AtsImage;
+import org.eclipse.osee.ats.internal.AtsPlugin;
+import org.eclipse.osee.ats.world.WorldEditor;
+import org.eclipse.osee.ats.world.WorldEditorSimpleProvider;
+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.ui.plugin.util.AWorkbench;
+import org.eclipse.osee.framework.ui.plugin.xnavigate.XNavigateComposite.TableLoadOption;
+import org.eclipse.osee.framework.ui.swt.ImageManager;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class OpenNewAtsWorldEditorSelectedAction extends Action {
+
+ private final IOpenNewAtsWorldEditorSelectedHandler openNewAtsWorldEditorSelectedHandler;
+
+ public OpenNewAtsWorldEditorSelectedAction(IOpenNewAtsWorldEditorSelectedHandler openNewAtsWorldEditorSelectedHandler) {
+ this.openNewAtsWorldEditorSelectedHandler = openNewAtsWorldEditorSelectedHandler;
+ setImageDescriptor(ImageManager.getImageDescriptor(AtsImage.GLOBE_SELECT));
+ setToolTipText("Open Selected in ATS World Editor");
+ }
+
+ public interface IOpenNewAtsWorldEditorSelectedHandler {
+ public CustomizeData getCustomizeDataCopy() throws OseeCoreException;
+
+ public ArrayList<Artifact> getSelectedArtifacts() throws OseeCoreException;
+
+ }
+
+ @Override
+ public void run() {
+ try {
+ if (openNewAtsWorldEditorSelectedHandler.getSelectedArtifacts().isEmpty()) {
+ AWorkbench.popup("ERROR", "Select items to open");
+ return;
+ }
+ WorldEditor.open(new WorldEditorSimpleProvider("ATS World",
+ openNewAtsWorldEditorSelectedHandler.getSelectedArtifacts(),
+ openNewAtsWorldEditorSelectedHandler.getCustomizeDataCopy(), (TableLoadOption[]) null));
+ } catch (OseeCoreException ex) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
+ }
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/ShowMergeManagerAction.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/ShowMergeManagerAction.java
index 6de1eb025d2..517c16efe0b 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/ShowMergeManagerAction.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/ShowMergeManagerAction.java
@@ -1,53 +1,53 @@
-/*******************************************************************************
- * 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.actions;
-
-import java.util.logging.Level;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact;
-import org.eclipse.osee.ats.internal.AtsPlugin;
-import org.eclipse.osee.framework.core.exception.OseeCoreException;
-import org.eclipse.osee.framework.logging.OseeLog;
-import org.eclipse.osee.framework.ui.skynet.FrameworkImage;
-import org.eclipse.osee.framework.ui.swt.ImageManager;
-
-/**
- * @author Donald G. Dunne
- */
-public class ShowMergeManagerAction extends Action {
-
- private final TeamWorkFlowArtifact teamArt;
-
- // Since this service is only going to be added for the Implement state, Location.AllState will
- // work
- public ShowMergeManagerAction(TeamWorkFlowArtifact teamArt) {
- this.teamArt = teamArt;
- setText("Show Merge Manager");
- setToolTipText(getText());
- try {
- setEnabled(teamArt.getBranchMgr().isWorkingBranchInWork() || teamArt.getBranchMgr().isCommittedBranchExists());
- } catch (OseeCoreException ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
- }
-
- @Override
- public void run() {
- teamArt.getBranchMgr().showMergeManager();
- }
-
- @Override
- public ImageDescriptor getImageDescriptor() {
- return ImageManager.getImageDescriptor(FrameworkImage.OUTGOING_MERGED);
- }
-
-}
+/*******************************************************************************
+ * 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.actions;
+
+import java.util.logging.Level;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact;
+import org.eclipse.osee.ats.internal.AtsPlugin;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.logging.OseeLog;
+import org.eclipse.osee.framework.ui.skynet.FrameworkImage;
+import org.eclipse.osee.framework.ui.swt.ImageManager;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class ShowMergeManagerAction extends Action {
+
+ private final TeamWorkFlowArtifact teamArt;
+
+ // Since this service is only going to be added for the Implement state, Location.AllState will
+ // work
+ public ShowMergeManagerAction(TeamWorkFlowArtifact teamArt) {
+ this.teamArt = teamArt;
+ setText("Show Merge Manager");
+ setToolTipText(getText());
+ try {
+ setEnabled(teamArt.getBranchMgr().isWorkingBranchInWork() || teamArt.getBranchMgr().isCommittedBranchExists());
+ } catch (OseeCoreException ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ }
+ }
+
+ @Override
+ public void run() {
+ teamArt.getBranchMgr().showMergeManager();
+ }
+
+ @Override
+ public ImageDescriptor getImageDescriptor() {
+ return ImageManager.getImageDescriptor(FrameworkImage.OUTGOING_MERGED);
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/TaskAddAction.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/TaskAddAction.java
index e2057e21ee5..de3cbadba5e 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/TaskAddAction.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/TaskAddAction.java
@@ -1,41 +1,41 @@
-/*******************************************************************************
- * 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.actions;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.osee.ats.AtsImage;
-import org.eclipse.osee.framework.ui.swt.ImageManager;
-
-/**
- * @author Donald G. Dunne
- */
-public class TaskAddAction extends Action {
-
- private final ITaskAddActionHandler taskAddActionHandler;
-
- public TaskAddAction(ITaskAddActionHandler taskAddActionHandler) {
- super("Create New Task");
- this.taskAddActionHandler = taskAddActionHandler;
- setImageDescriptor(ImageManager.getImageDescriptor(AtsImage.NEW_TASK));
- setToolTipText(getText());
- }
-
- public static interface ITaskAddActionHandler {
- public void taskAddActionHandler();
- }
-
- @Override
- public void run() {
- super.run();
- taskAddActionHandler.taskAddActionHandler();
- }
-
+/*******************************************************************************
+ * 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.actions;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.osee.ats.AtsImage;
+import org.eclipse.osee.framework.ui.swt.ImageManager;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class TaskAddAction extends Action {
+
+ private final ITaskAddActionHandler taskAddActionHandler;
+
+ public TaskAddAction(ITaskAddActionHandler taskAddActionHandler) {
+ super("Create New Task");
+ this.taskAddActionHandler = taskAddActionHandler;
+ setImageDescriptor(ImageManager.getImageDescriptor(AtsImage.NEW_TASK));
+ setToolTipText(getText());
+ }
+
+ public static interface ITaskAddActionHandler {
+ public void taskAddActionHandler();
+ }
+
+ @Override
+ public void run() {
+ super.run();
+ taskAddActionHandler.taskAddActionHandler();
+ }
+
} \ No newline at end of file
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/TaskDeleteAction.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/TaskDeleteAction.java
index 7f705190235..336bb6ec143 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/TaskDeleteAction.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/TaskDeleteAction.java
@@ -1,41 +1,41 @@
-/*******************************************************************************
- * 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.actions;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.osee.framework.ui.skynet.FrameworkImage;
-import org.eclipse.osee.framework.ui.swt.ImageManager;
-
-/**
- * @author Donald G. Dunne
- */
-public class TaskDeleteAction extends Action {
-
- private final ITaskDeleteActionHandler taskDeleteActionHandler;
-
- public TaskDeleteAction(ITaskDeleteActionHandler taskDeleteActionHandler) {
- super("Delete Task");
- this.taskDeleteActionHandler = taskDeleteActionHandler;
- setImageDescriptor(ImageManager.getImageDescriptor(FrameworkImage.X_RED));
- setToolTipText(getText());
- }
-
- public static interface ITaskDeleteActionHandler {
- public void taskDeleteActionHandler();
- }
-
- @Override
- public void run() {
- super.run();
- taskDeleteActionHandler.taskDeleteActionHandler();
- }
-
+/*******************************************************************************
+ * 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.actions;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.osee.framework.ui.skynet.FrameworkImage;
+import org.eclipse.osee.framework.ui.swt.ImageManager;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class TaskDeleteAction extends Action {
+
+ private final ITaskDeleteActionHandler taskDeleteActionHandler;
+
+ public TaskDeleteAction(ITaskDeleteActionHandler taskDeleteActionHandler) {
+ super("Delete Task");
+ this.taskDeleteActionHandler = taskDeleteActionHandler;
+ setImageDescriptor(ImageManager.getImageDescriptor(FrameworkImage.X_RED));
+ setToolTipText(getText());
+ }
+
+ public static interface ITaskDeleteActionHandler {
+ public void taskDeleteActionHandler();
+ }
+
+ @Override
+ public void run() {
+ super.run();
+ taskDeleteActionHandler.taskDeleteActionHandler();
+ }
+
} \ No newline at end of file
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/ArtifactSelectWizardPage.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/ArtifactSelectWizardPage.java
index f2e6120417b..e9e3e69f336 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/ArtifactSelectWizardPage.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/ArtifactSelectWizardPage.java
@@ -1,223 +1,223 @@
-/*******************************************************************************
- * 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.actions.wizard;
-
-import java.util.logging.Level;
-import org.eclipse.jface.viewers.ArrayContentProvider;
-import org.eclipse.jface.viewers.ILabelProvider;
-import org.eclipse.jface.viewers.ILabelProviderListener;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.ListViewer;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerSorter;
-import org.eclipse.jface.wizard.WizardPage;
-import org.eclipse.osee.ats.internal.AtsPlugin;
-import org.eclipse.osee.ats.util.AtsUtil;
-import org.eclipse.osee.framework.core.model.type.ArtifactType;
-import org.eclipse.osee.framework.logging.OseeLog;
-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.search.ArtifactQuery;
-import org.eclipse.osee.framework.ui.swt.Displays;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Listener;
-
-public class ArtifactSelectWizardPage extends WizardPage {
-
- private ListViewer artTypeList;
- private ListViewer artList;
- private Artifact selectedArtifact;
- private boolean showArtData = false;
-
- public ArtifactSelectWizardPage() {
- super("Select an Artifact");
- }
-
- @Override
- public void createControl(Composite parent) {
- setTitle("Select an Artifact");
-
- Composite composite = new Composite(parent, SWT.NONE);
- GridLayout gl = new GridLayout();
- gl.numColumns = 2;
- composite.setLayout(gl);
- GridData gd = new GridData(GridData.FILL, GridData.FILL, true, true);
- composite.setLayoutData(gd);
-
- Composite leftComp = new Composite(composite, SWT.NONE);
-
- leftComp.setLayout(new GridLayout());
- gd = new GridData(GridData.FILL, GridData.FILL, true, true);
- leftComp.setLayoutData(gd);
-
- new Label(leftComp, SWT.NONE).setText("Artifact Type");
-
- try {
- artTypeList = new ListViewer(leftComp, SWT.BORDER | SWT.SINGLE | SWT.V_SCROLL | SWT.H_SCROLL);
- artTypeList.setContentProvider(new ArrayContentProvider());
- artTypeList.setLabelProvider(new ArtTypeLabelProvider());
-
- gd = new GridData(GridData.FILL, GridData.FILL, true, true);
- gd.heightHint = 300;
- gd.widthHint = 200;
- artTypeList.getControl().setLayoutData(gd);
- artTypeList.setInput(ArtifactTypeManager.getValidArtifactTypes(AtsUtil.getAtsBranch()));
- artTypeList.addSelectionChangedListener(new ISelectionChangedListener() {
- @Override
- public void selectionChanged(SelectionChangedEvent event) {
- IStructuredSelection selection = (IStructuredSelection) event.getSelection();
- ArtifactType desc = (ArtifactType) selection.getFirstElement();
- try {
- artList.setInput(ArtifactQuery.getArtifactListFromType(desc, AtsUtil.getAtsBranch()));
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
- }
- });
- artTypeList.setSorter(new ViewerSorter() {
- @SuppressWarnings("unchecked")
- @Override
- public int compare(Viewer viewer, Object e1, Object e2) {
- return getComparator().compare(((ArtifactType) e1).getName(), ((ArtifactType) e2).getName());
- }
- });
-
- Composite rightComp = new Composite(composite, SWT.NONE);
-
- rightComp.setLayout(new GridLayout());
- gd = new GridData(GridData.FILL, GridData.FILL, true, true);
- rightComp.setLayoutData(gd);
-
- Label lab = new Label(rightComp, SWT.NONE);
- lab.setText("Artifact (click here for artifact data)");
- lab.setForeground(Displays.getSystemColor(SWT.COLOR_BLUE));
- lab.addListener(SWT.MouseUp, new Listener() {
- @Override
- public void handleEvent(Event event) {
- showArtData = !showArtData;
- artList.refresh();
- }
- });
-
- artList = new ListViewer(rightComp, SWT.BORDER | SWT.SINGLE | SWT.V_SCROLL | SWT.H_SCROLL);
- artList.setContentProvider(new ArrayContentProvider());
- artList.setLabelProvider(new ArtifactDescriptiveLabelProvider());
-
- artList.setSorter(new ViewerSorter() {
- @SuppressWarnings("unchecked")
- @Override
- public int compare(Viewer viewer, Object e1, Object e2) {
- return getComparator().compare(((Artifact) e1).getName(), ((Artifact) e2).getName());
- }
- });
- gd = new GridData(GridData.FILL, GridData.FILL, true, true);
- gd.heightHint = 300;
- gd.widthHint = 200;
- artList.getControl().setLayoutData(gd);
- artList.addSelectionChangedListener(new ISelectionChangedListener() {
- @Override
- public void selectionChanged(SelectionChangedEvent event) {
- IStructuredSelection selection = (IStructuredSelection) event.getSelection();
- selectedArtifact = (Artifact) selection.getFirstElement();
- }
- });
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
-
- setControl(composite);
- }
-
- public Artifact getSelectedArtifact() {
- return selectedArtifact;
- }
-
- public class ArtifactDescriptiveLabelProvider implements ILabelProvider {
-
- @Override
- public Image getImage(Object arg0) {
- return null;
- }
-
- @Override
- public String getText(Object arg0) {
- Artifact art = (Artifact) arg0;
- if (showArtData) {
- return String.format("%s - (%s %s %s)", art.getName(), art.getArtId(), art.getHumanReadableId(),
- art.getGuid());
- } else {
- return art.getName();
- }
- }
-
- @Override
- public boolean isLabelProperty(Object arg0, String arg1) {
- return false;
- }
-
- @Override
- public void removeListener(ILabelProviderListener arg0) {
- // do nothing
- }
-
- @Override
- public void addListener(ILabelProviderListener listener) {
- // do nothing
- }
-
- @Override
- public void dispose() {
- // do nothing
- }
- }
-
- public static class ArtTypeLabelProvider implements ILabelProvider {
-
- @Override
- public Image getImage(Object arg0) {
- return null;
- }
-
- @Override
- public String getText(Object arg0) {
- return ((ArtifactType) arg0).getName();
- }
-
- @Override
- public void addListener(ILabelProviderListener arg0) {
- // do nothing
- }
-
- @Override
- public void dispose() {
- // do nothing
- }
-
- @Override
- public boolean isLabelProperty(Object arg0, String arg1) {
- return false;
- }
-
- @Override
- public void removeListener(ILabelProviderListener arg0) {
- // do nothing
- }
- }
-
-}
+/*******************************************************************************
+ * 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.actions.wizard;
+
+import java.util.logging.Level;
+import org.eclipse.jface.viewers.ArrayContentProvider;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.ILabelProviderListener;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.ListViewer;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerSorter;
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.osee.ats.internal.AtsPlugin;
+import org.eclipse.osee.ats.util.AtsUtil;
+import org.eclipse.osee.framework.core.model.type.ArtifactType;
+import org.eclipse.osee.framework.logging.OseeLog;
+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.search.ArtifactQuery;
+import org.eclipse.osee.framework.ui.swt.Displays;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Listener;
+
+public class ArtifactSelectWizardPage extends WizardPage {
+
+ private ListViewer artTypeList;
+ private ListViewer artList;
+ private Artifact selectedArtifact;
+ private boolean showArtData = false;
+
+ public ArtifactSelectWizardPage() {
+ super("Select an Artifact");
+ }
+
+ @Override
+ public void createControl(Composite parent) {
+ setTitle("Select an Artifact");
+
+ Composite composite = new Composite(parent, SWT.NONE);
+ GridLayout gl = new GridLayout();
+ gl.numColumns = 2;
+ composite.setLayout(gl);
+ GridData gd = new GridData(GridData.FILL, GridData.FILL, true, true);
+ composite.setLayoutData(gd);
+
+ Composite leftComp = new Composite(composite, SWT.NONE);
+
+ leftComp.setLayout(new GridLayout());
+ gd = new GridData(GridData.FILL, GridData.FILL, true, true);
+ leftComp.setLayoutData(gd);
+
+ new Label(leftComp, SWT.NONE).setText("Artifact Type");
+
+ try {
+ artTypeList = new ListViewer(leftComp, SWT.BORDER | SWT.SINGLE | SWT.V_SCROLL | SWT.H_SCROLL);
+ artTypeList.setContentProvider(new ArrayContentProvider());
+ artTypeList.setLabelProvider(new ArtTypeLabelProvider());
+
+ gd = new GridData(GridData.FILL, GridData.FILL, true, true);
+ gd.heightHint = 300;
+ gd.widthHint = 200;
+ artTypeList.getControl().setLayoutData(gd);
+ artTypeList.setInput(ArtifactTypeManager.getValidArtifactTypes(AtsUtil.getAtsBranch()));
+ artTypeList.addSelectionChangedListener(new ISelectionChangedListener() {
+ @Override
+ public void selectionChanged(SelectionChangedEvent event) {
+ IStructuredSelection selection = (IStructuredSelection) event.getSelection();
+ ArtifactType desc = (ArtifactType) selection.getFirstElement();
+ try {
+ artList.setInput(ArtifactQuery.getArtifactListFromType(desc, AtsUtil.getAtsBranch()));
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ }
+ }
+ });
+ artTypeList.setSorter(new ViewerSorter() {
+ @SuppressWarnings("unchecked")
+ @Override
+ public int compare(Viewer viewer, Object e1, Object e2) {
+ return getComparator().compare(((ArtifactType) e1).getName(), ((ArtifactType) e2).getName());
+ }
+ });
+
+ Composite rightComp = new Composite(composite, SWT.NONE);
+
+ rightComp.setLayout(new GridLayout());
+ gd = new GridData(GridData.FILL, GridData.FILL, true, true);
+ rightComp.setLayoutData(gd);
+
+ Label lab = new Label(rightComp, SWT.NONE);
+ lab.setText("Artifact (click here for artifact data)");
+ lab.setForeground(Displays.getSystemColor(SWT.COLOR_BLUE));
+ lab.addListener(SWT.MouseUp, new Listener() {
+ @Override
+ public void handleEvent(Event event) {
+ showArtData = !showArtData;
+ artList.refresh();
+ }
+ });
+
+ artList = new ListViewer(rightComp, SWT.BORDER | SWT.SINGLE | SWT.V_SCROLL | SWT.H_SCROLL);
+ artList.setContentProvider(new ArrayContentProvider());
+ artList.setLabelProvider(new ArtifactDescriptiveLabelProvider());
+
+ artList.setSorter(new ViewerSorter() {
+ @SuppressWarnings("unchecked")
+ @Override
+ public int compare(Viewer viewer, Object e1, Object e2) {
+ return getComparator().compare(((Artifact) e1).getName(), ((Artifact) e2).getName());
+ }
+ });
+ gd = new GridData(GridData.FILL, GridData.FILL, true, true);
+ gd.heightHint = 300;
+ gd.widthHint = 200;
+ artList.getControl().setLayoutData(gd);
+ artList.addSelectionChangedListener(new ISelectionChangedListener() {
+ @Override
+ public void selectionChanged(SelectionChangedEvent event) {
+ IStructuredSelection selection = (IStructuredSelection) event.getSelection();
+ selectedArtifact = (Artifact) selection.getFirstElement();
+ }
+ });
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ }
+
+ setControl(composite);
+ }
+
+ public Artifact getSelectedArtifact() {
+ return selectedArtifact;
+ }
+
+ public class ArtifactDescriptiveLabelProvider implements ILabelProvider {
+
+ @Override
+ public Image getImage(Object arg0) {
+ return null;
+ }
+
+ @Override
+ public String getText(Object arg0) {
+ Artifact art = (Artifact) arg0;
+ if (showArtData) {
+ return String.format("%s - (%s %s %s)", art.getName(), art.getArtId(), art.getHumanReadableId(),
+ art.getGuid());
+ } else {
+ return art.getName();
+ }
+ }
+
+ @Override
+ public boolean isLabelProperty(Object arg0, String arg1) {
+ return false;
+ }
+
+ @Override
+ public void removeListener(ILabelProviderListener arg0) {
+ // do nothing
+ }
+
+ @Override
+ public void addListener(ILabelProviderListener listener) {
+ // do nothing
+ }
+
+ @Override
+ public void dispose() {
+ // do nothing
+ }
+ }
+
+ public static class ArtTypeLabelProvider implements ILabelProvider {
+
+ @Override
+ public Image getImage(Object arg0) {
+ return null;
+ }
+
+ @Override
+ public String getText(Object arg0) {
+ return ((ArtifactType) arg0).getName();
+ }
+
+ @Override
+ public void addListener(ILabelProviderListener arg0) {
+ // do nothing
+ }
+
+ @Override
+ public void dispose() {
+ // do nothing
+ }
+
+ @Override
+ public boolean isLabelProperty(Object arg0, String arg1) {
+ return false;
+ }
+
+ @Override
+ public void removeListener(ILabelProviderListener arg0) {
+ // do nothing
+ }
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/IAtsTeamWorkflow.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/IAtsTeamWorkflow.java
index bb5068472bf..f62ad66e9ee 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/IAtsTeamWorkflow.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/IAtsTeamWorkflow.java
@@ -48,7 +48,6 @@ public interface IAtsTeamWorkflow {
* Notification that a teamWorkflow is being duplicated. This allows the extension to do necessary changes to
* duplicated workflow.
*
- * @param teamArt
*/
public void teamWorkflowDuplicating(TeamWorkFlowArtifact teamArt, TeamWorkFlowArtifact dupTeamArt) throws OseeCoreException;
@@ -56,7 +55,6 @@ public interface IAtsTeamWorkflow {
* Notification that a teamWorkflow was created. This allows the extension to do necessary initial tasks after the
* team workflow artifact is created. All changes made to dupTeamArt will be persisted after this call.
*
- * @param teamArt
*/
public void teamWorkflowCreated(TeamWorkFlowArtifact teamArt);
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/IAtsWizardItem.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/IAtsWizardItem.java
index c52fbdaffbf..7939c2d1739 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/IAtsWizardItem.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/IAtsWizardItem.java
@@ -28,14 +28,11 @@ public interface IAtsWizardItem {
* determine what (if any) widgets should be added. eg. <XWidget displayName=\"Description\" height=\"80\"
* required=\"true\" xwidgetType=\"XText\" fill=\"Vertically\" \"/>");
*
- * @param aias
- * @param sb
* @throws Exception
*/
public void getWizardXWidgetExtensions(Collection<ActionableItemArtifact> aias, StringBuffer sb) throws Exception;
/**
- * @param aias
* @return true if widgets will be added based on selected aias
* @throws Exception
*/
@@ -45,7 +42,6 @@ public interface IAtsWizardItem {
* Determine if Action is valid to create based on wizard data entered. hasWizardXWidgetExtenstions will be called to
* determine if this method should be called.
*
- * @param wizard
* @return result of validation. if true, action will be created; if not, error will popup and action will not be
* created
*/
@@ -55,9 +51,6 @@ public interface IAtsWizardItem {
* Callback with created action upon completion and creation of the action and it's workflows.
* hasWizardXWidgetExtenstions will be called to determine if this method should be called.
*
- * @param actionArt
- * @param wizard
- * @param transaction
* @throws Exception
*/
public void wizardCompleted(ActionArtifact actionArt, NewActionWizard wizard, SkynetTransaction transaction) throws Exception;
@@ -68,7 +61,6 @@ public interface IAtsWizardItem {
* be performed during isActionValidToCreate(). hasWizardXWidgetExtenstions will be called to determine if this
* method should be called.
*
- * @param wizard
* @return true if widget data entered is valid
*/
public Result isWizardXWidgetsComplete(NewActionWizard wizard);
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/NewActionPage1.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/NewActionPage1.java
index f42ea74e3f6..c521a0ae4a5 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/NewActionPage1.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/NewActionPage1.java
@@ -1,206 +1,206 @@
-/*******************************************************************************
- * 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.actions.wizard;
-
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Set;
-import java.util.logging.Level;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.wizard.WizardPage;
-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.internal.AtsPlugin;
-import org.eclipse.osee.ats.util.widgets.dialog.AITreeContentProvider;
-import org.eclipse.osee.ats.workflow.ATSXWidgetOptionResolver;
-import org.eclipse.osee.framework.core.enums.Active;
-import org.eclipse.osee.framework.core.exception.OseeCoreException;
-import org.eclipse.osee.framework.core.util.Conditions;
-import org.eclipse.osee.framework.logging.OseeLevel;
-import org.eclipse.osee.framework.logging.OseeLog;
-import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
-import org.eclipse.osee.framework.ui.skynet.ArtifactLabelProvider;
-import org.eclipse.osee.framework.ui.skynet.util.ArtifactNameSorter;
-import org.eclipse.osee.framework.ui.skynet.util.filteredTree.OSEECheckedFilteredTree;
-import org.eclipse.osee.framework.ui.skynet.widgets.XModifiedListener;
-import org.eclipse.osee.framework.ui.skynet.widgets.XText;
-import org.eclipse.osee.framework.ui.skynet.widgets.XWidget;
-import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkPage;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.dialogs.PatternFilter;
-
-/**
- * @author Donald G. Dunne
- */
-public class NewActionPage1 extends WizardPage {
- private final NewActionWizard wizard;
- private WorkPage page;
- private OSEECheckedFilteredTree treeViewer;
- private static PatternFilter patternFilter = new PatternFilter();
- private static Text descriptionLabel;
-
- protected NewActionPage1(NewActionWizard actionWizard) {
- super("Create new ATS Action", "Create ATS Action", null);
- setMessage("Enter title and select impacted items.");
- this.wizard = actionWizard;
- }
-
- private final XModifiedListener xModListener = new XModifiedListener() {
- @Override
- public void widgetModified(XWidget widget) {
- getContainer().updateButtons();
- }
- };
-
- @Override
- public void createControl(Composite parent) {
-
- try {
- String xWidgetXml =
+/*******************************************************************************
+ * 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.actions.wizard;
+
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
+import java.util.logging.Level;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.wizard.WizardPage;
+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.internal.AtsPlugin;
+import org.eclipse.osee.ats.util.widgets.dialog.AITreeContentProvider;
+import org.eclipse.osee.ats.workflow.ATSXWidgetOptionResolver;
+import org.eclipse.osee.framework.core.enums.Active;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.core.util.Conditions;
+import org.eclipse.osee.framework.logging.OseeLevel;
+import org.eclipse.osee.framework.logging.OseeLog;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
+import org.eclipse.osee.framework.ui.skynet.ArtifactLabelProvider;
+import org.eclipse.osee.framework.ui.skynet.util.ArtifactNameSorter;
+import org.eclipse.osee.framework.ui.skynet.util.filteredTree.OSEECheckedFilteredTree;
+import org.eclipse.osee.framework.ui.skynet.widgets.XModifiedListener;
+import org.eclipse.osee.framework.ui.skynet.widgets.XText;
+import org.eclipse.osee.framework.ui.skynet.widgets.XWidget;
+import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkPage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.dialogs.PatternFilter;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class NewActionPage1 extends WizardPage {
+ private final NewActionWizard wizard;
+ private WorkPage page;
+ private OSEECheckedFilteredTree treeViewer;
+ private static PatternFilter patternFilter = new PatternFilter();
+ private static Text descriptionLabel;
+
+ protected NewActionPage1(NewActionWizard actionWizard) {
+ super("Create new ATS Action", "Create ATS Action", null);
+ setMessage("Enter title and select impacted items.");
+ this.wizard = actionWizard;
+ }
+
+ private final XModifiedListener xModListener = new XModifiedListener() {
+ @Override
+ public void widgetModified(XWidget widget) {
+ getContainer().updateButtons();
+ }
+ };
+
+ @Override
+ public void createControl(Composite parent) {
+
+ try {
+ String xWidgetXml =
"<WorkPage><XWidget displayName=\"Title\" required=\"true\" xwidgetType=\"XText\" toolTip=\"" + AtsAttributeTypes.Title.getDescription() + "\"/></WorkPage>";
- Composite comp = new Composite(parent, SWT.NONE);
- comp.setLayout(new GridLayout(1, false));
- comp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-
- page = new WorkPage(xWidgetXml, ATSXWidgetOptionResolver.getInstance());
- page.createBody(null, comp, null, xModListener, true);
-
- Composite aiComp = new Composite(comp, SWT.NONE);
- aiComp.setLayout(new GridLayout(1, false));
- aiComp.setLayoutData(new GridData(GridData.FILL_BOTH));
-
- new Label(aiComp, SWT.NONE).setText("Select Actionable Items:");
- treeViewer =
- new OSEECheckedFilteredTree(aiComp,
- SWT.CHECK | SWT.MULTI | SWT.READ_ONLY | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER, patternFilter);
- treeViewer.getViewer().getTree().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
- treeViewer.getViewer().setContentProvider(new AITreeContentProvider(Active.Active));
- treeViewer.getViewer().setLabelProvider(new ArtifactLabelProvider());
- try {
- treeViewer.getViewer().setInput(ActionableItemArtifact.getTopLevelActionableItems(Active.Active));
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
- treeViewer.getViewer().setSorter(new ArtifactNameSorter());
- treeViewer.getViewer().addSelectionChangedListener(new ISelectionChangedListener() {
- @Override
- public void selectionChanged(SelectionChangedEvent event) {
- getContainer().updateButtons();
- }
- });
- GridData gd = new GridData(GridData.FILL_BOTH);
- gd.heightHint = 400;
- treeViewer.setLayoutData(gd);
-
- new Label(aiComp, SWT.NONE).setText("Description of highlighted Actionable Item (if any):");
- descriptionLabel = new Text(aiComp, SWT.BORDER | SWT.WRAP);
- gd = new GridData(GridData.FILL_BOTH);
- gd.heightHint = 15;
- descriptionLabel.setLayoutData(gd);
- descriptionLabel.setEnabled(false);
-
- treeViewer.getViewer().addSelectionChangedListener(new SelectionChangedListener());
-
- Button deselectAll = new Button(aiComp, SWT.PUSH);
- deselectAll.setText("De-Select All");
- deselectAll.addSelectionListener(new SelectionAdapter() {
-
- @Override
- public void widgetSelected(SelectionEvent e) {
- treeViewer.clearChecked();
- };
- });
-
- setControl(comp);
- setHelpContexts();
- if (wizard.getInitialAias() != null) {
- treeViewer.setInitalChecked(wizard.getInitialAias());
- }
- ((XText) getXWidget("Title")).setFocus();
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
- }
- }
-
- private class SelectionChangedListener implements ISelectionChangedListener {
- @Override
- public void selectionChanged(SelectionChangedEvent event) {
- IStructuredSelection sel = (IStructuredSelection) treeViewer.getViewer().getSelection();
- if (sel.isEmpty()) {
- return;
- }
- ActionableItemArtifact aia = (ActionableItemArtifact) sel.getFirstElement();
- try {
+ Composite comp = new Composite(parent, SWT.NONE);
+ comp.setLayout(new GridLayout(1, false));
+ comp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+
+ page = new WorkPage(xWidgetXml, ATSXWidgetOptionResolver.getInstance());
+ page.createBody(null, comp, null, xModListener, true);
+
+ Composite aiComp = new Composite(comp, SWT.NONE);
+ aiComp.setLayout(new GridLayout(1, false));
+ aiComp.setLayoutData(new GridData(GridData.FILL_BOTH));
+
+ new Label(aiComp, SWT.NONE).setText("Select Actionable Items:");
+ treeViewer =
+ new OSEECheckedFilteredTree(aiComp,
+ SWT.CHECK | SWT.MULTI | SWT.READ_ONLY | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER, patternFilter);
+ treeViewer.getViewer().getTree().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ treeViewer.getViewer().setContentProvider(new AITreeContentProvider(Active.Active));
+ treeViewer.getViewer().setLabelProvider(new ArtifactLabelProvider());
+ try {
+ treeViewer.getViewer().setInput(ActionableItemArtifact.getTopLevelActionableItems(Active.Active));
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ }
+ treeViewer.getViewer().setSorter(new ArtifactNameSorter());
+ treeViewer.getViewer().addSelectionChangedListener(new ISelectionChangedListener() {
+ @Override
+ public void selectionChanged(SelectionChangedEvent event) {
+ getContainer().updateButtons();
+ }
+ });
+ GridData gd = new GridData(GridData.FILL_BOTH);
+ gd.heightHint = 400;
+ treeViewer.setLayoutData(gd);
+
+ new Label(aiComp, SWT.NONE).setText("Description of highlighted Actionable Item (if any):");
+ descriptionLabel = new Text(aiComp, SWT.BORDER | SWT.WRAP);
+ gd = new GridData(GridData.FILL_BOTH);
+ gd.heightHint = 15;
+ descriptionLabel.setLayoutData(gd);
+ descriptionLabel.setEnabled(false);
+
+ treeViewer.getViewer().addSelectionChangedListener(new SelectionChangedListener());
+
+ Button deselectAll = new Button(aiComp, SWT.PUSH);
+ deselectAll.setText("De-Select All");
+ deselectAll.addSelectionListener(new SelectionAdapter() {
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ treeViewer.clearChecked();
+ };
+ });
+
+ setControl(comp);
+ setHelpContexts();
+ if (wizard.getInitialAias() != null) {
+ treeViewer.setInitalChecked(wizard.getInitialAias());
+ }
+ ((XText) getXWidget("Title")).setFocus();
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
+ }
+ }
+
+ private class SelectionChangedListener implements ISelectionChangedListener {
+ @Override
+ public void selectionChanged(SelectionChangedEvent event) {
+ IStructuredSelection sel = (IStructuredSelection) treeViewer.getViewer().getSelection();
+ if (sel.isEmpty()) {
+ return;
+ }
+ ActionableItemArtifact aia = (ActionableItemArtifact) sel.getFirstElement();
+ try {
descriptionLabel.setText(aia.getSoleAttributeValue(AtsAttributeTypes.Description, ""));
- } catch (OseeCoreException ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
- }
- }
-
- private void setHelpContexts() {
- AtsPlugin.getInstance().setHelp(this.getControl(), "new_action_wizard_page_1", "org.eclipse.osee.ats.help.ui");
- }
-
- public Set<ActionableItemArtifact> getSelectedActionableItemArtifacts() {
- Set<ActionableItemArtifact> selected = new HashSet<ActionableItemArtifact>();
- for (Object obj : treeViewer.getChecked()) {
- selected.add((ActionableItemArtifact) obj);
- }
- return selected;
- }
-
- public XWidget getXWidget(String attrName) throws OseeCoreException {
- Conditions.checkNotNull(page, "WorkPage");
- return page.getLayoutData(attrName).getXWidget();
- }
-
- @Override
- public boolean isPageComplete() {
- if (treeViewer.getChecked().isEmpty()) {
- return false;
- }
- try {
- for (ActionableItemArtifact aia : getSelectedActionableItemArtifacts()) {
- if (!aia.isActionable()) {
- AWorkbench.popup("ERROR", ActionableItemArtifact.getNotActionableItemError(aia));
- return false;
- }
- }
- Collection<TeamDefinitionArtifact> teamDefs =
- TeamDefinitionArtifact.getImpactedTeamDefs(getSelectedActionableItemArtifacts());
- if (teamDefs.isEmpty()) {
- AWorkbench.popup("ERROR", "No Teams Associated with selected Actionable Items");
- return false;
- }
- } catch (Exception ex) {
- AWorkbench.popup("ERROR", ex.getLocalizedMessage());
- return false;
- }
- if (!page.isPageComplete().isTrue()) {
- return false;
- }
- return true;
- }
-
-}
+ } catch (OseeCoreException ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ }
+ }
+ }
+
+ private void setHelpContexts() {
+ AtsPlugin.getInstance().setHelp(this.getControl(), "new_action_wizard_page_1", "org.eclipse.osee.ats.help.ui");
+ }
+
+ public Set<ActionableItemArtifact> getSelectedActionableItemArtifacts() {
+ Set<ActionableItemArtifact> selected = new HashSet<ActionableItemArtifact>();
+ for (Object obj : treeViewer.getChecked()) {
+ selected.add((ActionableItemArtifact) obj);
+ }
+ return selected;
+ }
+
+ public XWidget getXWidget(String attrName) throws OseeCoreException {
+ Conditions.checkNotNull(page, "WorkPage");
+ return page.getLayoutData(attrName).getXWidget();
+ }
+
+ @Override
+ public boolean isPageComplete() {
+ if (treeViewer.getChecked().isEmpty()) {
+ return false;
+ }
+ try {
+ for (ActionableItemArtifact aia : getSelectedActionableItemArtifacts()) {
+ if (!aia.isActionable()) {
+ AWorkbench.popup("ERROR", ActionableItemArtifact.getNotActionableItemError(aia));
+ return false;
+ }
+ }
+ Collection<TeamDefinitionArtifact> teamDefs =
+ TeamDefinitionArtifact.getImpactedTeamDefs(getSelectedActionableItemArtifacts());
+ if (teamDefs.isEmpty()) {
+ AWorkbench.popup("ERROR", "No Teams Associated with selected Actionable Items");
+ return false;
+ }
+ } catch (Exception ex) {
+ AWorkbench.popup("ERROR", ex.getLocalizedMessage());
+ return false;
+ }
+ if (!page.isPageComplete().isTrue()) {
+ return false;
+ }
+ return true;
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/NewActionPage2.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/NewActionPage2.java
index e7e0b144404..abc4836a133 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/NewActionPage2.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/NewActionPage2.java
@@ -1,139 +1,139 @@
-/*******************************************************************************
- * 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.actions.wizard;
-
-import org.eclipse.jface.wizard.WizardPage;
-import org.eclipse.osee.ats.artifact.AtsAttributeTypes;
-import org.eclipse.osee.ats.internal.AtsPlugin;
-import org.eclipse.osee.ats.workflow.ATSXWidgetOptionResolver;
-import org.eclipse.osee.framework.core.exception.OseeCoreException;
-import org.eclipse.osee.framework.core.util.Conditions;
-import org.eclipse.osee.framework.logging.OseeLevel;
-import org.eclipse.osee.framework.logging.OseeLog;
-import org.eclipse.osee.framework.ui.skynet.widgets.XCombo;
-import org.eclipse.osee.framework.ui.skynet.widgets.XModifiedListener;
-import org.eclipse.osee.framework.ui.skynet.widgets.XText;
-import org.eclipse.osee.framework.ui.skynet.widgets.XWidget;
-import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkPage;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Listener;
-
-/**
- * @author Donald G. Dunne
- */
-public class NewActionPage2 extends WizardPage {
- private WorkPage page;
- private final NewActionWizard wizard;
- private boolean debugPopulated = false;
-
- protected NewActionPage2(NewActionWizard wizard) {
- super("Create new ATS Action", "Create ATS Action", null);
- this.wizard = wizard;
- setMessage("Enter description, priority, change type and select Finish.");
- }
-
- @Override
- public void setVisible(boolean visible) {
- super.setVisible(visible);
- try {
- if (wizard.getInitialDescription() != null && ((XText) getXWidget("Description")).get().equals("")) {
- ((XText) getXWidget("Description")).set(wizard.getInitialDescription());
- }
- if (wizard.isTTAction()) {
- handlePopulateWithDebugInfo();
- }
- wizard.createPage3IfNecessary();
- ((XText) getXWidget("Description")).getStyledText().setFocus();
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
- }
- }
-
- private final XModifiedListener xModListener = new XModifiedListener() {
- @Override
- public void widgetModified(XWidget widget) {
- getContainer().updateButtons();
- }
- };
-
- @Override
- public void createControl(Composite parent) {
-
- try {
- StringBuffer sb = new StringBuffer("<WorkPage>");
+/*******************************************************************************
+ * 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.actions.wizard;
+
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.osee.ats.artifact.AtsAttributeTypes;
+import org.eclipse.osee.ats.internal.AtsPlugin;
+import org.eclipse.osee.ats.workflow.ATSXWidgetOptionResolver;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.core.util.Conditions;
+import org.eclipse.osee.framework.logging.OseeLevel;
+import org.eclipse.osee.framework.logging.OseeLog;
+import org.eclipse.osee.framework.ui.skynet.widgets.XCombo;
+import org.eclipse.osee.framework.ui.skynet.widgets.XModifiedListener;
+import org.eclipse.osee.framework.ui.skynet.widgets.XText;
+import org.eclipse.osee.framework.ui.skynet.widgets.XWidget;
+import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkPage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Listener;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class NewActionPage2 extends WizardPage {
+ private WorkPage page;
+ private final NewActionWizard wizard;
+ private boolean debugPopulated = false;
+
+ protected NewActionPage2(NewActionWizard wizard) {
+ super("Create new ATS Action", "Create ATS Action", null);
+ this.wizard = wizard;
+ setMessage("Enter description, priority, change type and select Finish.");
+ }
+
+ @Override
+ public void setVisible(boolean visible) {
+ super.setVisible(visible);
+ try {
+ if (wizard.getInitialDescription() != null && ((XText) getXWidget("Description")).get().equals("")) {
+ ((XText) getXWidget("Description")).set(wizard.getInitialDescription());
+ }
+ if (wizard.isTTAction()) {
+ handlePopulateWithDebugInfo();
+ }
+ wizard.createPage3IfNecessary();
+ ((XText) getXWidget("Description")).getStyledText().setFocus();
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
+ }
+ }
+
+ private final XModifiedListener xModListener = new XModifiedListener() {
+ @Override
+ public void widgetModified(XWidget widget) {
+ getContainer().updateButtons();
+ }
+ };
+
+ @Override
+ public void createControl(Composite parent) {
+
+ try {
+ StringBuffer sb = new StringBuffer("<WorkPage>");
sb.append("<XWidget displayName=\"Description\" height=\"80\" required=\"true\" xwidgetType=\"XText\" fill=\"Vertically\" toolTip=\"" + AtsAttributeTypes.Description.getDescription() + "\"/>");
sb.append("<XWidget displayName=\"Change Type\" storageName=\"ats.Change Type\" xwidgetType=\"XCombo(" + ATSXWidgetOptionResolver.OPTIONS_FROM_ATTRIBUTE_VALIDITY + ")\" required=\"true\" horizontalLabel=\"true\" toolTip=\"" + AtsAttributeTypes.ChangeType.getDescription() + "\"/>");
- sb.append("<XWidget displayName=\"Priority\" storageName=\"ats.Priority\" xwidgetType=\"XCombo(" + ATSXWidgetOptionResolver.OPTIONS_FROM_ATTRIBUTE_VALIDITY + ")\" required=\"true\" horizontalLabel=\"true\"/>");
+ sb.append("<XWidget displayName=\"Priority\" storageName=\"ats.Priority\" xwidgetType=\"XCombo(" + ATSXWidgetOptionResolver.OPTIONS_FROM_ATTRIBUTE_VALIDITY + ")\" required=\"true\" horizontalLabel=\"true\"/>");
sb.append("<XWidget displayName=\"Deadline\" xwidgetType=\"XDate\" horizontalLabel=\"true\" toolTip=\"" + AtsAttributeTypes.NeedBy.getDescription() + "\"/>");
sb.append("<XWidget displayName=\"Validation Required\" xwidgetType=\"XCheckBox\" horizontalLabel=\"true\" labelAfter=\"true\" toolTip=\"" + AtsAttributeTypes.ValidationRequired.getDescription() + "\"/>");
- sb.append("</WorkPage>");
-
- Composite comp = new Composite(parent, SWT.NONE);
- comp.setLayout(new GridLayout(2, false));
- comp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-
- page = new WorkPage(sb.toString(), ATSXWidgetOptionResolver.getInstance());
- page.createBody(null, comp, null, xModListener, true);
-
- ((XText) getXWidget("Description")).getLabelWidget().addListener(SWT.MouseUp, new Listener() {
- @Override
- public void handleEvent(Event event) {
- if (event.button == 3) {
- handlePopulateWithDebugInfo();
- }
- }
- });
-
- setControl(comp);
- setHelpContexts();
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
- }
- }
-
- private void setHelpContexts() {
- AtsPlugin.getInstance().setHelp(this.getControl(), "new_action_wizard_page_2", "org.eclipse.osee.ats.help.ui");
- }
-
- private void handlePopulateWithDebugInfo() {
- if (debugPopulated) {
- return;
- }
- try {
- ((XText) getXWidget("Description")).set("See title");
- // Must use skynet attribute name cause these widget uses the OPTIONS_FROM_ATTRIBUTE_VALIDITY
- ((XCombo) getXWidget("ats.Priority")).set("4");
- ((XCombo) getXWidget("ats.Change Type")).set("Improvement");
- debugPopulated = true;
- } catch (OseeCoreException ex) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
- }
- }
-
- @Override
- public boolean isPageComplete() {
- if (page == null || !page.isPageComplete().isTrue()) {
- return false;
- }
- return true;
- }
-
- protected XWidget getXWidget(String attrName) throws OseeCoreException {
- Conditions.checkNotNull(page, "WorkPage");
- return page.getLayoutData(attrName).getXWidget();
- }
-
-}
+ sb.append("</WorkPage>");
+
+ Composite comp = new Composite(parent, SWT.NONE);
+ comp.setLayout(new GridLayout(2, false));
+ comp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+
+ page = new WorkPage(sb.toString(), ATSXWidgetOptionResolver.getInstance());
+ page.createBody(null, comp, null, xModListener, true);
+
+ ((XText) getXWidget("Description")).getLabelWidget().addListener(SWT.MouseUp, new Listener() {
+ @Override
+ public void handleEvent(Event event) {
+ if (event.button == 3) {
+ handlePopulateWithDebugInfo();
+ }
+ }
+ });
+
+ setControl(comp);
+ setHelpContexts();
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
+ }
+ }
+
+ private void setHelpContexts() {
+ AtsPlugin.getInstance().setHelp(this.getControl(), "new_action_wizard_page_2", "org.eclipse.osee.ats.help.ui");
+ }
+
+ private void handlePopulateWithDebugInfo() {
+ if (debugPopulated) {
+ return;
+ }
+ try {
+ ((XText) getXWidget("Description")).set("See title");
+ // Must use skynet attribute name cause these widget uses the OPTIONS_FROM_ATTRIBUTE_VALIDITY
+ ((XCombo) getXWidget("ats.Priority")).set("4");
+ ((XCombo) getXWidget("ats.Change Type")).set("Improvement");
+ debugPopulated = true;
+ } catch (OseeCoreException ex) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
+ }
+ }
+
+ @Override
+ public boolean isPageComplete() {
+ if (page == null || !page.isPageComplete().isTrue()) {
+ return false;
+ }
+ return true;
+ }
+
+ protected XWidget getXWidget(String attrName) throws OseeCoreException {
+ Conditions.checkNotNull(page, "WorkPage");
+ return page.getLayoutData(attrName).getXWidget();
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/ATSArtifact.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/ATSArtifact.java
index 684d3605430..0db6d955cdd 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/ATSArtifact.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/ATSArtifact.java
@@ -1,61 +1,61 @@
-/*******************************************************************************
- * 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.artifact;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import org.eclipse.osee.ats.hyper.IHyperArtifact;
-import org.eclipse.osee.ats.util.Overview;
-import org.eclipse.osee.framework.core.exception.OseeCoreException;
-import org.eclipse.osee.framework.core.exception.OseeDataStoreException;
-import org.eclipse.osee.framework.core.model.Branch;
-import org.eclipse.osee.framework.core.model.type.ArtifactType;
-import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
-import org.eclipse.osee.framework.skynet.core.artifact.ArtifactFactory;
-import org.eclipse.osee.framework.skynet.core.artifact.IATSArtifact;
-import org.eclipse.osee.framework.skynet.core.relation.RelationLink;
-
-public abstract class ATSArtifact extends Artifact implements IHyperArtifact, IATSArtifact {
-
- public ATSArtifact(ArtifactFactory parentFactory, String guid, String humanReadableId, Branch branch, ArtifactType artifactType) throws OseeDataStoreException {
- super(parentFactory, guid, humanReadableId, branch, artifactType);
- }
-
- public String getHyperlinkHtml() {
- return Overview.getOpenHyperlinkHtml(this);
- }
-
- /**
- * Recursively retrieve artifacts and all its ATS related artifacts such as tasks, notes, subscriptions, etc... for
- * deletion
- */
- public void atsDelete(Set<Artifact> deleteArts, Map<Artifact, Object> allRelated) throws OseeCoreException {
- deleteArts.add(this);
- for (Artifact relative : getBSideArtifacts()) {
- allRelated.put(relative, this);
- }
- }
-
- private List<Artifact> getBSideArtifacts() throws OseeCoreException {
- List<Artifact> sideBArtifacts = new ArrayList<Artifact>();
- List<RelationLink> relatives = getRelationsAll(false);
- for (RelationLink link : relatives) {
- Artifact sideB = link.getArtifactB();
- if (!sideB.equals(this)) {
- sideBArtifacts.add(sideB);
- }
- }
-
- return sideBArtifacts;
- }
-}
+/*******************************************************************************
+ * 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.artifact;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import org.eclipse.osee.ats.hyper.IHyperArtifact;
+import org.eclipse.osee.ats.util.Overview;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.core.exception.OseeDataStoreException;
+import org.eclipse.osee.framework.core.model.Branch;
+import org.eclipse.osee.framework.core.model.type.ArtifactType;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactFactory;
+import org.eclipse.osee.framework.skynet.core.artifact.IATSArtifact;
+import org.eclipse.osee.framework.skynet.core.relation.RelationLink;
+
+public abstract class ATSArtifact extends Artifact implements IHyperArtifact, IATSArtifact {
+
+ public ATSArtifact(ArtifactFactory parentFactory, String guid, String humanReadableId, Branch branch, ArtifactType artifactType) throws OseeDataStoreException {
+ super(parentFactory, guid, humanReadableId, branch, artifactType);
+ }
+
+ public String getHyperlinkHtml() {
+ return Overview.getOpenHyperlinkHtml(this);
+ }
+
+ /**
+ * Recursively retrieve artifacts and all its ATS related artifacts such as tasks, notes, subscriptions, etc... for
+ * deletion
+ */
+ public void atsDelete(Set<Artifact> deleteArts, Map<Artifact, Object> allRelated) throws OseeCoreException {
+ deleteArts.add(this);
+ for (Artifact relative : getBSideArtifacts()) {
+ allRelated.put(relative, this);
+ }
+ }
+
+ private List<Artifact> getBSideArtifacts() throws OseeCoreException {
+ List<Artifact> sideBArtifacts = new ArrayList<Artifact>();
+ List<RelationLink> relatives = getRelationsAll(false);
+ for (RelationLink link : relatives) {
+ Artifact sideB = link.getArtifactB();
+ if (!sideB.equals(this)) {
+ sideBArtifacts.add(sideB);
+ }
+ }
+
+ return sideBArtifacts;
+ }
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/ATSAttributes.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/ATSAttributes.java
index d4b0a00b9fc..29d061abb3a 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/ATSAttributes.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/ATSAttributes.java
@@ -1,77 +1,77 @@
-/*******************************************************************************
- * 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.artifact;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * @author Donald G. Dunne
- */
-public class ATSAttributes {
- private static final Map<String, ATSAttributes> WORK_ITEM_ID_TO_ATS_ATTRIBUTE_MAP =
- new HashMap<String, ATSAttributes>();
-
- // @formatter:off
- public static final ATSAttributes WORKING_BRANCH_WIDGET = new ATSAttributes("Working Branch");
- public static final ATSAttributes VALIDATE_REQ_CHANGES_WIDGET = new ATSAttributes("Validate Requirement Changes");
+/*******************************************************************************
+ * 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.artifact;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class ATSAttributes {
+ private static final Map<String, ATSAttributes> WORK_ITEM_ID_TO_ATS_ATTRIBUTE_MAP =
+ new HashMap<String, ATSAttributes>();
+
+ // @formatter:off
+ public static final ATSAttributes WORKING_BRANCH_WIDGET = new ATSAttributes("Working Branch");
+ public static final ATSAttributes VALIDATE_REQ_CHANGES_WIDGET = new ATSAttributes("Validate Requirement Changes");
public static final ATSAttributes CREATE_CODE_TEST_TASKS_OFF_REQUIREMENTS = new ATSAttributes("Create Code/Test Tasks");
- public static final ATSAttributes CHECK_SIGNALS_VIA_CDB_WIDGET = new ATSAttributes("Check Signals Via CDB");
- public static final ATSAttributes SHOW_CDB_DIFF_REPORT_WIDGET = new ATSAttributes("Show CDB Differences Report");
- public static final ATSAttributes ASSIGNEE_ATTRIBUTE = new ATSAttributes("Assignees", "Users currently assigned to do work.");
- public static final ATSAttributes COMMIT_MANAGER_WIDGET = new ATSAttributes("Commit Manager", "Commit branches to parent and parallel branches.");
- // @formatter:on
-
- private final String displayName;
- private final String description;
- private final String workItemId;
-
- protected ATSAttributes(String displayName, String workItemId, String description) {
- this.displayName = displayName;
- this.workItemId = workItemId;
- this.description = description;
- WORK_ITEM_ID_TO_ATS_ATTRIBUTE_MAP.put(workItemId, this);
- }
-
+ public static final ATSAttributes CHECK_SIGNALS_VIA_CDB_WIDGET = new ATSAttributes("Check Signals Via CDB");
+ public static final ATSAttributes SHOW_CDB_DIFF_REPORT_WIDGET = new ATSAttributes("Show CDB Differences Report");
+ public static final ATSAttributes ASSIGNEE_ATTRIBUTE = new ATSAttributes("Assignees", "Users currently assigned to do work.");
+ public static final ATSAttributes COMMIT_MANAGER_WIDGET = new ATSAttributes("Commit Manager", "Commit branches to parent and parallel branches.");
+ // @formatter:on
+
+ private final String displayName;
+ private final String description;
+ private final String workItemId;
+
+ protected ATSAttributes(String displayName, String workItemId, String description) {
+ this.displayName = displayName;
+ this.workItemId = workItemId;
+ this.description = description;
+ WORK_ITEM_ID_TO_ATS_ATTRIBUTE_MAP.put(workItemId, this);
+ }
+
private ATSAttributes(String displayName) {
this(displayName, "");
- }
-
+ }
+
private ATSAttributes(String displayName, String description) {
this(displayName, "ats." + displayName, description);
- }
-
- public static ATSAttributes getAtsAttributeByStoreName(String workItemId) {
- return WORK_ITEM_ID_TO_ATS_ATTRIBUTE_MAP.get(workItemId);
- }
-
- @Override
- public final boolean equals(Object obj) {
- return super.equals(obj);
- }
-
- @Override
- public final int hashCode() {
- return super.hashCode();
- }
-
- public String getDisplayName() {
- return displayName;
- }
-
- public String getWorkItemId() {
- return workItemId;
- }
-
- public String getDescription() {
- return description;
- }
+ }
+
+ public static ATSAttributes getAtsAttributeByStoreName(String workItemId) {
+ return WORK_ITEM_ID_TO_ATS_ATTRIBUTE_MAP.get(workItemId);
+ }
+
+ @Override
+ public final boolean equals(Object obj) {
+ return super.equals(obj);
+ }
+
+ @Override
+ public final int hashCode() {
+ return super.hashCode();
+ }
+
+ public String getDisplayName() {
+ return displayName;
+ }
+
+ public String getWorkItemId() {
+ return workItemId;
+ }
+
+ public String getDescription() {
+ return description;
+ }
} \ No newline at end of file
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/ATSLog.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/ATSLog.java
index a8a074b6658..60062183c7f 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/ATSLog.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/ATSLog.java
@@ -1,412 +1,412 @@
-/*******************************************************************************
- * 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.artifact;
-
-import java.lang.ref.WeakReference;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Date;
-import java.util.List;
-import java.util.logging.Level;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact.DefaultTeamState;
-import org.eclipse.osee.ats.internal.AtsPlugin;
-import org.eclipse.osee.framework.core.exception.MultipleAttributesExist;
-import org.eclipse.osee.framework.core.exception.OseeArgumentException;
-import org.eclipse.osee.framework.core.exception.OseeCoreException;
-import org.eclipse.osee.framework.core.exception.OseeStateException;
-import org.eclipse.osee.framework.jdk.core.util.AHTML;
-import org.eclipse.osee.framework.jdk.core.util.AXml;
-import org.eclipse.osee.framework.jdk.core.util.Strings;
-import org.eclipse.osee.framework.jdk.core.util.xml.Jaxp;
-import org.eclipse.osee.framework.logging.OseeLevel;
-import org.eclipse.osee.framework.logging.OseeLog;
-import org.eclipse.osee.framework.skynet.core.User;
-import org.eclipse.osee.framework.skynet.core.UserManager;
-import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
-import org.eclipse.osee.framework.ui.skynet.widgets.XDate;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-
-/**
- * @author Donald G. Dunne
- */
-public class ATSLog {
-
- private final WeakReference<Artifact> artifactRef;
- private boolean enabled = true;
- private static String ATS_LOG_TAG = "AtsLog";
- private static String LOG_ITEM_TAG = "Item";
- private LogItem cancelledLogItem;
- private LogItem completedLogItem;
- public static enum LogType {
- None,
- Originated,
- StateComplete,
- StateCancelled,
- StateEntered,
- Released,
- Error,
- Assign,
- Note,
- Metrics;
-
- public static LogType getType(String type) throws OseeArgumentException {
- for (Enum<LogType> e : LogType.values()) {
- if (e.name().equals(type)) {
- return (LogType) e;
- }
- }
- throw new OseeArgumentException("Unhandled LogType: \"" + type + "\"");
- }
-
- };
-
- public ATSLog(Artifact artifact) {
- this.artifactRef = new WeakReference<Artifact>(artifact);
- }
-
- @Override
- public String toString() {
- try {
- return getLogItems().toString();
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- return ex.getLocalizedMessage();
- }
- }
-
- public String getHtml() throws OseeCoreException {
- return getHtml(true);
- }
-
- public String getHtml(boolean showLog) throws OseeCoreException {
- if (getLogItems().isEmpty()) {
- return "";
- }
- StringBuffer sb = new StringBuffer();
- if (showLog) {
- sb.append(AHTML.addSpace(1) + AHTML.getLabelStr(
- AHTML.LABEL_FONT,
- "History for \"" + getArtifact().getArtifactTypeName() + "\" - " + getArtifact().getHumanReadableId() + " - titled \"" + getArtifact().getName() + "\""));
- }
- sb.append(getTable());
- return sb.toString();
- }
-
- public Artifact getArtifact() throws OseeStateException {
- if (artifactRef.get() == null) {
- throw new OseeStateException("Artifact has been garbage collected");
- }
- return artifactRef.get();
- }
-
- private static Pattern LOG_ITEM_PATTERN =
- Pattern.compile("<Item date=\"(.*?)\" msg=\"(.*?)\" state=\"(.*?)\" type=\"(.*?)\" userId=\"(.*?)\"/>");
-
- private static Pattern LOG_ITEM_TAG_PATTERN = Pattern.compile("<Item ");
-
- public List<LogItem> getLogItems() throws OseeCoreException {
- // System.out.println("getLogItems " + artifact.getHumanReadableId());
- List<LogItem> logItems = new ArrayList<LogItem>();
+/*******************************************************************************
+ * 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.artifact;
+
+import java.lang.ref.WeakReference;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Date;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact.DefaultTeamState;
+import org.eclipse.osee.ats.internal.AtsPlugin;
+import org.eclipse.osee.framework.core.exception.MultipleAttributesExist;
+import org.eclipse.osee.framework.core.exception.OseeArgumentException;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.core.exception.OseeStateException;
+import org.eclipse.osee.framework.jdk.core.util.AHTML;
+import org.eclipse.osee.framework.jdk.core.util.AXml;
+import org.eclipse.osee.framework.jdk.core.util.Strings;
+import org.eclipse.osee.framework.jdk.core.util.xml.Jaxp;
+import org.eclipse.osee.framework.logging.OseeLevel;
+import org.eclipse.osee.framework.logging.OseeLog;
+import org.eclipse.osee.framework.skynet.core.User;
+import org.eclipse.osee.framework.skynet.core.UserManager;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.ui.skynet.widgets.XDate;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class ATSLog {
+
+ private final WeakReference<Artifact> artifactRef;
+ private boolean enabled = true;
+ private static String ATS_LOG_TAG = "AtsLog";
+ private static String LOG_ITEM_TAG = "Item";
+ private LogItem cancelledLogItem;
+ private LogItem completedLogItem;
+ public static enum LogType {
+ None,
+ Originated,
+ StateComplete,
+ StateCancelled,
+ StateEntered,
+ Released,
+ Error,
+ Assign,
+ Note,
+ Metrics;
+
+ public static LogType getType(String type) throws OseeArgumentException {
+ for (Enum<LogType> e : LogType.values()) {
+ if (e.name().equals(type)) {
+ return (LogType) e;
+ }
+ }
+ throw new OseeArgumentException("Unhandled LogType: \"" + type + "\"");
+ }
+
+ };
+
+ public ATSLog(Artifact artifact) {
+ this.artifactRef = new WeakReference<Artifact>(artifact);
+ }
+
+ @Override
+ public String toString() {
+ try {
+ return getLogItems().toString();
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ return ex.getLocalizedMessage();
+ }
+ }
+
+ public String getHtml() throws OseeCoreException {
+ return getHtml(true);
+ }
+
+ public String getHtml(boolean showLog) throws OseeCoreException {
+ if (getLogItems().isEmpty()) {
+ return "";
+ }
+ StringBuffer sb = new StringBuffer();
+ if (showLog) {
+ sb.append(AHTML.addSpace(1) + AHTML.getLabelStr(
+ AHTML.LABEL_FONT,
+ "History for \"" + getArtifact().getArtifactTypeName() + "\" - " + getArtifact().getHumanReadableId() + " - titled \"" + getArtifact().getName() + "\""));
+ }
+ sb.append(getTable());
+ return sb.toString();
+ }
+
+ public Artifact getArtifact() throws OseeStateException {
+ if (artifactRef.get() == null) {
+ throw new OseeStateException("Artifact has been garbage collected");
+ }
+ return artifactRef.get();
+ }
+
+ private static Pattern LOG_ITEM_PATTERN =
+ Pattern.compile("<Item date=\"(.*?)\" msg=\"(.*?)\" state=\"(.*?)\" type=\"(.*?)\" userId=\"(.*?)\"/>");
+
+ private static Pattern LOG_ITEM_TAG_PATTERN = Pattern.compile("<Item ");
+
+ public List<LogItem> getLogItems() throws OseeCoreException {
+ // System.out.println("getLogItems " + artifact.getHumanReadableId());
+ List<LogItem> logItems = new ArrayList<LogItem>();
String xml = getArtifact().getSoleAttributeValue(AtsAttributeTypes.Log, "");
- if (!xml.equals("")) {
- Matcher m = LOG_ITEM_PATTERN.matcher(xml);
- while (m.find()) {
- LogItem item =
- new LogItem(m.group(4), m.group(1), Strings.intern(m.group(5)), Strings.intern(m.group(3)),
- AXml.xmlToText(m.group(2)), getArtifact().getHumanReadableId());
- logItems.add(item);
- }
-
- Matcher m2 = LOG_ITEM_TAG_PATTERN.matcher(xml);
- int openTagsFound = 0;
- while (m2.find()) {
- openTagsFound++;
- }
- if (logItems.size() != openTagsFound) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, String.format(
- "ATS Log: open tags found %d doesn't match log items parsed %d for %s", openTagsFound, logItems.size(),
- getArtifact().getHumanReadableId()));
- }
- }
- return logItems;
- }
-
- public Date getLastStatusedDate() throws OseeCoreException {
- LogItem logItem = getLastEvent(LogType.Metrics);
- if (logItem == null) {
- return null;
- }
- return logItem.getDate();
- }
-
- public void putLogItems(List<LogItem> items) {
- try {
- Document doc = Jaxp.newDocument();
- Element rootElement = doc.createElement(ATS_LOG_TAG);
- doc.appendChild(rootElement);
- for (LogItem item : items) {
- Element element = doc.createElement(LOG_ITEM_TAG);
- element.setAttribute("type", item.getType().name());
- element.setAttribute("date", item.getDate().getTime() + "");
- element.setAttribute("userId", item.getUser().getUserId());
- element.setAttribute("state", item.getState());
- element.setAttribute("msg", item.getMsg());
- rootElement.appendChild(element);
- }
+ if (!xml.equals("")) {
+ Matcher m = LOG_ITEM_PATTERN.matcher(xml);
+ while (m.find()) {
+ LogItem item =
+ new LogItem(m.group(4), m.group(1), Strings.intern(m.group(5)), Strings.intern(m.group(3)),
+ AXml.xmlToText(m.group(2)), getArtifact().getHumanReadableId());
+ logItems.add(item);
+ }
+
+ Matcher m2 = LOG_ITEM_TAG_PATTERN.matcher(xml);
+ int openTagsFound = 0;
+ while (m2.find()) {
+ openTagsFound++;
+ }
+ if (logItems.size() != openTagsFound) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, String.format(
+ "ATS Log: open tags found %d doesn't match log items parsed %d for %s", openTagsFound, logItems.size(),
+ getArtifact().getHumanReadableId()));
+ }
+ }
+ return logItems;
+ }
+
+ public Date getLastStatusedDate() throws OseeCoreException {
+ LogItem logItem = getLastEvent(LogType.Metrics);
+ if (logItem == null) {
+ return null;
+ }
+ return logItem.getDate();
+ }
+
+ public void putLogItems(List<LogItem> items) {
+ try {
+ Document doc = Jaxp.newDocument();
+ Element rootElement = doc.createElement(ATS_LOG_TAG);
+ doc.appendChild(rootElement);
+ for (LogItem item : items) {
+ Element element = doc.createElement(LOG_ITEM_TAG);
+ element.setAttribute("type", item.getType().name());
+ element.setAttribute("date", item.getDate().getTime() + "");
+ element.setAttribute("userId", item.getUser().getUserId());
+ element.setAttribute("state", item.getState());
+ element.setAttribute("msg", item.getMsg());
+ rootElement.appendChild(element);
+ }
getArtifact().setSoleAttributeValue(AtsAttributeTypes.Log, Jaxp.getDocumentXml(doc));
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, "Can't create ats log document", ex);
- }
- }
-
- public List<LogItem> getLogItemsReversed() throws OseeCoreException {
- List<LogItem> logItems = getLogItems();
- Collections.reverse(logItems);
- return logItems;
- }
-
- public void setOriginator(User user) throws OseeCoreException {
- List<LogItem> logItems = getLogItems();
- for (LogItem item : logItems) {
- if (item.getType() == LogType.Originated) {
- item.setUser(user);
- putLogItems(logItems);
- return;
- }
- }
- }
-
- public void setCreationDate(Date date) throws OseeCoreException {
- List<LogItem> logItems = getLogItems();
- for (LogItem item : logItems) {
- if (item.getType() == LogType.Originated) {
- item.setDate(date);
- putLogItems(logItems);
- return;
- }
- }
- }
-
- public String getCancellationReason() throws OseeCoreException {
- LogItem item = getStateEvent(LogType.StateCancelled);
- if (item == null) {
- return "";
- }
- return item.getMsg();
- }
-
- public String getCancelledFromState() throws OseeCoreException {
- LogItem item = getStateEvent(LogType.StateCancelled);
- if (item == null) {
- return "";
- }
- return item.getState();
- }
-
- public String getCompletedFromState() throws OseeCoreException {
- LogItem item = getStateEvent(LogType.StateComplete);
- if (item == null) {
- return "";
- }
- return item.getState();
- }
-
- public void setCancellationReason(String reason) throws OseeCoreException {
- List<LogItem> logItems = getLogItemsReversed();
- for (LogItem item : logItems) {
- if (item.getType() == LogType.StateCancelled) {
- item.setMsg(reason);
- putLogItems(logItems);
- return;
- }
- }
- }
-
- /**
- * Since originator can be changed, return the date of the first originated log item
- */
- public Date getCreationDate() throws OseeCoreException {
- LogItem logItem = getEvent(LogType.Originated);
- if (logItem == null) {
- return null;
- }
- return logItem.getDate();
- }
-
- /**
- * Since originator change be changed, return the last originated event's user
- */
- public User getOriginator() throws OseeCoreException {
- LogItem logItem = getLastEvent(LogType.Originated);
- if (logItem == null) {
- return null;
- }
- return logItem.getUser();
- }
-
- /**
- * Overwrite the first logItem to match type and state with newItem data
- */
- public void overrideStateItemData(LogType matchType, String matchState, LogItem newItem) throws OseeCoreException {
- List<LogItem> logItems = getLogItems();
- for (LogItem item : logItems) {
- if (item.getType() == matchType && item.getState().equals(matchState)) {
- item.setUser(newItem.getUser());
- item.setDate(newItem.getDate());
- item.setMsg(newItem.getMsg());
- putLogItems(logItems);
- return;
- }
- }
- }
-
- /**
- * Overwrite the first logItem to match matchType with newItem data
- */
- public void overrideItemData(LogType matchType, LogItem newItem) throws OseeCoreException {
- List<LogItem> logItems = getLogItems();
- for (LogItem item : logItems) {
- if (item.getType() == matchType) {
- item.setState(newItem.getState());
- item.setUser(newItem.getUser());
- item.setDate(newItem.getDate());
- item.setMsg(newItem.getMsg());
- putLogItems(logItems);
- return;
- }
- }
- }
-
- /**
- * @param state name of state or null
- * @throws OseeArgumentException
- * @throws MultipleAttributesExist
- */
- public void addLog(LogType type, String state, String msg) throws OseeCoreException {
- addLog(type, state, msg, new Date(), UserManager.getUser());
- }
-
- /**
- * @param state name of state or null
- * @throws MultipleAttributesExist
- */
- public void addLog(LogType type, String state, String msg, User user) throws OseeCoreException {
- addLog(type, state, msg, new Date(), user);
- }
-
- public void addLogItem(LogItem item) throws OseeCoreException {
- addLog(item.getType(), item.getState(), item.getMsg(), item.getDate(), item.getUser());
- }
-
- /**
- * @param state name of state or null
- * @throws MultipleAttributesExist
- */
- public void addLog(LogType type, String state, String msg, Date date, User user) throws OseeCoreException {
- if (!enabled) {
- return;
- }
- LogItem logItem = new LogItem(type, date, user, state, msg, artifactRef.get().getHumanReadableId());
- List<LogItem> logItems = getLogItems();
- logItems.add(logItem);
- putLogItems(logItems);
- }
-
- public void clearLog() {
- putLogItems(new ArrayList<LogItem>());
- }
-
- public String getTable() throws OseeCoreException {
- StringBuilder builder = new StringBuilder();
- List<LogItem> logItems = getLogItems();
- builder.append("<TABLE BORDER=\"1\" cellspacing=\"1\" cellpadding=\"3%\" width=\"100%\"><THEAD><TR><TH>Event</TH>" + "<TH>State</TH><TH>Message</TH><TH>User</TH><TH>Date</TH></THEAD></TR>");
- for (LogItem item : logItems) {
- User user = item.getUser();
- if (user != null) {
- builder.append("<TR>");
- builder.append("<TD>" + item.getType() + "</TD>");
- builder.append("<TD>" + (item.getState().equals("") ? "." : item.getState()) + "</TD>");
- builder.append("<TD>" + (item.getMsg().equals("") ? "." : item.getMsg()) + "</TD>");
- if (user.equals(UserManager.getUser())) {
- builder.append("<TD bgcolor=\"#CCCCCC\">" + user.getName() + "</TD>");
- } else {
- builder.append("<TD>" + user.getName() + "</TD>");
- }
- builder.append("<TD>" + item.getDate(XDate.MMDDYYHHMM) + "</TD>");
- builder.append("</TR>");
- }
- }
- builder.append("</TABLE>");
- return builder.toString();
- }
-
- public boolean isEnabled() {
- return enabled;
- }
-
- public void setEnabled(boolean enabled) {
- this.enabled = enabled;
- }
-
- public LogItem getEvent(LogType type) throws OseeCoreException {
- for (LogItem item : getLogItems()) {
- if (item.getType() == type) {
- return item;
- }
- }
- return null;
- }
-
- public LogItem getLastEvent(LogType type) throws OseeCoreException {
- for (LogItem item : getLogItemsReversed()) {
- if (item.getType() == type) {
- return item;
- }
- }
- return null;
- }
-
- public LogItem getStateEvent(LogType type, String stateName) throws OseeCoreException {
- for (LogItem item : getLogItemsReversed()) {
- if (item.getType() == type && item.getState().equals(stateName)) {
- return item;
- }
- }
- return null;
- }
-
- public LogItem getStateEvent(LogType type) throws OseeCoreException {
- for (LogItem item : getLogItemsReversed()) {
- if (item.getType() == type) {
- return item;
- }
- }
- return null;
- }
-
- public LogItem getCancelledLogItem() throws OseeCoreException {
- if (cancelledLogItem == null) {
- cancelledLogItem = getStateEvent(LogType.StateEntered, DefaultTeamState.Cancelled.name());
- }
- return cancelledLogItem;
- }
-
- public LogItem getCompletedLogItem() throws OseeCoreException {
- if (completedLogItem == null) {
- completedLogItem = getStateEvent(LogType.StateEntered, DefaultTeamState.Completed.name());
- }
- return completedLogItem;
- }
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, "Can't create ats log document", ex);
+ }
+ }
+
+ public List<LogItem> getLogItemsReversed() throws OseeCoreException {
+ List<LogItem> logItems = getLogItems();
+ Collections.reverse(logItems);
+ return logItems;
+ }
+
+ public void setOriginator(User user) throws OseeCoreException {
+ List<LogItem> logItems = getLogItems();
+ for (LogItem item : logItems) {
+ if (item.getType() == LogType.Originated) {
+ item.setUser(user);
+ putLogItems(logItems);
+ return;
+ }
+ }
+ }
+
+ public void setCreationDate(Date date) throws OseeCoreException {
+ List<LogItem> logItems = getLogItems();
+ for (LogItem item : logItems) {
+ if (item.getType() == LogType.Originated) {
+ item.setDate(date);
+ putLogItems(logItems);
+ return;
+ }
+ }
+ }
+
+ public String getCancellationReason() throws OseeCoreException {
+ LogItem item = getStateEvent(LogType.StateCancelled);
+ if (item == null) {
+ return "";
+ }
+ return item.getMsg();
+ }
+
+ public String getCancelledFromState() throws OseeCoreException {
+ LogItem item = getStateEvent(LogType.StateCancelled);
+ if (item == null) {
+ return "";
+ }
+ return item.getState();
+ }
+
+ public String getCompletedFromState() throws OseeCoreException {
+ LogItem item = getStateEvent(LogType.StateComplete);
+ if (item == null) {
+ return "";
+ }
+ return item.getState();
+ }
+
+ public void setCancellationReason(String reason) throws OseeCoreException {
+ List<LogItem> logItems = getLogItemsReversed();
+ for (LogItem item : logItems) {
+ if (item.getType() == LogType.StateCancelled) {
+ item.setMsg(reason);
+ putLogItems(logItems);
+ return;
+ }
+ }
+ }
+
+ /**
+ * Since originator can be changed, return the date of the first originated log item
+ */
+ public Date getCreationDate() throws OseeCoreException {
+ LogItem logItem = getEvent(LogType.Originated);
+ if (logItem == null) {
+ return null;
+ }
+ return logItem.getDate();
+ }
+
+ /**
+ * Since originator change be changed, return the last originated event's user
+ */
+ public User getOriginator() throws OseeCoreException {
+ LogItem logItem = getLastEvent(LogType.Originated);
+ if (logItem == null) {
+ return null;
+ }
+ return logItem.getUser();
+ }
+
+ /**
+ * Overwrite the first logItem to match type and state with newItem data
+ */
+ public void overrideStateItemData(LogType matchType, String matchState, LogItem newItem) throws OseeCoreException {
+ List<LogItem> logItems = getLogItems();
+ for (LogItem item : logItems) {
+ if (item.getType() == matchType && item.getState().equals(matchState)) {
+ item.setUser(newItem.getUser());
+ item.setDate(newItem.getDate());
+ item.setMsg(newItem.getMsg());
+ putLogItems(logItems);
+ return;
+ }
+ }
+ }
+
+ /**
+ * Overwrite the first logItem to match matchType with newItem data
+ */
+ public void overrideItemData(LogType matchType, LogItem newItem) throws OseeCoreException {
+ List<LogItem> logItems = getLogItems();
+ for (LogItem item : logItems) {
+ if (item.getType() == matchType) {
+ item.setState(newItem.getState());
+ item.setUser(newItem.getUser());
+ item.setDate(newItem.getDate());
+ item.setMsg(newItem.getMsg());
+ putLogItems(logItems);
+ return;
+ }
+ }
+ }
+
+ /**
+ * @param state name of state or null
+ * @throws OseeArgumentException
+ * @throws MultipleAttributesExist
+ */
+ public void addLog(LogType type, String state, String msg) throws OseeCoreException {
+ addLog(type, state, msg, new Date(), UserManager.getUser());
+ }
+
+ /**
+ * @param state name of state or null
+ * @throws MultipleAttributesExist
+ */
+ public void addLog(LogType type, String state, String msg, User user) throws OseeCoreException {
+ addLog(type, state, msg, new Date(), user);
+ }
+
+ public void addLogItem(LogItem item) throws OseeCoreException {
+ addLog(item.getType(), item.getState(), item.getMsg(), item.getDate(), item.getUser());
+ }
+
+ /**
+ * @param state name of state or null
+ * @throws MultipleAttributesExist
+ */
+ public void addLog(LogType type, String state, String msg, Date date, User user) throws OseeCoreException {
+ if (!enabled) {
+ return;
+ }
+ LogItem logItem = new LogItem(type, date, user, state, msg, artifactRef.get().getHumanReadableId());
+ List<LogItem> logItems = getLogItems();
+ logItems.add(logItem);
+ putLogItems(logItems);
+ }
+
+ public void clearLog() {
+ putLogItems(new ArrayList<LogItem>());
+ }
+
+ public String getTable() throws OseeCoreException {
+ StringBuilder builder = new StringBuilder();
+ List<LogItem> logItems = getLogItems();
+ builder.append("<TABLE BORDER=\"1\" cellspacing=\"1\" cellpadding=\"3%\" width=\"100%\"><THEAD><TR><TH>Event</TH>" + "<TH>State</TH><TH>Message</TH><TH>User</TH><TH>Date</TH></THEAD></TR>");
+ for (LogItem item : logItems) {
+ User user = item.getUser();
+ if (user != null) {
+ builder.append("<TR>");
+ builder.append("<TD>" + item.getType() + "</TD>");
+ builder.append("<TD>" + (item.getState().equals("") ? "." : item.getState()) + "</TD>");
+ builder.append("<TD>" + (item.getMsg().equals("") ? "." : item.getMsg()) + "</TD>");
+ if (user.equals(UserManager.getUser())) {
+ builder.append("<TD bgcolor=\"#CCCCCC\">" + user.getName() + "</TD>");
+ } else {
+ builder.append("<TD>" + user.getName() + "</TD>");
+ }
+ builder.append("<TD>" + item.getDate(XDate.MMDDYYHHMM) + "</TD>");
+ builder.append("</TR>");
+ }
+ }
+ builder.append("</TABLE>");
+ return builder.toString();
+ }
+
+ public boolean isEnabled() {
+ return enabled;
+ }
+
+ public void setEnabled(boolean enabled) {
+ this.enabled = enabled;
+ }
+
+ public LogItem getEvent(LogType type) throws OseeCoreException {
+ for (LogItem item : getLogItems()) {
+ if (item.getType() == type) {
+ return item;
+ }
+ }
+ return null;
+ }
+
+ public LogItem getLastEvent(LogType type) throws OseeCoreException {
+ for (LogItem item : getLogItemsReversed()) {
+ if (item.getType() == type) {
+ return item;
+ }
+ }
+ return null;
+ }
+
+ public LogItem getStateEvent(LogType type, String stateName) throws OseeCoreException {
+ for (LogItem item : getLogItemsReversed()) {
+ if (item.getType() == type && item.getState().equals(stateName)) {
+ return item;
+ }
+ }
+ return null;
+ }
+
+ public LogItem getStateEvent(LogType type) throws OseeCoreException {
+ for (LogItem item : getLogItemsReversed()) {
+ if (item.getType() == type) {
+ return item;
+ }
+ }
+ return null;
+ }
+
+ public LogItem getCancelledLogItem() throws OseeCoreException {
+ if (cancelledLogItem == null) {
+ cancelledLogItem = getStateEvent(LogType.StateEntered, DefaultTeamState.Cancelled.name());
+ }
+ return cancelledLogItem;
+ }
+
+ public LogItem getCompletedLogItem() throws OseeCoreException {
+ if (completedLogItem == null) {
+ completedLogItem = getStateEvent(LogType.StateEntered, DefaultTeamState.Completed.name());
+ }
+ return completedLogItem;
+ }
} \ No newline at end of file
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/ATSNote.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/ATSNote.java
index 6aa14dd819d..6f33e32fb15 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/ATSNote.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/ATSNote.java
@@ -1,209 +1,207 @@
-/*******************************************************************************
- * 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.artifact;
-
-import java.lang.ref.WeakReference;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Date;
-import java.util.List;
-import java.util.logging.Level;
-import org.eclipse.osee.ats.NoteType;
-import org.eclipse.osee.ats.internal.AtsPlugin;
-import org.eclipse.osee.framework.core.data.SystemUser;
-import org.eclipse.osee.framework.core.exception.OseeCoreException;
-import org.eclipse.osee.framework.core.exception.OseeStateException;
-import org.eclipse.osee.framework.core.exception.UserNotInDatabase;
-import org.eclipse.osee.framework.jdk.core.util.Strings;
-import org.eclipse.osee.framework.jdk.core.util.xml.Jaxp;
-import org.eclipse.osee.framework.logging.OseeLevel;
-import org.eclipse.osee.framework.logging.OseeLog;
-import org.eclipse.osee.framework.skynet.core.User;
-import org.eclipse.osee.framework.skynet.core.UserManager;
-import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.NodeList;
-
-/**
- * @author Donald G. Dunne
- */
-public class ATSNote {
- private final WeakReference<Artifact> artifactRef;
- private boolean enabled = true;
- private static String ATS_NOTE_TAG = "AtsNote";
- private static String LOG_ITEM_TAG = "Item";
-
- public ATSNote(Artifact artifact) {
- this.artifactRef = new WeakReference<Artifact>(artifact);
- }
-
- public Artifact getArtifact() throws OseeStateException {
- if (artifactRef.get() == null) {
- throw new OseeStateException("Artifact has been garbage collected");
- }
- return artifactRef.get();
- }
-
- public void addNote(NoteType type, String state, String msg, User user) {
- addNote(type, state, msg, new Date(), user);
- }
-
- public void addNoteItem(NoteItem noteItem) {
- addNote(noteItem.getType(), noteItem.getState(), noteItem.getMsg(), noteItem.getDate(), noteItem.getUser());
- }
-
- public void addNote(NoteType type, String state, String msg, Date date, User user) {
- if (!enabled) {
- return;
- }
- NoteItem logItem = new NoteItem(type, state, date.getTime() + "", user, msg);
- List<NoteItem> logItems = getNoteItems();
- if (logItems.isEmpty()) {
- logItems = Arrays.asList(logItem);
- } else {
- logItems.add(logItem);
- }
- saveNoteItems(logItems);
- }
-
- public static List<NoteItem> getNoteItems(String str, String hrid) {
- List<NoteItem> logItems = new ArrayList<NoteItem>();
- try {
- if (Strings.isValid(str)) {
- NodeList nodes = Jaxp.readXmlDocument(str).getElementsByTagName(LOG_ITEM_TAG);
- for (int i = 0; i < nodes.getLength(); i++) {
- Element element = (Element) nodes.item(i);
- try {
- User user = UserManager.getUserByUserId(element.getAttribute("userId"));
- NoteItem item =
- new NoteItem(element.getAttribute("type"), element.getAttribute("state"),
- element.getAttribute("date"), user, element.getAttribute("msg"));
- logItems.add(item);
- } catch (UserNotInDatabase ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, String.format("Error parsing notes for [%s]", hrid), ex);
- NoteItem item =
- new NoteItem(element.getAttribute("type"), element.getAttribute("state"),
- element.getAttribute("date"), UserManager.getUser(SystemUser.Guest),
- element.getAttribute("msg"));
- logItems.add(item);
- }
- }
- }
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
- }
- return logItems;
- }
-
- public List<NoteItem> getNoteItems() {
- try {
+/*******************************************************************************
+ * 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.artifact;
+
+import java.lang.ref.WeakReference;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Date;
+import java.util.List;
+import java.util.logging.Level;
+import org.eclipse.osee.ats.NoteType;
+import org.eclipse.osee.ats.internal.AtsPlugin;
+import org.eclipse.osee.framework.core.data.SystemUser;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.core.exception.OseeStateException;
+import org.eclipse.osee.framework.core.exception.UserNotInDatabase;
+import org.eclipse.osee.framework.jdk.core.util.Strings;
+import org.eclipse.osee.framework.jdk.core.util.xml.Jaxp;
+import org.eclipse.osee.framework.logging.OseeLevel;
+import org.eclipse.osee.framework.logging.OseeLog;
+import org.eclipse.osee.framework.skynet.core.User;
+import org.eclipse.osee.framework.skynet.core.UserManager;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NodeList;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class ATSNote {
+ private final WeakReference<Artifact> artifactRef;
+ private boolean enabled = true;
+ private static String ATS_NOTE_TAG = "AtsNote";
+ private static String LOG_ITEM_TAG = "Item";
+
+ public ATSNote(Artifact artifact) {
+ this.artifactRef = new WeakReference<Artifact>(artifact);
+ }
+
+ public Artifact getArtifact() throws OseeStateException {
+ if (artifactRef.get() == null) {
+ throw new OseeStateException("Artifact has been garbage collected");
+ }
+ return artifactRef.get();
+ }
+
+ public void addNote(NoteType type, String state, String msg, User user) {
+ addNote(type, state, msg, new Date(), user);
+ }
+
+ public void addNoteItem(NoteItem noteItem) {
+ addNote(noteItem.getType(), noteItem.getState(), noteItem.getMsg(), noteItem.getDate(), noteItem.getUser());
+ }
+
+ public void addNote(NoteType type, String state, String msg, Date date, User user) {
+ if (!enabled) {
+ return;
+ }
+ NoteItem logItem = new NoteItem(type, state, date.getTime() + "", user, msg);
+ List<NoteItem> logItems = getNoteItems();
+ if (logItems.isEmpty()) {
+ logItems = Arrays.asList(logItem);
+ } else {
+ logItems.add(logItem);
+ }
+ saveNoteItems(logItems);
+ }
+
+ public static List<NoteItem> getNoteItems(String str, String hrid) {
+ List<NoteItem> logItems = new ArrayList<NoteItem>();
+ try {
+ if (Strings.isValid(str)) {
+ NodeList nodes = Jaxp.readXmlDocument(str).getElementsByTagName(LOG_ITEM_TAG);
+ for (int i = 0; i < nodes.getLength(); i++) {
+ Element element = (Element) nodes.item(i);
+ try {
+ User user = UserManager.getUserByUserId(element.getAttribute("userId"));
+ NoteItem item =
+ new NoteItem(element.getAttribute("type"), element.getAttribute("state"),
+ element.getAttribute("date"), user, element.getAttribute("msg"));
+ logItems.add(item);
+ } catch (UserNotInDatabase ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, String.format("Error parsing notes for [%s]", hrid), ex);
+ NoteItem item =
+ new NoteItem(element.getAttribute("type"), element.getAttribute("state"),
+ element.getAttribute("date"), UserManager.getUser(SystemUser.Guest),
+ element.getAttribute("msg"));
+ logItems.add(item);
+ }
+ }
+ }
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
+ }
+ return logItems;
+ }
+
+ public List<NoteItem> getNoteItems() {
+ try {
String xml = getArtifact().getSoleAttributeValue(AtsAttributeTypes.StateNotes, "");
- if (Strings.isValid(xml)) {
- return getNoteItems(xml, getArtifact().getHumanReadableId());
- }
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
- }
- return Collections.emptyList();
- }
-
- public void saveNoteItems(List<NoteItem> items) {
- try {
- Document doc = Jaxp.newDocument();
- Element rootElement = doc.createElement(ATS_NOTE_TAG);
- doc.appendChild(rootElement);
- for (NoteItem item : items) {
- Element element = doc.createElement(LOG_ITEM_TAG);
- element.setAttribute("type", item.getType().name());
- element.setAttribute("state", item.getState());
- element.setAttribute("date", item.getDate().getTime() + "");
- element.setAttribute("userId", item.getUser().getUserId());
- element.setAttribute("msg", item.getMsg());
- rootElement.appendChild(element);
- }
- getArtifact().setSoleAttributeValue(AtsAttributeTypes.StateNotes,
- Jaxp.getDocumentXml(doc));
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, "Can't create ats note document", ex);
- }
- }
-
- /**
- * Display Note Table; If state == null, only display non-state notes Otherwise, show only notes associated with
- * state
- *
- * @param state
- */
- public String getTable(String state) {
- ArrayList<NoteItem> showNotes = new ArrayList<NoteItem>();
- List<NoteItem> noteItems = getNoteItems();
- try {
+ if (Strings.isValid(xml)) {
+ return getNoteItems(xml, getArtifact().getHumanReadableId());
+ }
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
+ }
+ return Collections.emptyList();
+ }
+
+ public void saveNoteItems(List<NoteItem> items) {
+ try {
+ Document doc = Jaxp.newDocument();
+ Element rootElement = doc.createElement(ATS_NOTE_TAG);
+ doc.appendChild(rootElement);
+ for (NoteItem item : items) {
+ Element element = doc.createElement(LOG_ITEM_TAG);
+ element.setAttribute("type", item.getType().name());
+ element.setAttribute("state", item.getState());
+ element.setAttribute("date", item.getDate().getTime() + "");
+ element.setAttribute("userId", item.getUser().getUserId());
+ element.setAttribute("msg", item.getMsg());
+ rootElement.appendChild(element);
+ }
+ getArtifact().setSoleAttributeValue(AtsAttributeTypes.StateNotes, Jaxp.getDocumentXml(doc));
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, "Can't create ats note document", ex);
+ }
+ }
+
+ /**
+ * Display Note Table; If state == null, only display non-state notes Otherwise, show only notes associated with
+ * state
+ *
+ */
+ public String getTable(String state) {
+ ArrayList<NoteItem> showNotes = new ArrayList<NoteItem>();
+ List<NoteItem> noteItems = getNoteItems();
+ try {
if (!getArtifact().isAttributeTypeValid(AtsAttributeTypes.StateNotes)) {
- return "";
- }
- } catch (OseeCoreException ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- return "";
- }
-
- for (NoteItem li : noteItems) {
- if (state == null) {
- if (li.getState().equals("")) {
- showNotes.add(li);
- }
- } else if (state.equals("ALL") || li.getState().equals(state)) {
- showNotes.add(li);
- }
- }
- if (showNotes.isEmpty()) {
- return "";
- }
- StringBuilder builder = new StringBuilder();
- builder.append("<TABLE BORDER=\"1\" cellspacing=\"1\" cellpadding=\"3%\" width=\"100%\"><THEAD><TR><TH>Type</TH><TH>State</TH>" + "<TH>Message</TH><TH>User</TH><TH>Date</TH></THEAD></TR>");
- for (NoteItem note : showNotes) {
- User user = note.getUser();
- String name = "";
- if (user != null) {
- name = user.getName();
- if (!Strings.isValid(name)) {
- name = user.getName();
- }
- }
- builder.append("<TR>");
- builder.append("<TD>" + note.getType() + "</TD>");
- builder.append("<TD>" + (note.getState().equals("") ? "," : note.getState()) + "</TD>");
- builder.append("<TD>" + (note.getMsg().equals("") ? "," : note.getMsg()) + "</TD>");
-
- if (user != null && user.isMe()) {
- builder.append("<TD bgcolor=\"#CCCCCC\">" + name + "</TD>");
- } else {
- builder.append("<TD>" + name + "</TD>");
- }
-
- builder.append("<TD>" + new SimpleDateFormat("MM/dd/yyyy h:mm a").format(note.getDate()) + "</TD>");
- builder.append("</TR>");
- }
- builder.append("</TABLE>");
- return builder.toString();
- }
-
- public boolean isEnabled() {
- return enabled;
- }
-
- public void setEnabled(boolean enabled) {
- this.enabled = enabled;
- }
-
+ return "";
+ }
+ } catch (OseeCoreException ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ return "";
+ }
+
+ for (NoteItem li : noteItems) {
+ if (state == null) {
+ if (li.getState().equals("")) {
+ showNotes.add(li);
+ }
+ } else if (state.equals("ALL") || li.getState().equals(state)) {
+ showNotes.add(li);
+ }
+ }
+ if (showNotes.isEmpty()) {
+ return "";
+ }
+ StringBuilder builder = new StringBuilder();
+ builder.append("<TABLE BORDER=\"1\" cellspacing=\"1\" cellpadding=\"3%\" width=\"100%\"><THEAD><TR><TH>Type</TH><TH>State</TH>" + "<TH>Message</TH><TH>User</TH><TH>Date</TH></THEAD></TR>");
+ for (NoteItem note : showNotes) {
+ User user = note.getUser();
+ String name = "";
+ if (user != null) {
+ name = user.getName();
+ if (!Strings.isValid(name)) {
+ name = user.getName();
+ }
+ }
+ builder.append("<TR>");
+ builder.append("<TD>" + note.getType() + "</TD>");
+ builder.append("<TD>" + (note.getState().equals("") ? "," : note.getState()) + "</TD>");
+ builder.append("<TD>" + (note.getMsg().equals("") ? "," : note.getMsg()) + "</TD>");
+
+ if (user != null && user.isMe()) {
+ builder.append("<TD bgcolor=\"#CCCCCC\">" + name + "</TD>");
+ } else {
+ builder.append("<TD>" + name + "</TD>");
+ }
+
+ builder.append("<TD>" + new SimpleDateFormat("MM/dd/yyyy h:mm a").format(note.getDate()) + "</TD>");
+ builder.append("</TR>");
+ }
+ builder.append("</TABLE>");
+ return builder.toString();
+ }
+
+ public boolean isEnabled() {
+ return enabled;
+ }
+
+ public void setEnabled(boolean enabled) {
+ this.enabled = enabled;
+ }
+
} \ No newline at end of file
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/ActionArtifact.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/ActionArtifact.java
index cac9fe44505..9631c3d8e5a 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/ActionArtifact.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/ActionArtifact.java
@@ -1,1261 +1,1261 @@
-/*******************************************************************************
- * 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.artifact;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Date;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.CopyOnWriteArrayList;
-import java.util.logging.Level;
-import org.eclipse.nebula.widgets.xviewer.XViewerCells;
-import org.eclipse.osee.ats.actions.wizard.IAtsTeamWorkflow;
-import org.eclipse.osee.ats.artifact.ATSLog.LogType;
-import org.eclipse.osee.ats.internal.AtsPlugin;
-import org.eclipse.osee.ats.util.AtsArtifactTypes;
-import org.eclipse.osee.ats.util.AtsPriority.PriorityType;
-import org.eclipse.osee.ats.util.AtsRelationTypes;
-import org.eclipse.osee.ats.util.AtsUtil;
-import org.eclipse.osee.ats.util.widgets.dialog.AICheckTreeDialog;
-import org.eclipse.osee.ats.world.IWorldViewArtifact;
-import org.eclipse.osee.framework.core.data.IArtifactType;
-import org.eclipse.osee.framework.core.enums.Active;
-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.core.exception.OseeDataStoreException;
-import org.eclipse.osee.framework.core.model.Branch;
-import org.eclipse.osee.framework.core.model.type.ArtifactType;
-import org.eclipse.osee.framework.jdk.core.util.Collections;
-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.UserManager;
-import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
-import org.eclipse.osee.framework.skynet.core.artifact.ArtifactFactory;
-import org.eclipse.osee.framework.skynet.core.artifact.ArtifactTypeManager;
-import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction;
-import org.eclipse.osee.framework.skynet.core.utility.Artifacts;
-import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
-import org.eclipse.osee.framework.ui.plugin.util.Result;
-import org.eclipse.osee.framework.ui.skynet.util.ChangeType;
-import org.eclipse.osee.framework.ui.skynet.widgets.XDate;
-import org.eclipse.swt.graphics.Image;
-
-/**
- * @author Donald G. Dunne
- */
-public class ActionArtifact extends ATSArtifact implements IWorldViewArtifact {
-
- public static enum CreateTeamOption {
- Duplicate_If_Exists; // If option exists, then duplication of workflow of same team definition is allowed
- };
-
- public ActionArtifact(ArtifactFactory parentFactory, String guid, String humanReadableId, Branch branch, ArtifactType artifactType) throws OseeDataStoreException {
- super(parentFactory, guid, humanReadableId, branch, artifactType);
- }
-
- public void resetAttributesOffChildren(SkynetTransaction transaction) throws OseeCoreException {
- resetChangeTypeOffChildren();
- resetPriorityOffChildren();
- resetUserCommunityOffChildren();
- resetTitleOffChildren();
- resetValidationOffChildren();
- resetDescriptionOffChildren();
- persist(transaction);
- }
-
- public boolean hasAtsWorldChildren() {
- return true;
- }
-
- public Set<ActionableItemArtifact> getActionableItems() throws OseeCoreException {
- Set<ActionableItemArtifact> aias = new HashSet<ActionableItemArtifact>();
- for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
- aias.addAll(team.getActionableItemsDam().getActionableItems());
- }
- return aias;
- }
-
- /**
- * Reset Action title only if all children are titled the same
- */
- private void resetTitleOffChildren() throws OseeCoreException {
- String title = "";
- for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
- if (title.equals("")) {
- title = team.getName();
- } else if (!title.equals(team.getName())) {
- return;
- }
- }
- if (!title.equals(getName())) {
- setName(title);
- }
- }
-
- // Set validation to true if any require validation
- private void resetValidationOffChildren() throws OseeCoreException {
- boolean validationRequired = false;
- for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
+/*******************************************************************************
+ * 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.artifact;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.logging.Level;
+import org.eclipse.nebula.widgets.xviewer.XViewerCells;
+import org.eclipse.osee.ats.actions.wizard.IAtsTeamWorkflow;
+import org.eclipse.osee.ats.artifact.ATSLog.LogType;
+import org.eclipse.osee.ats.internal.AtsPlugin;
+import org.eclipse.osee.ats.util.AtsArtifactTypes;
+import org.eclipse.osee.ats.util.AtsPriority.PriorityType;
+import org.eclipse.osee.ats.util.AtsRelationTypes;
+import org.eclipse.osee.ats.util.AtsUtil;
+import org.eclipse.osee.ats.util.widgets.dialog.AICheckTreeDialog;
+import org.eclipse.osee.ats.world.IWorldViewArtifact;
+import org.eclipse.osee.framework.core.data.IArtifactType;
+import org.eclipse.osee.framework.core.enums.Active;
+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.core.exception.OseeDataStoreException;
+import org.eclipse.osee.framework.core.model.Branch;
+import org.eclipse.osee.framework.core.model.type.ArtifactType;
+import org.eclipse.osee.framework.jdk.core.util.Collections;
+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.UserManager;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactFactory;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactTypeManager;
+import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction;
+import org.eclipse.osee.framework.skynet.core.utility.Artifacts;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
+import org.eclipse.osee.framework.ui.plugin.util.Result;
+import org.eclipse.osee.framework.ui.skynet.util.ChangeType;
+import org.eclipse.osee.framework.ui.skynet.widgets.XDate;
+import org.eclipse.swt.graphics.Image;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class ActionArtifact extends ATSArtifact implements IWorldViewArtifact {
+
+ public static enum CreateTeamOption {
+ Duplicate_If_Exists; // If option exists, then duplication of workflow of same team definition is allowed
+ };
+
+ public ActionArtifact(ArtifactFactory parentFactory, String guid, String humanReadableId, Branch branch, ArtifactType artifactType) throws OseeDataStoreException {
+ super(parentFactory, guid, humanReadableId, branch, artifactType);
+ }
+
+ public void resetAttributesOffChildren(SkynetTransaction transaction) throws OseeCoreException {
+ resetChangeTypeOffChildren();
+ resetPriorityOffChildren();
+ resetUserCommunityOffChildren();
+ resetTitleOffChildren();
+ resetValidationOffChildren();
+ resetDescriptionOffChildren();
+ persist(transaction);
+ }
+
+ public boolean hasAtsWorldChildren() {
+ return true;
+ }
+
+ public Set<ActionableItemArtifact> getActionableItems() throws OseeCoreException {
+ Set<ActionableItemArtifact> aias = new HashSet<ActionableItemArtifact>();
+ for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
+ aias.addAll(team.getActionableItemsDam().getActionableItems());
+ }
+ return aias;
+ }
+
+ /**
+ * Reset Action title only if all children are titled the same
+ */
+ private void resetTitleOffChildren() throws OseeCoreException {
+ String title = "";
+ for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
+ if (title.equals("")) {
+ title = team.getName();
+ } else if (!title.equals(team.getName())) {
+ return;
+ }
+ }
+ if (!title.equals(getName())) {
+ setName(title);
+ }
+ }
+
+ // Set validation to true if any require validation
+ private void resetValidationOffChildren() throws OseeCoreException {
+ boolean validationRequired = false;
+ for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
if (team.getSoleAttributeValue(AtsAttributeTypes.ValidationRequired, false)) {
- validationRequired = true;
- }
- }
+ validationRequired = true;
+ }
+ }
if (validationRequired != getSoleAttributeValue(AtsAttributeTypes.ValidationRequired, false)) {
setSoleAttributeValue(AtsAttributeTypes.ValidationRequired, validationRequired);
- }
- }
-
- /**
- * Reset Action title only if all children are titled the same
- */
- private void resetDescriptionOffChildren() throws OseeCoreException {
- String desc = "";
- for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
- if (desc.equals("")) {
+ }
+ }
+
+ /**
+ * Reset Action title only if all children are titled the same
+ */
+ private void resetDescriptionOffChildren() throws OseeCoreException {
+ String desc = "";
+ for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
+ if (desc.equals("")) {
desc = team.getSoleAttributeValue(AtsAttributeTypes.Description, "");
} else if (!desc.equals(team.getSoleAttributeValue(AtsAttributeTypes.Description, ""))) {
- return;
- }
- }
+ return;
+ }
+ }
if (!desc.equals(getSoleAttributeValue(AtsAttributeTypes.Description, ""))) {
setSoleAttributeValue(AtsAttributeTypes.Description, desc);
- }
- if (desc.equals("")) {
+ }
+ if (desc.equals("")) {
deleteSoleAttribute(AtsAttributeTypes.Description);
- }
- }
-
- private void resetChangeTypeOffChildren() throws OseeCoreException {
- ChangeType changeType = null;
- Collection<TeamWorkFlowArtifact> teamArts = getTeamWorkFlowArtifacts();
- if (teamArts.size() == 1) {
- changeType = teamArts.iterator().next().getChangeType();
- } else {
- for (TeamWorkFlowArtifact team : teamArts) {
- if (!team.isCancelled()) {
- if (changeType == null) {
- changeType = team.getChangeType();
- } else if (changeType != team.getChangeType()) {
- return;
- }
- }
- }
- }
- if (changeType != null && getChangeType() != changeType) {
- setChangeType(changeType);
- }
- return;
- }
-
- private void resetPriorityOffChildren() throws OseeCoreException {
- PriorityType priorityType = null;
- Collection<TeamWorkFlowArtifact> teamArts = getTeamWorkFlowArtifacts();
- if (teamArts.size() == 1) {
- priorityType = teamArts.iterator().next().getPriority();
- } else {
- for (TeamWorkFlowArtifact team : teamArts) {
- if (!team.isCancelled()) {
- if (priorityType == null) {
- priorityType = team.getPriority();
- } else if (priorityType != team.getPriority()) {
- return;
- }
- }
- }
- }
- if (priorityType != null && getPriority() != priorityType) {
- setPriority(priorityType);
- }
- return;
- }
-
- private void resetUserCommunityOffChildren() throws OseeCoreException {
- Set<String> userComs = new HashSet<String>();
- for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
- if (!team.isCancelled()) {
+ }
+ }
+
+ private void resetChangeTypeOffChildren() throws OseeCoreException {
+ ChangeType changeType = null;
+ Collection<TeamWorkFlowArtifact> teamArts = getTeamWorkFlowArtifacts();
+ if (teamArts.size() == 1) {
+ changeType = teamArts.iterator().next().getChangeType();
+ } else {
+ for (TeamWorkFlowArtifact team : teamArts) {
+ if (!team.isCancelled()) {
+ if (changeType == null) {
+ changeType = team.getChangeType();
+ } else if (changeType != team.getChangeType()) {
+ return;
+ }
+ }
+ }
+ }
+ if (changeType != null && getChangeType() != changeType) {
+ setChangeType(changeType);
+ }
+ return;
+ }
+
+ private void resetPriorityOffChildren() throws OseeCoreException {
+ PriorityType priorityType = null;
+ Collection<TeamWorkFlowArtifact> teamArts = getTeamWorkFlowArtifacts();
+ if (teamArts.size() == 1) {
+ priorityType = teamArts.iterator().next().getPriority();
+ } else {
+ for (TeamWorkFlowArtifact team : teamArts) {
+ if (!team.isCancelled()) {
+ if (priorityType == null) {
+ priorityType = team.getPriority();
+ } else if (priorityType != team.getPriority()) {
+ return;
+ }
+ }
+ }
+ }
+ if (priorityType != null && getPriority() != priorityType) {
+ setPriority(priorityType);
+ }
+ return;
+ }
+
+ private void resetUserCommunityOffChildren() throws OseeCoreException {
+ Set<String> userComs = new HashSet<String>();
+ for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
+ if (!team.isCancelled()) {
userComs.addAll(team.getAttributesToStringList(AtsAttributeTypes.UserCommunity));
- }
- }
+ }
+ }
setAttributeValues(AtsAttributeTypes.UserCommunity, userComs);
- }
-
- public void setChangeType(ChangeType type) throws OseeCoreException {
+ }
+
+ public void setChangeType(ChangeType type) throws OseeCoreException {
setSoleAttributeValue(AtsAttributeTypes.ChangeType, type.name());
- }
-
- public ChangeType getChangeType() throws OseeCoreException {
+ }
+
+ public ChangeType getChangeType() throws OseeCoreException {
return ChangeType.getChangeType(getSoleAttributeValue(AtsAttributeTypes.ChangeType, ""));
- }
-
- public PriorityType getPriority() throws OseeCoreException {
+ }
+
+ public PriorityType getPriority() throws OseeCoreException {
return PriorityType.getPriority(getSoleAttributeValue(AtsAttributeTypes.PriorityType, ""));
- }
-
- public void setPriority(PriorityType type) throws OseeCoreException {
+ }
+
+ public void setPriority(PriorityType type) throws OseeCoreException {
setSoleAttributeValue(AtsAttributeTypes.PriorityType, type.getShortName());
- }
-
- public Collection<TeamWorkFlowArtifact> getTeamWorkFlowArtifacts() throws OseeCoreException {
- return getRelatedArtifactsUnSorted(AtsRelationTypes.ActionToWorkflow_WorkFlow, TeamWorkFlowArtifact.class);
- }
-
- @Override
- public String getWorldViewType() {
- return AtsArtifactTypes.Action.getName();
- }
-
- @Override
- public String getWorldViewTitle() {
- return getName();
- }
-
- @Override
- public ChangeType getWorldViewChangeType() throws OseeCoreException {
+ }
+
+ public Collection<TeamWorkFlowArtifact> getTeamWorkFlowArtifacts() throws OseeCoreException {
+ return getRelatedArtifactsUnSorted(AtsRelationTypes.ActionToWorkflow_WorkFlow, TeamWorkFlowArtifact.class);
+ }
+
+ @Override
+ public String getWorldViewType() {
+ return AtsArtifactTypes.Action.getName();
+ }
+
+ @Override
+ public String getWorldViewTitle() {
+ return getName();
+ }
+
+ @Override
+ public ChangeType getWorldViewChangeType() throws OseeCoreException {
return ChangeType.getChangeType(getSoleAttributeValue(AtsAttributeTypes.ChangeType, ""));
- }
-
- @Override
- public String getWorldViewBranchStatus() throws OseeCoreException {
- StringBuffer sb = new StringBuffer();
- for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
- if (!team.getWorldViewBranchStatus().equals("")) {
- sb.append(team.getWorldViewBranchStatus() + ", ");
- }
- }
- return sb.toString().replaceFirst(", $", "");
- }
-
- @Override
- public String getWorldViewPoint() throws OseeCoreException {
- StringBuffer sb = new StringBuffer();
- for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
- if (!team.getWorldViewPoint().equals("")) {
- sb.append(team.getWorldViewPoint() + ", ");
- }
- }
- return sb.toString().replaceFirst(", $", "");
- }
-
- @Override
- public String getWorldViewNumberOfTasks() throws OseeCoreException {
- StringBuffer sb = new StringBuffer();
- for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
- if (!team.getWorldViewNumberOfTasks().equals("")) {
- sb.append(team.getWorldViewNumberOfTasks() + ", ");
- }
- }
- return sb.toString().replaceFirst(", $", "");
- }
-
- @Override
- public String getWorldViewNumberOfTasksRemaining() throws OseeCoreException {
- StringBuffer sb = new StringBuffer();
- for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
- if (!team.getWorldViewNumberOfTasksRemaining().equals("")) {
- sb.append(team.getWorldViewNumberOfTasksRemaining() + ", ");
- }
- }
- return sb.toString().replaceFirst(", $", "");
- }
-
- @Override
- public String getWorldViewState() throws OseeCoreException {
- Set<String> strs = new HashSet<String>();
- for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
- strs.add(team.getWorldViewState());
- }
- return Collections.toString(";", strs);
- }
-
- @Override
- public String getWorldViewDaysInCurrentState() throws OseeCoreException {
- Set<String> strs = new HashSet<String>();
- for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
- strs.add(team.getWorldViewDaysInCurrentState());
- }
- return Collections.toString(";", strs);
- }
-
- @Override
- public String getWorldViewActivePoc() throws OseeCoreException {
- Set<User> pocs = new HashSet<User>();
- Set<User> implementers = new HashSet<User>();
- for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
- if (team.isCancelledOrCompleted()) {
- implementers.addAll(team.getImplementers());
- } else {
- pocs.addAll(team.getStateMgr().getAssignees());
- }
- }
- return Artifacts.toString("; ", pocs) + (implementers.size() > 0 ? "(" + Artifacts.toString("; ", implementers) + ")" : "");
- }
-
- @Override
- public String getWorldViewCreatedDateStr() throws OseeCoreException {
- Set<String> strs = new HashSet<String>();
- for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
- Date date = team.getWorldViewCreatedDate();
- if (date == null) {
- strs.add("");
- } else {
- strs.add(XDate.getDateStr(team.getWorldViewCreatedDate(), XDate.MMDDYYHHMM));
- }
- }
- return Collections.toString(";", strs);
- }
-
- @Override
- public Date getWorldViewCreatedDate() throws OseeCoreException {
- return getTeamWorkFlowArtifacts().iterator().next().getWorldViewCreatedDate();
- }
-
- @Override
- public String getWorldViewID() {
- return getHumanReadableId();
- }
-
- @Override
- public String getWorldViewPriority() throws OseeCoreException {
+ }
+
+ @Override
+ public String getWorldViewBranchStatus() throws OseeCoreException {
+ StringBuffer sb = new StringBuffer();
+ for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
+ if (!team.getWorldViewBranchStatus().equals("")) {
+ sb.append(team.getWorldViewBranchStatus() + ", ");
+ }
+ }
+ return sb.toString().replaceFirst(", $", "");
+ }
+
+ @Override
+ public String getWorldViewPoint() throws OseeCoreException {
+ StringBuffer sb = new StringBuffer();
+ for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
+ if (!team.getWorldViewPoint().equals("")) {
+ sb.append(team.getWorldViewPoint() + ", ");
+ }
+ }
+ return sb.toString().replaceFirst(", $", "");
+ }
+
+ @Override
+ public String getWorldViewNumberOfTasks() throws OseeCoreException {
+ StringBuffer sb = new StringBuffer();
+ for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
+ if (!team.getWorldViewNumberOfTasks().equals("")) {
+ sb.append(team.getWorldViewNumberOfTasks() + ", ");
+ }
+ }
+ return sb.toString().replaceFirst(", $", "");
+ }
+
+ @Override
+ public String getWorldViewNumberOfTasksRemaining() throws OseeCoreException {
+ StringBuffer sb = new StringBuffer();
+ for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
+ if (!team.getWorldViewNumberOfTasksRemaining().equals("")) {
+ sb.append(team.getWorldViewNumberOfTasksRemaining() + ", ");
+ }
+ }
+ return sb.toString().replaceFirst(", $", "");
+ }
+
+ @Override
+ public String getWorldViewState() throws OseeCoreException {
+ Set<String> strs = new HashSet<String>();
+ for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
+ strs.add(team.getWorldViewState());
+ }
+ return Collections.toString(";", strs);
+ }
+
+ @Override
+ public String getWorldViewDaysInCurrentState() throws OseeCoreException {
+ Set<String> strs = new HashSet<String>();
+ for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
+ strs.add(team.getWorldViewDaysInCurrentState());
+ }
+ return Collections.toString(";", strs);
+ }
+
+ @Override
+ public String getWorldViewActivePoc() throws OseeCoreException {
+ Set<User> pocs = new HashSet<User>();
+ Set<User> implementers = new HashSet<User>();
+ for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
+ if (team.isCancelledOrCompleted()) {
+ implementers.addAll(team.getImplementers());
+ } else {
+ pocs.addAll(team.getStateMgr().getAssignees());
+ }
+ }
+ return Artifacts.toString("; ", pocs) + (implementers.size() > 0 ? "(" + Artifacts.toString("; ", implementers) + ")" : "");
+ }
+
+ @Override
+ public String getWorldViewCreatedDateStr() throws OseeCoreException {
+ Set<String> strs = new HashSet<String>();
+ for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
+ Date date = team.getWorldViewCreatedDate();
+ if (date == null) {
+ strs.add("");
+ } else {
+ strs.add(XDate.getDateStr(team.getWorldViewCreatedDate(), XDate.MMDDYYHHMM));
+ }
+ }
+ return Collections.toString(";", strs);
+ }
+
+ @Override
+ public Date getWorldViewCreatedDate() throws OseeCoreException {
+ return getTeamWorkFlowArtifacts().iterator().next().getWorldViewCreatedDate();
+ }
+
+ @Override
+ public String getWorldViewID() {
+ return getHumanReadableId();
+ }
+
+ @Override
+ public String getWorldViewPriority() throws OseeCoreException {
return PriorityType.getPriority(getSoleAttributeValue(AtsAttributeTypes.PriorityType, "")).getShortName();
- }
-
- @Override
- public Image getAssigneeImage() throws OseeCoreException {
- for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
- Image image = team.getAssigneeImage();
- if (image != null) {
- return image;
- }
- }
- return null;
- }
-
- @Override
- public String getWorldViewUserCommunity() throws OseeCoreException {
+ }
+
+ @Override
+ public Image getAssigneeImage() throws OseeCoreException {
+ for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
+ Image image = team.getAssigneeImage();
+ if (image != null) {
+ return image;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public String getWorldViewUserCommunity() throws OseeCoreException {
return getAttributesToString(AtsAttributeTypes.UserCommunity);
- }
-
- @Override
- public String getWorldViewActionableItems() throws OseeCoreException {
- Set<ActionableItemArtifact> aias = new HashSet<ActionableItemArtifact>();
- // Roll up if same for all children
- for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
- aias.addAll(team.getActionableItemsDam().getActionableItems());
- }
- return Artifacts.commaArts(aias);
- }
-
- @Override
- public void atsDelete(Set<Artifact> deleteArts, Map<Artifact, Object> allRelated) throws OseeCoreException {
- super.atsDelete(deleteArts, allRelated);
- // Delete all products
- for (TeamWorkFlowArtifact art : getRelatedArtifacts(AtsRelationTypes.ActionToWorkflow_WorkFlow,
- TeamWorkFlowArtifact.class)) {
- art.atsDelete(deleteArts, allRelated);
- }
- }
-
- @Override
- public String getWorldViewTeam() throws OseeCoreException {
- Set<TeamDefinitionArtifact> teams = new HashSet<TeamDefinitionArtifact>();
- // Roll up if same for all children
- for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
- teams.add(team.getTeamDefinition());
- }
- return Artifacts.commaArts(teams);
- }
-
- @Override
- public String getWorldViewOriginator() throws OseeCoreException {
- Set<String> strs = new HashSet<String>();
- for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
- strs.add(team.getWorldViewOriginator());
- }
- return Collections.toString(";", strs);
- }
-
- @Override
- public String getWorldViewCompletedDateStr() throws OseeCoreException {
- Set<String> strs = new HashSet<String>();
- for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
- strs.add(team.getWorldViewCompletedDateStr());
- }
- return Collections.toString(";", strs);
- }
-
- @Override
- public Date getWorldViewCompletedDate() throws OseeCoreException {
- return getTeamWorkFlowArtifacts().iterator().next().getWorldViewCompletedDate();
- }
-
- @Override
- public String getWorldViewCancelledDateStr() throws OseeCoreException {
- Set<String> strs = new HashSet<String>();
- for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
- strs.add(team.getWorldViewCancelledDateStr());
- }
- return Collections.toString(";", strs);
- }
-
- @Override
- public Date getWorldViewCancelledDate() throws OseeCoreException {
- return getTeamWorkFlowArtifacts().iterator().next().getWorldViewCancelledDate();
- }
-
- @Override
- public String getWorldViewResolution() throws OseeCoreException {
- Set<String> strs = new HashSet<String>();
- for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
- strs.add(team.getWorldViewResolution());
- }
- return Collections.toString(";", strs);
- }
-
- @Override
- public double getWorldViewRemainHours() throws OseeCoreException {
- double hours = 0;
- // Add up hours for all children
- for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
- hours += team.getWorldViewRemainHours();
- }
- return hours;
- }
-
- @Override
- public double getWorldViewManDaysNeeded() throws OseeCoreException {
- double hours = 0;
- // Add up hours for all children
- for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
- hours += team.getWorldViewManDaysNeeded();
- }
- return hours;
- }
-
- @Override
- public double getWorldViewEstimatedHours() throws OseeCoreException {
- double hours = 0;
- // Add up hours for all children
- for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
- hours += team.getWorldViewEstimatedHours();
- }
- return hours;
- }
-
- public int getWorldViewStatePercentComplete() throws OseeCoreException {
- if (getTeamWorkFlowArtifacts().size() == 1) {
- return getTeamWorkFlowArtifacts().iterator().next().getWorldViewStatePercentComplete();
- } else {
- double percent = 0;
- int items = 0;
- for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
- if (!team.isCancelled()) {
- percent += team.getWorldViewStatePercentComplete();
- items++;
- }
- }
- if (items > 0) {
- Double rollPercent = percent / items;
- return rollPercent.intValue();
- }
- }
- return 0;
- }
-
- @Override
- public String getWorldViewRelatedToState() {
- return "";
- }
-
- @Override
- public String getWorldViewNotes() throws OseeCoreException {
- Set<String> strs = new HashSet<String>();
- for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
- strs.add(team.getWorldViewNotes());
- }
- return Collections.toString(";", strs);
- }
-
- @Override
- public String getWorldViewGroups() throws OseeCoreException {
- Set<Artifact> groups = new HashSet<Artifact>();
- groups.addAll(getRelatedArtifacts(CoreRelationTypes.Universal_Grouping__Group));
- // Roll up if same for all children
- for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
- groups.addAll(team.getRelatedArtifacts(CoreRelationTypes.Universal_Grouping__Group));
- }
- return Artifacts.toString("; ", groups);
- }
-
- @Override
- public String getWorldViewGoals() throws OseeCoreException {
- return Artifacts.toString("; ", getRelatedArtifacts(AtsRelationTypes.Goal_Goal));
- }
-
- @Override
- public String getWorldViewNumeric1() throws OseeCoreException {
- Set<String> strs = new HashSet<String>();
- for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
- strs.add(team.getWorldViewNumeric1());
- }
- return Collections.toString(";", strs);
- }
-
- @Override
- public String getWorldViewNumeric2() throws OseeCoreException {
- Set<String> strs = new HashSet<String>();
- for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
- strs.add(team.getWorldViewNumeric2());
- }
- return Collections.toString(";", strs);
- }
-
- @Override
- public String getWorldViewCategory() throws OseeCoreException {
- Set<String> strs = new HashSet<String>();
- for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
- strs.add(team.getWorldViewCategory());
- }
- return Collections.toString(";", strs);
- }
-
- @Override
- public String getWorldViewGoalOrderVote() throws OseeCoreException {
+ }
+
+ @Override
+ public String getWorldViewActionableItems() throws OseeCoreException {
+ Set<ActionableItemArtifact> aias = new HashSet<ActionableItemArtifact>();
+ // Roll up if same for all children
+ for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
+ aias.addAll(team.getActionableItemsDam().getActionableItems());
+ }
+ return Artifacts.commaArts(aias);
+ }
+
+ @Override
+ public void atsDelete(Set<Artifact> deleteArts, Map<Artifact, Object> allRelated) throws OseeCoreException {
+ super.atsDelete(deleteArts, allRelated);
+ // Delete all products
+ for (TeamWorkFlowArtifact art : getRelatedArtifacts(AtsRelationTypes.ActionToWorkflow_WorkFlow,
+ TeamWorkFlowArtifact.class)) {
+ art.atsDelete(deleteArts, allRelated);
+ }
+ }
+
+ @Override
+ public String getWorldViewTeam() throws OseeCoreException {
+ Set<TeamDefinitionArtifact> teams = new HashSet<TeamDefinitionArtifact>();
+ // Roll up if same for all children
+ for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
+ teams.add(team.getTeamDefinition());
+ }
+ return Artifacts.commaArts(teams);
+ }
+
+ @Override
+ public String getWorldViewOriginator() throws OseeCoreException {
+ Set<String> strs = new HashSet<String>();
+ for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
+ strs.add(team.getWorldViewOriginator());
+ }
+ return Collections.toString(";", strs);
+ }
+
+ @Override
+ public String getWorldViewCompletedDateStr() throws OseeCoreException {
+ Set<String> strs = new HashSet<String>();
+ for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
+ strs.add(team.getWorldViewCompletedDateStr());
+ }
+ return Collections.toString(";", strs);
+ }
+
+ @Override
+ public Date getWorldViewCompletedDate() throws OseeCoreException {
+ return getTeamWorkFlowArtifacts().iterator().next().getWorldViewCompletedDate();
+ }
+
+ @Override
+ public String getWorldViewCancelledDateStr() throws OseeCoreException {
+ Set<String> strs = new HashSet<String>();
+ for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
+ strs.add(team.getWorldViewCancelledDateStr());
+ }
+ return Collections.toString(";", strs);
+ }
+
+ @Override
+ public Date getWorldViewCancelledDate() throws OseeCoreException {
+ return getTeamWorkFlowArtifacts().iterator().next().getWorldViewCancelledDate();
+ }
+
+ @Override
+ public String getWorldViewResolution() throws OseeCoreException {
+ Set<String> strs = new HashSet<String>();
+ for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
+ strs.add(team.getWorldViewResolution());
+ }
+ return Collections.toString(";", strs);
+ }
+
+ @Override
+ public double getWorldViewRemainHours() throws OseeCoreException {
+ double hours = 0;
+ // Add up hours for all children
+ for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
+ hours += team.getWorldViewRemainHours();
+ }
+ return hours;
+ }
+
+ @Override
+ public double getWorldViewManDaysNeeded() throws OseeCoreException {
+ double hours = 0;
+ // Add up hours for all children
+ for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
+ hours += team.getWorldViewManDaysNeeded();
+ }
+ return hours;
+ }
+
+ @Override
+ public double getWorldViewEstimatedHours() throws OseeCoreException {
+ double hours = 0;
+ // Add up hours for all children
+ for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
+ hours += team.getWorldViewEstimatedHours();
+ }
+ return hours;
+ }
+
+ public int getWorldViewStatePercentComplete() throws OseeCoreException {
+ if (getTeamWorkFlowArtifacts().size() == 1) {
+ return getTeamWorkFlowArtifacts().iterator().next().getWorldViewStatePercentComplete();
+ } else {
+ double percent = 0;
+ int items = 0;
+ for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
+ if (!team.isCancelled()) {
+ percent += team.getWorldViewStatePercentComplete();
+ items++;
+ }
+ }
+ if (items > 0) {
+ Double rollPercent = percent / items;
+ return rollPercent.intValue();
+ }
+ }
+ return 0;
+ }
+
+ @Override
+ public String getWorldViewRelatedToState() {
+ return "";
+ }
+
+ @Override
+ public String getWorldViewNotes() throws OseeCoreException {
+ Set<String> strs = new HashSet<String>();
+ for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
+ strs.add(team.getWorldViewNotes());
+ }
+ return Collections.toString(";", strs);
+ }
+
+ @Override
+ public String getWorldViewGroups() throws OseeCoreException {
+ Set<Artifact> groups = new HashSet<Artifact>();
+ groups.addAll(getRelatedArtifacts(CoreRelationTypes.Universal_Grouping__Group));
+ // Roll up if same for all children
+ for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
+ groups.addAll(team.getRelatedArtifacts(CoreRelationTypes.Universal_Grouping__Group));
+ }
+ return Artifacts.toString("; ", groups);
+ }
+
+ @Override
+ public String getWorldViewGoals() throws OseeCoreException {
+ return Artifacts.toString("; ", getRelatedArtifacts(AtsRelationTypes.Goal_Goal));
+ }
+
+ @Override
+ public String getWorldViewNumeric1() throws OseeCoreException {
+ Set<String> strs = new HashSet<String>();
+ for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
+ strs.add(team.getWorldViewNumeric1());
+ }
+ return Collections.toString(";", strs);
+ }
+
+ @Override
+ public String getWorldViewNumeric2() throws OseeCoreException {
+ Set<String> strs = new HashSet<String>();
+ for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
+ strs.add(team.getWorldViewNumeric2());
+ }
+ return Collections.toString(";", strs);
+ }
+
+ @Override
+ public String getWorldViewCategory() throws OseeCoreException {
+ Set<String> strs = new HashSet<String>();
+ for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
+ strs.add(team.getWorldViewCategory());
+ }
+ return Collections.toString(";", strs);
+ }
+
+ @Override
+ public String getWorldViewGoalOrderVote() throws OseeCoreException {
return getSoleAttributeValue(AtsAttributeTypes.GoalOrderVote, "");
- }
-
- @Override
- public String getWorldViewWorkPackage() throws OseeCoreException {
- Set<String> strs = new HashSet<String>();
- for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
- strs.add(team.getWorldViewWorkPackage());
- }
- return Collections.toString(";", strs);
- }
-
- @Override
- public String getWorldViewCategory2() throws OseeCoreException {
- Set<String> strs = new HashSet<String>();
- for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
- strs.add(team.getWorldViewCategory2());
- }
- return Collections.toString(";", strs);
- }
-
- @Override
- public String getWorldViewCategory3() throws OseeCoreException {
- Set<String> strs = new HashSet<String>();
- for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
- strs.add(team.getWorldViewCategory3());
- }
- return Collections.toString(";", strs);
- }
-
- @Override
- public String getWorldViewTargetedVersionStr() throws OseeCoreException {
- Set<String> strs = new HashSet<String>();
- for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
- strs.add(team.getWorldViewTargetedVersionStr());
- }
- return Collections.toString(";", strs);
- }
-
- @Override
- public String getHyperName() {
- return getName();
- }
-
- @Override
- public String getHyperType() {
- try {
- return getArtifactTypeName();
- } catch (Exception ex) {
- return ex.getLocalizedMessage();
- }
- }
-
- @Override
- public String getHyperState() {
- try {
- if (getTeamWorkFlowArtifacts().size() == 1) {
- return getTeamWorkFlowArtifacts().iterator().next().getHyperState();
- }
- } catch (Exception ex) {
- return XViewerCells.getCellExceptionString(ex);
- }
- return "";
- }
-
- @Override
- public String getHyperTargetVersion() {
- return null;
- }
-
- @Override
- public String getHyperAssignee() {
- try {
- if (getTeamWorkFlowArtifacts().size() == 1) {
- return getTeamWorkFlowArtifacts().iterator().next().getHyperAssignee();
- }
- } catch (Exception ex) {
- return XViewerCells.getCellExceptionString(ex);
- }
- return "";
- }
-
- @Override
- public Image getHyperAssigneeImage() throws OseeCoreException {
- if (getTeamWorkFlowArtifacts().size() == 1) {
- return getTeamWorkFlowArtifacts().iterator().next().getHyperAssigneeImage();
- }
- return null;
- }
-
- @Override
- public Artifact getHyperArtifact() {
- return this;
- }
-
- public Result editActionableItems() throws OseeCoreException {
- final AICheckTreeDialog diag =
- new AICheckTreeDialog(
- "Add Impacted Actionable Items",
- "Select New Impacted Actionable Items\n\n" + "Note: Un-selecting existing items will NOT remove the impact.\n" + "Team Workflow with no impact should be transitioned to Cancelled.",
- Active.Active);
-
- diag.setInitialAias(getActionableItems());
- if (diag.open() != 0) {
- return Result.FalseResult;
- }
-
- // ensure that at least one actionable item exists for each team after aias added/removed
- for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
- Set<ActionableItemArtifact> currentAias = team.getActionableItemsDam().getActionableItems();
- Collection<ActionableItemArtifact> checkedAias = diag.getChecked();
- for (ActionableItemArtifact aia : new CopyOnWriteArrayList<ActionableItemArtifact>(currentAias)) {
- if (!checkedAias.contains(aia)) {
- currentAias.remove(aia);
- }
- }
- if (currentAias.isEmpty()) {
- return new Result("Can not remove all actionable items for a team.\n\nActionable Items will go to 0 for [" +
- //
- team.getTeamName() + "][" + team.getHumanReadableId() + "]\n\nCancel team workflow instead.");
- }
- }
-
- final StringBuffer sb = new StringBuffer();
- SkynetTransaction transaction = new SkynetTransaction(AtsUtil.getAtsBranch(), "Edit Actionable Items");
-
- // Add new aias
- for (ActionableItemArtifact aia : diag.getChecked()) {
- Result result = addActionableItemToTeamsOrAddTeams(aia, UserManager.getUser(), transaction);
- sb.append(result.getText());
- }
- // Remove unchecked aias
- for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
- for (ActionableItemArtifact aia : team.getActionableItemsDam().getActionableItems()) {
- if (!diag.getChecked().contains(aia)) {
- team.getActionableItemsDam().removeActionableItem(aia);
- }
- }
- team.persist(transaction);
- }
-
- transaction.execute();
- return new Result(true, sb.toString());
- }
-
- public Result addActionableItemToTeamsOrAddTeams(ActionableItemArtifact aia, User originator, SkynetTransaction transaction) throws OseeCoreException {
- StringBuffer sb = new StringBuffer();
- for (TeamDefinitionArtifact tda : TeamDefinitionArtifact.getImpactedTeamDefs(Arrays.asList(aia))) {
- boolean teamExists = false;
- // Look for team workflow that is associated with this tda
- for (TeamWorkFlowArtifact teamArt : getTeamWorkFlowArtifacts()) {
- // If found
- if (teamArt.getTeamDefinition().equals(tda)) {
- // And workflow doesn't already have this actionable item,
- // ADD it
- if (!teamArt.getActionableItemsDam().getActionableItems().contains(aia)) {
- teamArt.getActionableItemsDam().addActionableItem(aia);
- teamArt.saveSMA(transaction);
- sb.append(aia.getName() + " => added to existing team workflow \"" + tda.getName() + "\"\n");
- teamExists = true;
- } else {
- sb.append(aia.getName() + " => already exists in team workflow \"" + tda.getName() + "\"\n");
- teamExists = true;
- }
- }
- }
- if (!teamExists) {
- TeamWorkFlowArtifact teamArt = createTeamWorkflow(tda, Arrays.asList(aia), tda.getLeads(), transaction);
- if (originator != null) {
- teamArt.getLog().setOriginator(originator);
- }
- teamArt.persist(transaction);
- sb.append(aia.getName() + " => added team workflow \"" + tda.getName() + "\"\n");
- }
- }
- return new Result(true, sb.toString());
- }
-
- public TeamWorkFlowArtifact createTeamWorkflow(TeamDefinitionArtifact teamDef, Collection<ActionableItemArtifact> actionableItems, Collection<User> assignees, SkynetTransaction transaction, CreateTeamOption... createTeamOption) throws OseeCoreException {
- String teamWorkflowArtifactName = AtsArtifactTypes.TeamWorkflow.getName();
- IAtsTeamWorkflow teamExt = null;
-
- // Check if any plugins want to create the team workflow themselves
- for (IAtsTeamWorkflow teamExtension : TeamWorkflowExtensions.getInstance().getAtsTeamWorkflowExtensions()) {
- boolean isResponsible = false;
- try {
- isResponsible = teamExtension.isResponsibleForTeamWorkflowCreation(teamDef, actionableItems);
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, Level.WARNING, ex);
- }
- if (isResponsible) {
- teamWorkflowArtifactName = teamExtension.getTeamWorkflowArtifactName(teamDef, actionableItems);
- teamExt = teamExtension;
- }
- }
-
- // NOTE: The persist of the workflow will auto-email the assignees
- TeamWorkFlowArtifact teamArt =
- createTeamWorkflow(teamDef, actionableItems, assignees, ArtifactTypeManager.getType(teamWorkflowArtifactName),
- transaction, createTeamOption);
- // Notify extension that workflow was created
- if (teamExt != null) {
- teamExt.teamWorkflowCreated(teamArt);
- }
- return teamArt;
- }
-
- public TeamWorkFlowArtifact createTeamWorkflow(TeamDefinitionArtifact teamDef, Collection<ActionableItemArtifact> actionableItems, Collection<User> assignees, IArtifactType artifactType, SkynetTransaction transaction, CreateTeamOption... createTeamOption) throws OseeCoreException {
- return createTeamWorkflow(teamDef, actionableItems, assignees, null, null, artifactType, transaction,
- createTeamOption);
- }
-
- public TeamWorkFlowArtifact createTeamWorkflow(TeamDefinitionArtifact teamDef, Collection<ActionableItemArtifact> actionableItems, Collection<User> assignees, String guid, String hrid, IArtifactType artifactType, SkynetTransaction transaction, CreateTeamOption... createTeamOption) throws OseeCoreException {
-
- if (!Collections.getAggregate(createTeamOption).contains(CreateTeamOption.Duplicate_If_Exists)) {
- // Make sure team doesn't already exist
- for (TeamWorkFlowArtifact teamArt : getTeamWorkFlowArtifacts()) {
- if (teamArt.getTeamDefinition().equals(teamDef)) {
- AWorkbench.popup("ERROR", "Team already exist");
- throw new OseeArgumentException(
- "Team \"" + teamDef + "\" already exists for Action " + getHumanReadableId());
- }
- }
- }
-
- TeamWorkFlowArtifact teamArt = null;
- if (guid == null) {
- teamArt = (TeamWorkFlowArtifact) ArtifactTypeManager.addArtifact(artifactType, AtsUtil.getAtsBranch());
- } else {
- teamArt =
- (TeamWorkFlowArtifact) ArtifactTypeManager.addArtifact(artifactType, AtsUtil.getAtsBranch(), guid, hrid);
- }
- setArtifactIdentifyData(this, teamArt);
-
- teamArt.getLog().addLog(LogType.Originated, "", "");
-
- // Relate Workflow to ActionableItems (by guid) if team is responsible
- // for that AI
- for (ActionableItemArtifact aia : actionableItems) {
- if (aia.getImpactedTeamDefs().contains(teamDef)) {
- teamArt.getActionableItemsDam().addActionableItem(aia);
- }
- }
-
- // Relate WorkFlow to Team Definition (by guid due to relation loading
- // issues)
- teamArt.setTeamDefinition(teamDef);
-
- // Initialize state machine
- String startState = teamArt.getWorkFlowDefinition().getStartPage().getPageName();
- teamArt.getStateMgr().initializeStateMachine(startState, assignees);
- teamArt.getLog().addLog(LogType.StateEntered, startState, "");
-
- // Relate Action to WorkFlow
- addRelation(AtsRelationTypes.ActionToWorkflow_WorkFlow, teamArt);
-
- teamArt.persist(transaction);
-
- return teamArt;
- }
-
- /**
- * Set Team Workflow attributes off given action artifact
- */
- public static void setArtifactIdentifyData(ActionArtifact fromAction, TeamWorkFlowArtifact toTeam) throws OseeCoreException {
+ }
+
+ @Override
+ public String getWorldViewWorkPackage() throws OseeCoreException {
+ Set<String> strs = new HashSet<String>();
+ for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
+ strs.add(team.getWorldViewWorkPackage());
+ }
+ return Collections.toString(";", strs);
+ }
+
+ @Override
+ public String getWorldViewCategory2() throws OseeCoreException {
+ Set<String> strs = new HashSet<String>();
+ for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
+ strs.add(team.getWorldViewCategory2());
+ }
+ return Collections.toString(";", strs);
+ }
+
+ @Override
+ public String getWorldViewCategory3() throws OseeCoreException {
+ Set<String> strs = new HashSet<String>();
+ for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
+ strs.add(team.getWorldViewCategory3());
+ }
+ return Collections.toString(";", strs);
+ }
+
+ @Override
+ public String getWorldViewTargetedVersionStr() throws OseeCoreException {
+ Set<String> strs = new HashSet<String>();
+ for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
+ strs.add(team.getWorldViewTargetedVersionStr());
+ }
+ return Collections.toString(";", strs);
+ }
+
+ @Override
+ public String getHyperName() {
+ return getName();
+ }
+
+ @Override
+ public String getHyperType() {
+ try {
+ return getArtifactTypeName();
+ } catch (Exception ex) {
+ return ex.getLocalizedMessage();
+ }
+ }
+
+ @Override
+ public String getHyperState() {
+ try {
+ if (getTeamWorkFlowArtifacts().size() == 1) {
+ return getTeamWorkFlowArtifacts().iterator().next().getHyperState();
+ }
+ } catch (Exception ex) {
+ return XViewerCells.getCellExceptionString(ex);
+ }
+ return "";
+ }
+
+ @Override
+ public String getHyperTargetVersion() {
+ return null;
+ }
+
+ @Override
+ public String getHyperAssignee() {
+ try {
+ if (getTeamWorkFlowArtifacts().size() == 1) {
+ return getTeamWorkFlowArtifacts().iterator().next().getHyperAssignee();
+ }
+ } catch (Exception ex) {
+ return XViewerCells.getCellExceptionString(ex);
+ }
+ return "";
+ }
+
+ @Override
+ public Image getHyperAssigneeImage() throws OseeCoreException {
+ if (getTeamWorkFlowArtifacts().size() == 1) {
+ return getTeamWorkFlowArtifacts().iterator().next().getHyperAssigneeImage();
+ }
+ return null;
+ }
+
+ @Override
+ public Artifact getHyperArtifact() {
+ return this;
+ }
+
+ public Result editActionableItems() throws OseeCoreException {
+ final AICheckTreeDialog diag =
+ new AICheckTreeDialog(
+ "Add Impacted Actionable Items",
+ "Select New Impacted Actionable Items\n\n" + "Note: Un-selecting existing items will NOT remove the impact.\n" + "Team Workflow with no impact should be transitioned to Cancelled.",
+ Active.Active);
+
+ diag.setInitialAias(getActionableItems());
+ if (diag.open() != 0) {
+ return Result.FalseResult;
+ }
+
+ // ensure that at least one actionable item exists for each team after aias added/removed
+ for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
+ Set<ActionableItemArtifact> currentAias = team.getActionableItemsDam().getActionableItems();
+ Collection<ActionableItemArtifact> checkedAias = diag.getChecked();
+ for (ActionableItemArtifact aia : new CopyOnWriteArrayList<ActionableItemArtifact>(currentAias)) {
+ if (!checkedAias.contains(aia)) {
+ currentAias.remove(aia);
+ }
+ }
+ if (currentAias.isEmpty()) {
+ return new Result("Can not remove all actionable items for a team.\n\nActionable Items will go to 0 for [" +
+ //
+ team.getTeamName() + "][" + team.getHumanReadableId() + "]\n\nCancel team workflow instead.");
+ }
+ }
+
+ final StringBuffer sb = new StringBuffer();
+ SkynetTransaction transaction = new SkynetTransaction(AtsUtil.getAtsBranch(), "Edit Actionable Items");
+
+ // Add new aias
+ for (ActionableItemArtifact aia : diag.getChecked()) {
+ Result result = addActionableItemToTeamsOrAddTeams(aia, UserManager.getUser(), transaction);
+ sb.append(result.getText());
+ }
+ // Remove unchecked aias
+ for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
+ for (ActionableItemArtifact aia : team.getActionableItemsDam().getActionableItems()) {
+ if (!diag.getChecked().contains(aia)) {
+ team.getActionableItemsDam().removeActionableItem(aia);
+ }
+ }
+ team.persist(transaction);
+ }
+
+ transaction.execute();
+ return new Result(true, sb.toString());
+ }
+
+ public Result addActionableItemToTeamsOrAddTeams(ActionableItemArtifact aia, User originator, SkynetTransaction transaction) throws OseeCoreException {
+ StringBuffer sb = new StringBuffer();
+ for (TeamDefinitionArtifact tda : TeamDefinitionArtifact.getImpactedTeamDefs(Arrays.asList(aia))) {
+ boolean teamExists = false;
+ // Look for team workflow that is associated with this tda
+ for (TeamWorkFlowArtifact teamArt : getTeamWorkFlowArtifacts()) {
+ // If found
+ if (teamArt.getTeamDefinition().equals(tda)) {
+ // And workflow doesn't already have this actionable item,
+ // ADD it
+ if (!teamArt.getActionableItemsDam().getActionableItems().contains(aia)) {
+ teamArt.getActionableItemsDam().addActionableItem(aia);
+ teamArt.saveSMA(transaction);
+ sb.append(aia.getName() + " => added to existing team workflow \"" + tda.getName() + "\"\n");
+ teamExists = true;
+ } else {
+ sb.append(aia.getName() + " => already exists in team workflow \"" + tda.getName() + "\"\n");
+ teamExists = true;
+ }
+ }
+ }
+ if (!teamExists) {
+ TeamWorkFlowArtifact teamArt = createTeamWorkflow(tda, Arrays.asList(aia), tda.getLeads(), transaction);
+ if (originator != null) {
+ teamArt.getLog().setOriginator(originator);
+ }
+ teamArt.persist(transaction);
+ sb.append(aia.getName() + " => added team workflow \"" + tda.getName() + "\"\n");
+ }
+ }
+ return new Result(true, sb.toString());
+ }
+
+ public TeamWorkFlowArtifact createTeamWorkflow(TeamDefinitionArtifact teamDef, Collection<ActionableItemArtifact> actionableItems, Collection<User> assignees, SkynetTransaction transaction, CreateTeamOption... createTeamOption) throws OseeCoreException {
+ String teamWorkflowArtifactName = AtsArtifactTypes.TeamWorkflow.getName();
+ IAtsTeamWorkflow teamExt = null;
+
+ // Check if any plugins want to create the team workflow themselves
+ for (IAtsTeamWorkflow teamExtension : TeamWorkflowExtensions.getInstance().getAtsTeamWorkflowExtensions()) {
+ boolean isResponsible = false;
+ try {
+ isResponsible = teamExtension.isResponsibleForTeamWorkflowCreation(teamDef, actionableItems);
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, Level.WARNING, ex);
+ }
+ if (isResponsible) {
+ teamWorkflowArtifactName = teamExtension.getTeamWorkflowArtifactName(teamDef, actionableItems);
+ teamExt = teamExtension;
+ }
+ }
+
+ // NOTE: The persist of the workflow will auto-email the assignees
+ TeamWorkFlowArtifact teamArt =
+ createTeamWorkflow(teamDef, actionableItems, assignees, ArtifactTypeManager.getType(teamWorkflowArtifactName),
+ transaction, createTeamOption);
+ // Notify extension that workflow was created
+ if (teamExt != null) {
+ teamExt.teamWorkflowCreated(teamArt);
+ }
+ return teamArt;
+ }
+
+ public TeamWorkFlowArtifact createTeamWorkflow(TeamDefinitionArtifact teamDef, Collection<ActionableItemArtifact> actionableItems, Collection<User> assignees, IArtifactType artifactType, SkynetTransaction transaction, CreateTeamOption... createTeamOption) throws OseeCoreException {
+ return createTeamWorkflow(teamDef, actionableItems, assignees, null, null, artifactType, transaction,
+ createTeamOption);
+ }
+
+ public TeamWorkFlowArtifact createTeamWorkflow(TeamDefinitionArtifact teamDef, Collection<ActionableItemArtifact> actionableItems, Collection<User> assignees, String guid, String hrid, IArtifactType artifactType, SkynetTransaction transaction, CreateTeamOption... createTeamOption) throws OseeCoreException {
+
+ if (!Collections.getAggregate(createTeamOption).contains(CreateTeamOption.Duplicate_If_Exists)) {
+ // Make sure team doesn't already exist
+ for (TeamWorkFlowArtifact teamArt : getTeamWorkFlowArtifacts()) {
+ if (teamArt.getTeamDefinition().equals(teamDef)) {
+ AWorkbench.popup("ERROR", "Team already exist");
+ throw new OseeArgumentException(
+ "Team \"" + teamDef + "\" already exists for Action " + getHumanReadableId());
+ }
+ }
+ }
+
+ TeamWorkFlowArtifact teamArt = null;
+ if (guid == null) {
+ teamArt = (TeamWorkFlowArtifact) ArtifactTypeManager.addArtifact(artifactType, AtsUtil.getAtsBranch());
+ } else {
+ teamArt =
+ (TeamWorkFlowArtifact) ArtifactTypeManager.addArtifact(artifactType, AtsUtil.getAtsBranch(), guid, hrid);
+ }
+ setArtifactIdentifyData(this, teamArt);
+
+ teamArt.getLog().addLog(LogType.Originated, "", "");
+
+ // Relate Workflow to ActionableItems (by guid) if team is responsible
+ // for that AI
+ for (ActionableItemArtifact aia : actionableItems) {
+ if (aia.getImpactedTeamDefs().contains(teamDef)) {
+ teamArt.getActionableItemsDam().addActionableItem(aia);
+ }
+ }
+
+ // Relate WorkFlow to Team Definition (by guid due to relation loading
+ // issues)
+ teamArt.setTeamDefinition(teamDef);
+
+ // Initialize state machine
+ String startState = teamArt.getWorkFlowDefinition().getStartPage().getPageName();
+ teamArt.getStateMgr().initializeStateMachine(startState, assignees);
+ teamArt.getLog().addLog(LogType.StateEntered, startState, "");
+
+ // Relate Action to WorkFlow
+ addRelation(AtsRelationTypes.ActionToWorkflow_WorkFlow, teamArt);
+
+ teamArt.persist(transaction);
+
+ return teamArt;
+ }
+
+ /**
+ * Set Team Workflow attributes off given action artifact
+ */
+ public static void setArtifactIdentifyData(ActionArtifact fromAction, TeamWorkFlowArtifact toTeam) throws OseeCoreException {
String priorityStr = fromAction.getSoleAttributeValue(AtsAttributeTypes.PriorityType, "");
- PriorityType priType = null;
- if (Strings.isValid(priorityStr)) {
- priType = PriorityType.getPriority(priorityStr);
- } else {
- throw new OseeArgumentException("Invalid priority => " + priorityStr);
- }
- setArtifactIdentifyData(toTeam, fromAction.getName(),
+ PriorityType priType = null;
+ if (Strings.isValid(priorityStr)) {
+ priType = PriorityType.getPriority(priorityStr);
+ } else {
+ throw new OseeArgumentException("Invalid priority => " + priorityStr);
+ }
+ setArtifactIdentifyData(toTeam, fromAction.getName(),
fromAction.getSoleAttributeValue(AtsAttributeTypes.Description, ""),
ChangeType.getChangeType(fromAction.getSoleAttributeValue(AtsAttributeTypes.ChangeType, "")), priType,
- // fromAction.getAttributesToStringList(AtsAttributeTypes.ATS_USER_COMMUNITY),
+ // fromAction.getAttributesToStringList(AtsAttributeTypes.ATS_USER_COMMUNITY),
fromAction.getSoleAttributeValue(AtsAttributeTypes.ValidationRequired, false),
fromAction.getSoleAttributeValue(AtsAttributeTypes.NeedBy, (Date) null));
- }
-
- /**
- * Since there is no shared attribute yet, action and workflow arts are all populate with identify data
- */
- public static void setArtifactIdentifyData(Artifact art, String title, String desc, ChangeType changeType, PriorityType priority, Boolean validationRequired, Date needByDate) throws OseeCoreException {
- art.setName(title);
- if (!desc.equals("")) {
+ }
+
+ /**
+ * Since there is no shared attribute yet, action and workflow arts are all populate with identify data
+ */
+ public static void setArtifactIdentifyData(Artifact art, String title, String desc, ChangeType changeType, PriorityType priority, Boolean validationRequired, Date needByDate) throws OseeCoreException {
+ art.setName(title);
+ if (!desc.equals("")) {
art.setSoleAttributeValue(AtsAttributeTypes.Description, desc);
- }
+ }
art.setSoleAttributeValue(AtsAttributeTypes.ChangeType, changeType.name());
- // art.setAttributeValues(ATSAttributes.USER_COMMUNITY_ATTRIBUTE.getStoreName(), userComms);
- if (priority != null) {
+ // art.setAttributeValues(ATSAttributes.USER_COMMUNITY_ATTRIBUTE.getStoreName(), userComms);
+ if (priority != null) {
art.setSoleAttributeValue(AtsAttributeTypes.PriorityType, priority.getShortName());
- }
- if (needByDate != null) {
+ }
+ if (needByDate != null) {
art.setSoleAttributeValue(AtsAttributeTypes.NeedBy, needByDate);
- }
- if (validationRequired) {
+ }
+ if (validationRequired) {
art.setSoleAttributeValue(AtsAttributeTypes.ValidationRequired, true);
- }
- }
-
- @Override
- public String getWorldViewDecision() {
- return "";
- }
-
- @Override
- public Artifact getParentAtsArtifact() {
- return null;
- }
-
- @Override
- public String getWorldViewDescription() {
- try {
+ }
+ }
+
+ @Override
+ public String getWorldViewDecision() {
+ return "";
+ }
+
+ @Override
+ public Artifact getParentAtsArtifact() {
+ return null;
+ }
+
+ @Override
+ public String getWorldViewDescription() {
+ try {
return getSoleAttributeValue(AtsAttributeTypes.Description, "");
- } catch (Exception ex) {
- return XViewerCells.getCellExceptionString(ex);
- }
- }
-
- @Override
- public String getWorldViewValidationRequiredStr() {
- try {
+ } catch (Exception ex) {
+ return XViewerCells.getCellExceptionString(ex);
+ }
+ }
+
+ @Override
+ public String getWorldViewValidationRequiredStr() {
+ try {
return String.valueOf(getSoleAttributeValue(AtsAttributeTypes.ValidationRequired, false));
- } catch (Exception ex) {
- return XViewerCells.getCellExceptionString(ex);
- }
- }
-
- @Override
- public Date getWorldViewEstimatedReleaseDate() throws OseeCoreException {
- return getTeamWorkFlowArtifacts().iterator().next().getWorldViewEstimatedReleaseDate();
- }
-
- @Override
- public String getWorldViewEstimatedCompletionDateStr() throws OseeCoreException {
- Set<String> strs = new HashSet<String>();
- for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
- strs.add(team.getWorldViewEstimatedCompletionDateStr());
- }
- return Collections.toString(";", strs);
- }
-
- @Override
- public Date getWorldViewEstimatedCompletionDate() throws OseeCoreException {
- return getTeamWorkFlowArtifacts().iterator().next().getWorldViewEstimatedCompletionDate();
- }
-
- @Override
- public String getWorldViewReleaseDateStr() throws OseeCoreException {
- Set<String> strs = new HashSet<String>();
- for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
- strs.add(team.getWorldViewReleaseDateStr());
- }
- return Collections.toString(";", strs);
- }
-
- @Override
- public Date getWorldViewReleaseDate() throws OseeCoreException {
- return getTeamWorkFlowArtifacts().iterator().next().getWorldViewReleaseDate();
- }
-
- @Override
- public String getWorldViewEstimatedReleaseDateStr() throws OseeCoreException {
- Set<String> strs = new HashSet<String>();
- for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
- strs.add(team.getWorldViewEstimatedReleaseDateStr());
- }
- return Collections.toString(";", strs);
- }
-
- @Override
- public Result isWorldViewRemainHoursValid() throws OseeCoreException {
- for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
- if (team.isWorldViewRemainHoursValid().isFalse()) {
- return team.isWorldViewRemainHoursValid();
- }
- }
- return Result.TrueResult;
- }
-
- @Override
- public Result isWorldViewManDaysNeededValid() {
- try {
- for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
- if (team.isWorldViewManDaysNeededValid().isFalse()) {
- return team.isWorldViewManDaysNeededValid();
- }
- }
- } catch (OseeCoreException ex) {
- // Do nothing
- }
- return Result.TrueResult;
- }
-
- @Override
- public String getWorldViewChangeTypeStr() throws OseeCoreException {
- Set<String> strs = new HashSet<String>();
- for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
- strs.add(team.getWorldViewChangeTypeStr());
- }
- return Collections.toString(";", strs);
- }
-
- @Override
- public String getWorldViewImplementer() throws OseeCoreException {
- Set<String> strs = new HashSet<String>();
- for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
- strs.add(team.getWorldViewImplementer());
- }
- return Collections.toString(";", strs);
- }
-
- @Override
- public Date getWorldViewDeadlineDate() throws OseeCoreException {
- return getTeamWorkFlowArtifacts().iterator().next().getWorldViewDeadlineDate();
- }
-
- @Override
- public String getWorldViewDeadlineDateStr() throws OseeCoreException {
- Set<String> strs = new HashSet<String>();
- for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
- strs.add(team.getWorldViewDeadlineDateStr());
- }
- return Collections.toString(";", strs);
- }
-
- @Override
- public double getWorldViewWeeklyBenefit() throws OseeCoreException {
- double hours = 0;
- // Add up hours for all children
- for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
- if (!team.isCompleted() && !team.isCancelled()) {
- hours += team.getWorldViewWeeklyBenefit();
- }
- }
- return hours;
- }
-
- @Override
- public double getWorldViewAnnualCostAvoidance() throws OseeCoreException {
- double hours = 0;
- // Add up hours for all children
- for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
- if (!team.isCompleted() && !team.isCancelled()) {
- hours += team.getWorldViewAnnualCostAvoidance();
- }
- }
- return hours;
- }
-
- @Override
- public Result isWorldViewAnnualCostAvoidanceValid() throws OseeCoreException {
- for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
- Result result = team.isWorldViewAnnualCostAvoidanceValid();
- if (result.isFalse()) {
- return result;
- }
- }
- return Result.TrueResult;
- }
-
- @Override
- public Result isWorldViewDeadlineAlerting() throws OseeCoreException {
- for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
- Result result = team.isWorldViewDeadlineAlerting();
- if (result.isTrue()) {
- return result;
- }
- }
- return Result.FalseResult;
- }
-
- @Override
- public String getWorldViewLegacyPCR() throws OseeCoreException {
- Set<String> strs = new HashSet<String>();
- for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
- strs.add(team.getWorldViewLegacyPCR());
- }
- return Collections.toString(";", strs);
- }
-
- @Override
- public String getWorldViewPercentReworkStr() throws OseeCoreException {
- Set<String> strs = new HashSet<String>();
- for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
- strs.add(team.getWorldViewPercentReworkStr());
- }
- return Collections.toString(";", strs);
- }
-
- @Override
- public int getWorldViewPercentRework() {
- return 0;
- }
-
- @Override
- public String getWorldViewReviewAuthor() {
- return "";
- }
-
- @Override
- public String getWorldViewReviewDecider() {
- return "";
- }
-
- @Override
- public String getWorldViewReviewModerator() {
- return "";
- }
-
- @Override
- public String getWorldViewReviewReviewer() {
- return "";
- }
-
- @Override
- public double getWorldViewHoursSpentState() throws OseeCoreException {
- double hours = 0;
- for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
- if (!team.isCancelled()) {
- hours += team.getWorldViewHoursSpentState();
- }
- }
- return hours;
- }
-
- @Override
- public double getWorldViewHoursSpentStateReview() throws OseeCoreException {
- double hours = 0;
- for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
- if (!team.isCancelled()) {
- hours += team.getWorldViewHoursSpentStateReview();
- }
- }
- return hours;
- }
-
- @Override
- public double getWorldViewHoursSpentStateTask() throws OseeCoreException {
- double hours = 0;
- for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
- if (!team.isCancelled()) {
- hours += team.getWorldViewHoursSpentStateTask();
- }
- }
- return hours;
- }
-
- @Override
- public double getWorldViewHoursSpentStateTotal() throws OseeCoreException {
- double hours = 0;
- for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
- if (!team.isCancelled()) {
- hours += team.getWorldViewHoursSpentStateTotal();
- }
- }
- return hours;
- }
-
- @Override
- public double getWorldViewHoursSpentTotal() throws OseeCoreException {
- double hours = 0;
- for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
- if (!team.isCancelled()) {
- hours += team.getWorldViewHoursSpentTotal();
- }
- }
- return hours;
- }
-
- @Override
- public int getWorldViewPercentCompleteState() throws OseeCoreException {
- double percent = 0;
- for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
- if (!team.isCancelled()) {
- percent += team.getWorldViewPercentCompleteState();
- }
- }
- if (percent == 0) {
- return 0;
- }
- Double rollPercent = percent / getTeamWorkFlowArtifacts().size();
- return rollPercent.intValue();
- }
-
- @Override
- public int getWorldViewPercentCompleteStateReview() throws OseeCoreException {
- double percent = 0;
- for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
- if (!team.isCancelled()) {
- percent += team.getWorldViewPercentCompleteStateReview();
- }
- }
- if (percent == 0) {
- return 0;
- }
- Double rollPercent = percent / getTeamWorkFlowArtifacts().size();
- return rollPercent.intValue();
- }
-
- @Override
- public int getWorldViewPercentCompleteStateTask() throws OseeCoreException {
- double percent = 0;
- for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
- if (!team.isCancelled()) {
- percent += team.getWorldViewPercentCompleteStateTask();
- }
- }
- if (percent == 0) {
- return 0;
- }
- Double rollPercent = percent / getTeamWorkFlowArtifacts().size();
- return rollPercent.intValue();
- }
-
- @Override
- public int getWorldViewPercentCompleteTotal() throws OseeCoreException {
- double percent = 0;
- for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
- if (!team.isCancelled()) {
- percent += team.getWorldViewPercentCompleteTotal();
- }
- }
- if (percent == 0) {
- return 0;
- }
- Double rollPercent = percent / getTeamWorkFlowArtifacts().size();
- return rollPercent.intValue();
- }
-
- public String getWorldViewLastUpdated() throws OseeCoreException {
- return XDate.getDateStr(getLastModified(), XDate.MMDDYYHHMM);
- }
-
- @Override
- public String getWorldViewLastStatused() {
- return "(see children)";
- }
-
- @Override
- public VersionArtifact getWorldViewTargetedVersion() {
- return null;
- }
-
- @Override
- public String getWorldViewNumberOfReviewIssueDefects() {
- return "";
- }
-
- @Override
- public String getWorldViewNumberOfReviewMajorDefects() {
- return "";
- }
-
- @Override
- public String getWorldViewNumberOfReviewMinorDefects() {
- return "";
- }
-
- @Override
- public String getWorldViewActionsIntiatingWorkflow() throws OseeCoreException {
- Date earliestDate = null;
- for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
- if (earliestDate == null || team.getLog().getCreationDate().before(earliestDate)) {
- earliestDate = team.getLog().getCreationDate();
- }
- }
- List<String> teamNames = new ArrayList<String>();
- for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
- if (team.getLog().getCreationDate().equals(earliestDate)) {
- teamNames.add(team.getTeamName());
- }
- }
- return Collections.toString("; ", teamNames);
- }
-
- @Override
- public String getWorldViewParentID() {
- return "";
- }
-
- @Override
- public String getWorldViewParentState() {
- return null;
- }
-
- @Override
- public String getWorldViewOriginatingWorkflowStr() throws OseeCoreException {
- Set<String> strs = new HashSet<String>();
- for (TeamWorkFlowArtifact team : getWorldViewOriginatingWorkflows()) {
- strs.add(team.getWorldViewTeam());
- }
- return Collections.toString(";", strs);
- }
-
- @Override
- public Collection<TeamWorkFlowArtifact> getWorldViewOriginatingWorkflows() throws OseeCoreException {
- if (getTeamWorkFlowArtifacts().size() == 1) {
- return getTeamWorkFlowArtifacts();
- }
- Collection<TeamWorkFlowArtifact> results = new ArrayList<TeamWorkFlowArtifact>();
- Date origDate = null;
- for (TeamWorkFlowArtifact teamArt : getTeamWorkFlowArtifacts()) {
- if (teamArt.isCancelled()) {
- continue;
- }
- if (origDate == null || teamArt.getWorldViewCreatedDate().before(origDate)) {
- results.clear();
- origDate = teamArt.getWorldViewCreatedDate();
- results.add(teamArt);
- } else if (origDate.equals(teamArt.getWorldViewCreatedDate())) {
- results.add(teamArt);
- }
- }
- return results;
- }
-
- @Override
- public String getWorldViewGoalOrder() throws OseeCoreException {
- return GoalArtifact.getGoalOrder(this);
- }
-
-}
+ } catch (Exception ex) {
+ return XViewerCells.getCellExceptionString(ex);
+ }
+ }
+
+ @Override
+ public Date getWorldViewEstimatedReleaseDate() throws OseeCoreException {
+ return getTeamWorkFlowArtifacts().iterator().next().getWorldViewEstimatedReleaseDate();
+ }
+
+ @Override
+ public String getWorldViewEstimatedCompletionDateStr() throws OseeCoreException {
+ Set<String> strs = new HashSet<String>();
+ for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
+ strs.add(team.getWorldViewEstimatedCompletionDateStr());
+ }
+ return Collections.toString(";", strs);
+ }
+
+ @Override
+ public Date getWorldViewEstimatedCompletionDate() throws OseeCoreException {
+ return getTeamWorkFlowArtifacts().iterator().next().getWorldViewEstimatedCompletionDate();
+ }
+
+ @Override
+ public String getWorldViewReleaseDateStr() throws OseeCoreException {
+ Set<String> strs = new HashSet<String>();
+ for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
+ strs.add(team.getWorldViewReleaseDateStr());
+ }
+ return Collections.toString(";", strs);
+ }
+
+ @Override
+ public Date getWorldViewReleaseDate() throws OseeCoreException {
+ return getTeamWorkFlowArtifacts().iterator().next().getWorldViewReleaseDate();
+ }
+
+ @Override
+ public String getWorldViewEstimatedReleaseDateStr() throws OseeCoreException {
+ Set<String> strs = new HashSet<String>();
+ for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
+ strs.add(team.getWorldViewEstimatedReleaseDateStr());
+ }
+ return Collections.toString(";", strs);
+ }
+
+ @Override
+ public Result isWorldViewRemainHoursValid() throws OseeCoreException {
+ for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
+ if (team.isWorldViewRemainHoursValid().isFalse()) {
+ return team.isWorldViewRemainHoursValid();
+ }
+ }
+ return Result.TrueResult;
+ }
+
+ @Override
+ public Result isWorldViewManDaysNeededValid() {
+ try {
+ for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
+ if (team.isWorldViewManDaysNeededValid().isFalse()) {
+ return team.isWorldViewManDaysNeededValid();
+ }
+ }
+ } catch (OseeCoreException ex) {
+ // Do nothing
+ }
+ return Result.TrueResult;
+ }
+
+ @Override
+ public String getWorldViewChangeTypeStr() throws OseeCoreException {
+ Set<String> strs = new HashSet<String>();
+ for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
+ strs.add(team.getWorldViewChangeTypeStr());
+ }
+ return Collections.toString(";", strs);
+ }
+
+ @Override
+ public String getWorldViewImplementer() throws OseeCoreException {
+ Set<String> strs = new HashSet<String>();
+ for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
+ strs.add(team.getWorldViewImplementer());
+ }
+ return Collections.toString(";", strs);
+ }
+
+ @Override
+ public Date getWorldViewDeadlineDate() throws OseeCoreException {
+ return getTeamWorkFlowArtifacts().iterator().next().getWorldViewDeadlineDate();
+ }
+
+ @Override
+ public String getWorldViewDeadlineDateStr() throws OseeCoreException {
+ Set<String> strs = new HashSet<String>();
+ for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
+ strs.add(team.getWorldViewDeadlineDateStr());
+ }
+ return Collections.toString(";", strs);
+ }
+
+ @Override
+ public double getWorldViewWeeklyBenefit() throws OseeCoreException {
+ double hours = 0;
+ // Add up hours for all children
+ for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
+ if (!team.isCompleted() && !team.isCancelled()) {
+ hours += team.getWorldViewWeeklyBenefit();
+ }
+ }
+ return hours;
+ }
+
+ @Override
+ public double getWorldViewAnnualCostAvoidance() throws OseeCoreException {
+ double hours = 0;
+ // Add up hours for all children
+ for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
+ if (!team.isCompleted() && !team.isCancelled()) {
+ hours += team.getWorldViewAnnualCostAvoidance();
+ }
+ }
+ return hours;
+ }
+
+ @Override
+ public Result isWorldViewAnnualCostAvoidanceValid() throws OseeCoreException {
+ for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
+ Result result = team.isWorldViewAnnualCostAvoidanceValid();
+ if (result.isFalse()) {
+ return result;
+ }
+ }
+ return Result.TrueResult;
+ }
+
+ @Override
+ public Result isWorldViewDeadlineAlerting() throws OseeCoreException {
+ for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
+ Result result = team.isWorldViewDeadlineAlerting();
+ if (result.isTrue()) {
+ return result;
+ }
+ }
+ return Result.FalseResult;
+ }
+
+ @Override
+ public String getWorldViewLegacyPCR() throws OseeCoreException {
+ Set<String> strs = new HashSet<String>();
+ for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
+ strs.add(team.getWorldViewLegacyPCR());
+ }
+ return Collections.toString(";", strs);
+ }
+
+ @Override
+ public String getWorldViewPercentReworkStr() throws OseeCoreException {
+ Set<String> strs = new HashSet<String>();
+ for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
+ strs.add(team.getWorldViewPercentReworkStr());
+ }
+ return Collections.toString(";", strs);
+ }
+
+ @Override
+ public int getWorldViewPercentRework() {
+ return 0;
+ }
+
+ @Override
+ public String getWorldViewReviewAuthor() {
+ return "";
+ }
+
+ @Override
+ public String getWorldViewReviewDecider() {
+ return "";
+ }
+
+ @Override
+ public String getWorldViewReviewModerator() {
+ return "";
+ }
+
+ @Override
+ public String getWorldViewReviewReviewer() {
+ return "";
+ }
+
+ @Override
+ public double getWorldViewHoursSpentState() throws OseeCoreException {
+ double hours = 0;
+ for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
+ if (!team.isCancelled()) {
+ hours += team.getWorldViewHoursSpentState();
+ }
+ }
+ return hours;
+ }
+
+ @Override
+ public double getWorldViewHoursSpentStateReview() throws OseeCoreException {
+ double hours = 0;
+ for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
+ if (!team.isCancelled()) {
+ hours += team.getWorldViewHoursSpentStateReview();
+ }
+ }
+ return hours;
+ }
+
+ @Override
+ public double getWorldViewHoursSpentStateTask() throws OseeCoreException {
+ double hours = 0;
+ for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
+ if (!team.isCancelled()) {
+ hours += team.getWorldViewHoursSpentStateTask();
+ }
+ }
+ return hours;
+ }
+
+ @Override
+ public double getWorldViewHoursSpentStateTotal() throws OseeCoreException {
+ double hours = 0;
+ for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
+ if (!team.isCancelled()) {
+ hours += team.getWorldViewHoursSpentStateTotal();
+ }
+ }
+ return hours;
+ }
+
+ @Override
+ public double getWorldViewHoursSpentTotal() throws OseeCoreException {
+ double hours = 0;
+ for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
+ if (!team.isCancelled()) {
+ hours += team.getWorldViewHoursSpentTotal();
+ }
+ }
+ return hours;
+ }
+
+ @Override
+ public int getWorldViewPercentCompleteState() throws OseeCoreException {
+ double percent = 0;
+ for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
+ if (!team.isCancelled()) {
+ percent += team.getWorldViewPercentCompleteState();
+ }
+ }
+ if (percent == 0) {
+ return 0;
+ }
+ Double rollPercent = percent / getTeamWorkFlowArtifacts().size();
+ return rollPercent.intValue();
+ }
+
+ @Override
+ public int getWorldViewPercentCompleteStateReview() throws OseeCoreException {
+ double percent = 0;
+ for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
+ if (!team.isCancelled()) {
+ percent += team.getWorldViewPercentCompleteStateReview();
+ }
+ }
+ if (percent == 0) {
+ return 0;
+ }
+ Double rollPercent = percent / getTeamWorkFlowArtifacts().size();
+ return rollPercent.intValue();
+ }
+
+ @Override
+ public int getWorldViewPercentCompleteStateTask() throws OseeCoreException {
+ double percent = 0;
+ for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
+ if (!team.isCancelled()) {
+ percent += team.getWorldViewPercentCompleteStateTask();
+ }
+ }
+ if (percent == 0) {
+ return 0;
+ }
+ Double rollPercent = percent / getTeamWorkFlowArtifacts().size();
+ return rollPercent.intValue();
+ }
+
+ @Override
+ public int getWorldViewPercentCompleteTotal() throws OseeCoreException {
+ double percent = 0;
+ for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
+ if (!team.isCancelled()) {
+ percent += team.getWorldViewPercentCompleteTotal();
+ }
+ }
+ if (percent == 0) {
+ return 0;
+ }
+ Double rollPercent = percent / getTeamWorkFlowArtifacts().size();
+ return rollPercent.intValue();
+ }
+
+ public String getWorldViewLastUpdated() throws OseeCoreException {
+ return XDate.getDateStr(getLastModified(), XDate.MMDDYYHHMM);
+ }
+
+ @Override
+ public String getWorldViewLastStatused() {
+ return "(see children)";
+ }
+
+ @Override
+ public VersionArtifact getWorldViewTargetedVersion() {
+ return null;
+ }
+
+ @Override
+ public String getWorldViewNumberOfReviewIssueDefects() {
+ return "";
+ }
+
+ @Override
+ public String getWorldViewNumberOfReviewMajorDefects() {
+ return "";
+ }
+
+ @Override
+ public String getWorldViewNumberOfReviewMinorDefects() {
+ return "";
+ }
+
+ @Override
+ public String getWorldViewActionsIntiatingWorkflow() throws OseeCoreException {
+ Date earliestDate = null;
+ for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
+ if (earliestDate == null || team.getLog().getCreationDate().before(earliestDate)) {
+ earliestDate = team.getLog().getCreationDate();
+ }
+ }
+ List<String> teamNames = new ArrayList<String>();
+ for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) {
+ if (team.getLog().getCreationDate().equals(earliestDate)) {
+ teamNames.add(team.getTeamName());
+ }
+ }
+ return Collections.toString("; ", teamNames);
+ }
+
+ @Override
+ public String getWorldViewParentID() {
+ return "";
+ }
+
+ @Override
+ public String getWorldViewParentState() {
+ return null;
+ }
+
+ @Override
+ public String getWorldViewOriginatingWorkflowStr() throws OseeCoreException {
+ Set<String> strs = new HashSet<String>();
+ for (TeamWorkFlowArtifact team : getWorldViewOriginatingWorkflows()) {
+ strs.add(team.getWorldViewTeam());
+ }
+ return Collections.toString(";", strs);
+ }
+
+ @Override
+ public Collection<TeamWorkFlowArtifact> getWorldViewOriginatingWorkflows() throws OseeCoreException {
+ if (getTeamWorkFlowArtifacts().size() == 1) {
+ return getTeamWorkFlowArtifacts();
+ }
+ Collection<TeamWorkFlowArtifact> results = new ArrayList<TeamWorkFlowArtifact>();
+ Date origDate = null;
+ for (TeamWorkFlowArtifact teamArt : getTeamWorkFlowArtifacts()) {
+ if (teamArt.isCancelled()) {
+ continue;
+ }
+ if (origDate == null || teamArt.getWorldViewCreatedDate().before(origDate)) {
+ results.clear();
+ origDate = teamArt.getWorldViewCreatedDate();
+ results.add(teamArt);
+ } else if (origDate.equals(teamArt.getWorldViewCreatedDate())) {
+ results.add(teamArt);
+ }
+ }
+ return results;
+ }
+
+ @Override
+ public String getWorldViewGoalOrder() throws OseeCoreException {
+ return GoalArtifact.getGoalOrder(this);
+ }
+
+}
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 1dcb1eca4e6..1d1c9403cc3 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
@@ -1,124 +1,124 @@
-/*******************************************************************************
- * 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.artifact;
-
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-import org.eclipse.osee.ats.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.enums.Active;
-import org.eclipse.osee.framework.core.exception.OseeCoreException;
-import org.eclipse.osee.framework.core.exception.OseeDataStoreException;
-import org.eclipse.osee.framework.core.model.Branch;
-import org.eclipse.osee.framework.core.model.type.ArtifactType;
-import org.eclipse.osee.framework.jdk.core.util.Collections;
-import org.eclipse.osee.framework.skynet.core.User;
-import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
-import org.eclipse.osee.framework.skynet.core.artifact.ArtifactFactory;
-import org.eclipse.osee.framework.skynet.core.artifact.ArtifactTypeManager;
-import org.eclipse.osee.framework.skynet.core.utility.Artifacts;
-
-/**
- * @author Donald G. Dunne
- */
-public class ActionableItemArtifact extends Artifact {
-
- public ActionableItemArtifact(ArtifactFactory parentFactory, String guid, String humanReadableId, Branch branch, ArtifactType artifactType) throws OseeDataStoreException {
- super(parentFactory, guid, humanReadableId, branch, artifactType);
- }
-
- public static List<ActionableItemArtifact> getActionableItems(Active active) throws OseeCoreException {
- return Collections.castAll(AtsCacheManager.getArtifactsByActive(
- ArtifactTypeManager.getType(AtsArtifactTypes.ActionableItem), active));
- }
-
- public static String getNotActionableItemError(Artifact aia) {
- return "Action can not be written against " + aia.getArtifactTypeName() + " \"" + aia + "\" (" + aia.getHumanReadableId() + ").\n\nChoose another item.";
- }
-
- public static List<ActionableItemArtifact> getTopLevelActionableItems(Active active) throws OseeCoreException {
- ActionableItemArtifact topAi = getTopActionableItem();
- if (topAi == null) {
- return java.util.Collections.emptyList();
- }
- return Collections.castAll(AtsUtil.getActive(
- Artifacts.getChildrenOfTypeSet(topAi, ActionableItemArtifact.class, false), active,
- ActionableItemArtifact.class));
- }
-
- public Collection<User> getLeads() throws OseeCoreException {
- return getRelatedArtifacts(AtsRelationTypes.TeamLead_Lead, User.class);
- }
-
- public static ActionableItemArtifact getTopActionableItem() throws OseeCoreException {
- return (ActionableItemArtifact) AtsFolderUtil.getFolder(AtsFolder.ActionableItem);
- }
-
- public static List<ActionableItemArtifact> getActionableItems() throws OseeCoreException {
- return Collections.castAll(AtsCacheManager.getArtifactsByActive(
- ArtifactTypeManager.getType(AtsArtifactTypes.ActionableItem), Active.Both));
- }
-
- public boolean isActionable() throws OseeCoreException {
+/*******************************************************************************
+ * 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.artifact;
+
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import org.eclipse.osee.ats.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.enums.Active;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.core.exception.OseeDataStoreException;
+import org.eclipse.osee.framework.core.model.Branch;
+import org.eclipse.osee.framework.core.model.type.ArtifactType;
+import org.eclipse.osee.framework.jdk.core.util.Collections;
+import org.eclipse.osee.framework.skynet.core.User;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactFactory;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactTypeManager;
+import org.eclipse.osee.framework.skynet.core.utility.Artifacts;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class ActionableItemArtifact extends Artifact {
+
+ public ActionableItemArtifact(ArtifactFactory parentFactory, String guid, String humanReadableId, Branch branch, ArtifactType artifactType) throws OseeDataStoreException {
+ super(parentFactory, guid, humanReadableId, branch, artifactType);
+ }
+
+ public static List<ActionableItemArtifact> getActionableItems(Active active) throws OseeCoreException {
+ return Collections.castAll(AtsCacheManager.getArtifactsByActive(
+ ArtifactTypeManager.getType(AtsArtifactTypes.ActionableItem), active));
+ }
+
+ public static String getNotActionableItemError(Artifact aia) {
+ return "Action can not be written against " + aia.getArtifactTypeName() + " \"" + aia + "\" (" + aia.getHumanReadableId() + ").\n\nChoose another item.";
+ }
+
+ public static List<ActionableItemArtifact> getTopLevelActionableItems(Active active) throws OseeCoreException {
+ ActionableItemArtifact topAi = getTopActionableItem();
+ if (topAi == null) {
+ return java.util.Collections.emptyList();
+ }
+ return Collections.castAll(AtsUtil.getActive(
+ Artifacts.getChildrenOfTypeSet(topAi, ActionableItemArtifact.class, false), active,
+ ActionableItemArtifact.class));
+ }
+
+ public Collection<User> getLeads() throws OseeCoreException {
+ return getRelatedArtifacts(AtsRelationTypes.TeamLead_Lead, User.class);
+ }
+
+ public static ActionableItemArtifact getTopActionableItem() throws OseeCoreException {
+ return (ActionableItemArtifact) AtsFolderUtil.getFolder(AtsFolder.ActionableItem);
+ }
+
+ public static List<ActionableItemArtifact> getActionableItems() throws OseeCoreException {
+ return Collections.castAll(AtsCacheManager.getArtifactsByActive(
+ ArtifactTypeManager.getType(AtsArtifactTypes.ActionableItem), Active.Both));
+ }
+
+ public boolean isActionable() throws OseeCoreException {
return getSoleAttributeValue(AtsAttributeTypes.Actionable, false);
- }
-
- public static Set<ActionableItemArtifact> getActionableItems(Collection<String> actionableItemNames) throws OseeCoreException {
- Set<ActionableItemArtifact> aias = new HashSet<ActionableItemArtifact>();
- for (String actionableItemName : actionableItemNames) {
- for (Artifact artifact : AtsCacheManager.getArtifactsByName(
- ArtifactTypeManager.getType(AtsArtifactTypes.ActionableItem), actionableItemName)) {
- aias.add((ActionableItemArtifact) artifact);
- }
- }
- return aias;
- }
-
- public static Collection<TeamDefinitionArtifact> getImpactedTeamDefs(Collection<ActionableItemArtifact> aias) throws OseeCoreException {
- return TeamDefinitionArtifact.getImpactedTeamDefs(aias);
- }
-
- public Collection<TeamDefinitionArtifact> getImpactedTeamDefs() throws OseeCoreException {
- return TeamDefinitionArtifact.getImpactedTeamDefs(Arrays.asList(this));
- }
-
- public static Set<TeamDefinitionArtifact> getTeamsFromItemAndChildren(ActionableItemArtifact aia) throws OseeCoreException {
- return TeamDefinitionArtifact.getTeamsFromItemAndChildren(aia);
- }
-
- public static Set<ActionableItemArtifact> getActionableItemsFromItemAndChildren(ActionableItemArtifact aia) throws OseeCoreException {
- Set<ActionableItemArtifact> aias = new HashSet<ActionableItemArtifact>();
- getActionableItemsFromItemAndChildren(aia, aias);
- return aias;
- }
-
- public static void getActionableItemsFromItemAndChildren(ActionableItemArtifact aia, Set<ActionableItemArtifact> aiaTeams) throws OseeCoreException {
- for (Artifact art : aia.getChildren()) {
- if (art instanceof ActionableItemArtifact) {
- aiaTeams.add((ActionableItemArtifact) art);
- for (Artifact childArt : aia.getChildren()) {
- if (childArt instanceof ActionableItemArtifact) {
- getActionableItemsFromItemAndChildren((ActionableItemArtifact) childArt, aiaTeams);
- }
- }
- }
- }
- }
-
-}
+ }
+
+ public static Set<ActionableItemArtifact> getActionableItems(Collection<String> actionableItemNames) throws OseeCoreException {
+ Set<ActionableItemArtifact> aias = new HashSet<ActionableItemArtifact>();
+ for (String actionableItemName : actionableItemNames) {
+ for (Artifact artifact : AtsCacheManager.getArtifactsByName(
+ ArtifactTypeManager.getType(AtsArtifactTypes.ActionableItem), actionableItemName)) {
+ aias.add((ActionableItemArtifact) artifact);
+ }
+ }
+ return aias;
+ }
+
+ public static Collection<TeamDefinitionArtifact> getImpactedTeamDefs(Collection<ActionableItemArtifact> aias) throws OseeCoreException {
+ return TeamDefinitionArtifact.getImpactedTeamDefs(aias);
+ }
+
+ public Collection<TeamDefinitionArtifact> getImpactedTeamDefs() throws OseeCoreException {
+ return TeamDefinitionArtifact.getImpactedTeamDefs(Arrays.asList(this));
+ }
+
+ public static Set<TeamDefinitionArtifact> getTeamsFromItemAndChildren(ActionableItemArtifact aia) throws OseeCoreException {
+ return TeamDefinitionArtifact.getTeamsFromItemAndChildren(aia);
+ }
+
+ public static Set<ActionableItemArtifact> getActionableItemsFromItemAndChildren(ActionableItemArtifact aia) throws OseeCoreException {
+ Set<ActionableItemArtifact> aias = new HashSet<ActionableItemArtifact>();
+ getActionableItemsFromItemAndChildren(aia, aias);
+ return aias;
+ }
+
+ public static void getActionableItemsFromItemAndChildren(ActionableItemArtifact aia, Set<ActionableItemArtifact> aiaTeams) throws OseeCoreException {
+ for (Artifact art : aia.getChildren()) {
+ if (art instanceof ActionableItemArtifact) {
+ aiaTeams.add((ActionableItemArtifact) art);
+ for (Artifact childArt : aia.getChildren()) {
+ if (childArt instanceof ActionableItemArtifact) {
+ getActionableItemsFromItemAndChildren((ActionableItemArtifact) childArt, aiaTeams);
+ }
+ }
+ }
+ }
+ }
+
+}
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 50af600e117..497cefe24dc 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
@@ -1,83 +1,83 @@
-/*******************************************************************************
- * 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.artifact;
-
-import org.eclipse.osee.framework.core.data.IAttributeType;
-import org.eclipse.osee.framework.core.data.NamedIdentity;
-import org.eclipse.osee.framework.core.enums.CoreAttributeTypes;
-
-/**
- * @author Ryan D. Brooks
- */
-public final class AtsAttributeTypes extends NamedIdentity implements IAttributeType {
-
- // @formatter:off
- public static final IAttributeType Actionable = new AtsAttributeTypes("AAMFEcvDtBiaJ3TMatAA", "Actionable", "True if item can have Action written against or assigned to.");
- public static final IAttributeType ActionableItem = new AtsAttributeTypes("AAMFEdbcR2zpGzFOLOQA", "Actionable Item", "Actionable Items that are impacted by this change.");
- public static final IAttributeType Active = new AtsAttributeTypes("AAMFEclQOVmzkIvzyWwA", "Active", "Active ATS configuration object.");
- public static final IAttributeType AllowCommitBranch = new AtsAttributeTypes("AAMFEbCZCkwgj73BsQgA", "Allow Commit Branch");
- public static final IAttributeType AllowCreateBranch = new AtsAttributeTypes("AAMFEbARuQEvi6rtY5gA", "Allow Create Branch");
- public static final IAttributeType BaselineBranchGuid = new AtsAttributeTypes("AAMFEdIjJ2za2fblEVgA", "Baseline Branch Guid", "Basline branch associated with ATS object.");
- public static final IAttributeType BlockingReview = new AtsAttributeTypes("AAMFEctKkjMRrIy1C7gA", "Blocking Review");
- public static final IAttributeType Category1 = new AtsAttributeTypes("AAMFEdrYniOQYrYUKKQA", "Category", "Open field for user to be able to enter text to use for categorizing/sorting.");
- public static final IAttributeType Category2 = new AtsAttributeTypes("AAMFEdthBkolbJKLXuAA", "Category2", Category1.getDescription());
- public static final IAttributeType Category3 = new AtsAttributeTypes("AAMFEd06oxr8LMzZxdgA", "Category3", Category1.getDescription());
- public static final IAttributeType ChangeType = new AtsAttributeTypes("AAMFEc+MwGHnPCv7HlgA", "Change Type", "Type of change.");
- public static final IAttributeType CurrentState = new AtsAttributeTypes("AAMFEdOWL3u6hmX2VbwA", "Current State", "Current state of workflow state machine.");
- public static final IAttributeType Decision = new AtsAttributeTypes("AAMFEd7uDXcmqq_FrCQA", "Decision", "Option selected during decision review.");
- public static final IAttributeType DecisionReviewOptions = new AtsAttributeTypes("AAMFEd5hRy1+SRJRqfwA", "Decision Review Options", "Options available for selection in review. Each line is a separate option. Format: <option name>;<state to transition to>;<assignee>");
- public static final IAttributeType Description = new AtsAttributeTypes("AAMFEdWJ_ChxX6+YKbwA", "Description", "Detailed explanation.");
- public static final IAttributeType EstimatedCompletionDate = new AtsAttributeTypes("AAMFEc18k3Gh+GP7zqAA", "Estimated Completion Date", "Date the changes will be completed.");
- public static final IAttributeType EstimatedHours = new AtsAttributeTypes("AAMFEdCSqBh+cPyadiwA", "Estimated Hours", "Hours estimated to implement the changes associated with this Action.\nIncludes estimated hours for workflows, tasks and reviews.");
- public static final IAttributeType EstimatedReleaseDate = new AtsAttributeTypes("AAMFEcy6VB7Ble5SP1QA", "Estimated Release Date", "Date the changes will be made available to the users.");
- public static final IAttributeType FullName = new AtsAttributeTypes("AAMFEdZI9XLT34cTonAA", "Full Name", "Expanded and descriptive name.");
- public static final IAttributeType GoalOrderVote = new AtsAttributeTypes("Aiecsz9pP1CRoQdaYRAA", "Goal Order Vote", "Vote for order item belongs to within goal.");
- public static final IAttributeType HoursPerWorkDay = new AtsAttributeTypes("AAMFEdGlqFsZp22RMdAA", "Hours Per Work Day");
- public static final IAttributeType LegacyPcrId = new AtsAttributeTypes("AAMFEd3TakphMtQX1zgA", "Legacy PCR Id", "Field to register problem change report id from legacy items imported into ATS.");
- public static final IAttributeType Location = new AtsAttributeTypes("AAMFEeAW4QBlesdfacwA", "Location", "Enter location of materials to review.");
- public static final IAttributeType Log = new AtsAttributeTypes("AAMFEdgB1DX3eJSZb0wA", "Log");
- public static final IAttributeType NeedBy = new AtsAttributeTypes("AAMFEcxAGzHAKfDNAIwA", "Need By", "Hard schedule date that workflow must be completed.");
- public static final IAttributeType NextVersion = new AtsAttributeTypes("AAMFEcpH8Xb72hsF5AwA", "Next Version", "True if version artifact is \"Next\" version to be released.");
- public static final IAttributeType Numeric1 = new AtsAttributeTypes("AABY2xxQsDm811kCViwA", "Numeric1", "Open field for user to be able to enter numbers for sorting.");
- public static final IAttributeType Numeric2 = new AtsAttributeTypes("AABiRtvZsAEkU4BS9qwA", "Numeric2", Numeric1.getDescription());
- public static final IAttributeType PercentRework = new AtsAttributeTypes("AAMFEdKfjl2TII9+tuwA", "Percent Rework");
- 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.");
- public static final IAttributeType ProposedResolution = new AtsAttributeTypes("AAMFEdSSRDGgBQ5tctAA", "Proposed Resolution", "Recommended resolution.");
- public static final IAttributeType RelatedToState = new AtsAttributeTypes("AAMFEdkwHULOmHbMbGgA", "Related To State", "State of parent workflow this object is related to.");
- public static final IAttributeType ReleaseDate = new AtsAttributeTypes("AAMFEc3+cGcMDOCdmdAA", "Release Date", "Date the changes were made available to the users.");
- public static final IAttributeType Released = new AtsAttributeTypes("AAMFEcnMoUZMLA2zB1AA", "Released", "True if object is in a released state.");
- public static final IAttributeType Resolution = new AtsAttributeTypes("AAMFEdUMfV1KdbQNaKwA", "Resolution", "Implementation details.");
- 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 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");
- public static final IAttributeType TeamDefinition = new AtsAttributeTypes("AAMFEdd5bFEe18bd0lQA", "Team Definition");
- public static final IAttributeType TeamUsesVersions = new AtsAttributeTypes("AAMFEcrHnzPxQ7w3ligA", "Team Uses Versions", "True if Team Workflow uses versioning/releasing option.");
- public static final IAttributeType Title = new AtsAttributeTypes(CoreAttributeTypes.Name.getGuid(), CoreAttributeTypes.Name.getName(), "Enter clear and consise title that can be generally understood.");
- public static final IAttributeType UserCommunity = new AtsAttributeTypes("AAMFEdAPtAq1IEwiCQAA", "User Community", "If working in one of these communities resulted in the creation of this Action, please select. Otherwise, select Other.");
- public static final IAttributeType ValidationRequired = new AtsAttributeTypes("AAMFEcjT0TwkD2R4w1QA", "Validation Required", "If selected, originator will be asked to validate the implementation.");
- public static final IAttributeType VersionLocked = new AtsAttributeTypes("AAzRtEJXbjzR5jySOZgA", "Version Locked", "True if version artifact is locked.");
- public static final IAttributeType WeeklyBenefit = new AtsAttributeTypes("AAMFEdEnEU9AecOHMOwA", "Weekly Benefit", "Estimated number of hours that will be saved over a single year if this change is completed.");
- public static final IAttributeType WorkPackage = new AtsAttributeTypes("AAMFEdpJqRp2wvA2qvAA", "Work Package", "Designated accounting work package for completing workflow.");
- // @formatter:on
-
- private AtsAttributeTypes(String guid, String name) {
- super(guid, "ats." + name);
- }
-
- private AtsAttributeTypes(String guid, String name, String description) {
- super(guid, "ats." + name, description);
- }
+/*******************************************************************************
+ * 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.artifact;
+
+import org.eclipse.osee.framework.core.data.IAttributeType;
+import org.eclipse.osee.framework.core.data.NamedIdentity;
+import org.eclipse.osee.framework.core.enums.CoreAttributeTypes;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public final class AtsAttributeTypes extends NamedIdentity implements IAttributeType {
+
+ // @formatter:off
+ public static final IAttributeType Actionable = new AtsAttributeTypes("AAMFEcvDtBiaJ3TMatAA", "Actionable", "True if item can have Action written against or assigned to.");
+ public static final IAttributeType ActionableItem = new AtsAttributeTypes("AAMFEdbcR2zpGzFOLOQA", "Actionable Item", "Actionable Items that are impacted by this change.");
+ public static final IAttributeType Active = new AtsAttributeTypes("AAMFEclQOVmzkIvzyWwA", "Active", "Active ATS configuration object.");
+ public static final IAttributeType AllowCommitBranch = new AtsAttributeTypes("AAMFEbCZCkwgj73BsQgA", "Allow Commit Branch");
+ public static final IAttributeType AllowCreateBranch = new AtsAttributeTypes("AAMFEbARuQEvi6rtY5gA", "Allow Create Branch");
+ public static final IAttributeType BaselineBranchGuid = new AtsAttributeTypes("AAMFEdIjJ2za2fblEVgA", "Baseline Branch Guid", "Basline branch associated with ATS object.");
+ public static final IAttributeType BlockingReview = new AtsAttributeTypes("AAMFEctKkjMRrIy1C7gA", "Blocking Review");
+ public static final IAttributeType Category1 = new AtsAttributeTypes("AAMFEdrYniOQYrYUKKQA", "Category", "Open field for user to be able to enter text to use for categorizing/sorting.");
+ public static final IAttributeType Category2 = new AtsAttributeTypes("AAMFEdthBkolbJKLXuAA", "Category2", Category1.getDescription());
+ public static final IAttributeType Category3 = new AtsAttributeTypes("AAMFEd06oxr8LMzZxdgA", "Category3", Category1.getDescription());
+ public static final IAttributeType ChangeType = new AtsAttributeTypes("AAMFEc+MwGHnPCv7HlgA", "Change Type", "Type of change.");
+ public static final IAttributeType CurrentState = new AtsAttributeTypes("AAMFEdOWL3u6hmX2VbwA", "Current State", "Current state of workflow state machine.");
+ public static final IAttributeType Decision = new AtsAttributeTypes("AAMFEd7uDXcmqq_FrCQA", "Decision", "Option selected during decision review.");
+ public static final IAttributeType DecisionReviewOptions = new AtsAttributeTypes("AAMFEd5hRy1+SRJRqfwA", "Decision Review Options", "Options available for selection in review. Each line is a separate option. Format: <option name>;<state to transition to>;<assignee>");
+ public static final IAttributeType Description = new AtsAttributeTypes("AAMFEdWJ_ChxX6+YKbwA", "Description", "Detailed explanation.");
+ public static final IAttributeType EstimatedCompletionDate = new AtsAttributeTypes("AAMFEc18k3Gh+GP7zqAA", "Estimated Completion Date", "Date the changes will be completed.");
+ public static final IAttributeType EstimatedHours = new AtsAttributeTypes("AAMFEdCSqBh+cPyadiwA", "Estimated Hours", "Hours estimated to implement the changes associated with this Action.\nIncludes estimated hours for workflows, tasks and reviews.");
+ public static final IAttributeType EstimatedReleaseDate = new AtsAttributeTypes("AAMFEcy6VB7Ble5SP1QA", "Estimated Release Date", "Date the changes will be made available to the users.");
+ public static final IAttributeType FullName = new AtsAttributeTypes("AAMFEdZI9XLT34cTonAA", "Full Name", "Expanded and descriptive name.");
+ public static final IAttributeType GoalOrderVote = new AtsAttributeTypes("Aiecsz9pP1CRoQdaYRAA", "Goal Order Vote", "Vote for order item belongs to within goal.");
+ public static final IAttributeType HoursPerWorkDay = new AtsAttributeTypes("AAMFEdGlqFsZp22RMdAA", "Hours Per Work Day");
+ public static final IAttributeType LegacyPcrId = new AtsAttributeTypes("AAMFEd3TakphMtQX1zgA", "Legacy PCR Id", "Field to register problem change report id from legacy items imported into ATS.");
+ public static final IAttributeType Location = new AtsAttributeTypes("AAMFEeAW4QBlesdfacwA", "Location", "Enter location of materials to review.");
+ public static final IAttributeType Log = new AtsAttributeTypes("AAMFEdgB1DX3eJSZb0wA", "Log");
+ public static final IAttributeType NeedBy = new AtsAttributeTypes("AAMFEcxAGzHAKfDNAIwA", "Need By", "Hard schedule date that workflow must be completed.");
+ public static final IAttributeType NextVersion = new AtsAttributeTypes("AAMFEcpH8Xb72hsF5AwA", "Next Version", "True if version artifact is \"Next\" version to be released.");
+ public static final IAttributeType Numeric1 = new AtsAttributeTypes("AABY2xxQsDm811kCViwA", "Numeric1", "Open field for user to be able to enter numbers for sorting.");
+ public static final IAttributeType Numeric2 = new AtsAttributeTypes("AABiRtvZsAEkU4BS9qwA", "Numeric2", Numeric1.getDescription());
+ public static final IAttributeType PercentRework = new AtsAttributeTypes("AAMFEdKfjl2TII9+tuwA", "Percent Rework");
+ 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.");
+ public static final IAttributeType ProposedResolution = new AtsAttributeTypes("AAMFEdSSRDGgBQ5tctAA", "Proposed Resolution", "Recommended resolution.");
+ public static final IAttributeType RelatedToState = new AtsAttributeTypes("AAMFEdkwHULOmHbMbGgA", "Related To State", "State of parent workflow this object is related to.");
+ public static final IAttributeType ReleaseDate = new AtsAttributeTypes("AAMFEc3+cGcMDOCdmdAA", "Release Date", "Date the changes were made available to the users.");
+ public static final IAttributeType Released = new AtsAttributeTypes("AAMFEcnMoUZMLA2zB1AA", "Released", "True if object is in a released state.");
+ public static final IAttributeType Resolution = new AtsAttributeTypes("AAMFEdUMfV1KdbQNaKwA", "Resolution", "Implementation details.");
+ 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 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");
+ public static final IAttributeType TeamDefinition = new AtsAttributeTypes("AAMFEdd5bFEe18bd0lQA", "Team Definition");
+ public static final IAttributeType TeamUsesVersions = new AtsAttributeTypes("AAMFEcrHnzPxQ7w3ligA", "Team Uses Versions", "True if Team Workflow uses versioning/releasing option.");
+ public static final IAttributeType Title = new AtsAttributeTypes(CoreAttributeTypes.Name.getGuid(), CoreAttributeTypes.Name.getName(), "Enter clear and consise title that can be generally understood.");
+ public static final IAttributeType UserCommunity = new AtsAttributeTypes("AAMFEdAPtAq1IEwiCQAA", "User Community", "If working in one of these communities resulted in the creation of this Action, please select. Otherwise, select Other.");
+ public static final IAttributeType ValidationRequired = new AtsAttributeTypes("AAMFEcjT0TwkD2R4w1QA", "Validation Required", "If selected, originator will be asked to validate the implementation.");
+ public static final IAttributeType VersionLocked = new AtsAttributeTypes("AAzRtEJXbjzR5jySOZgA", "Version Locked", "True if version artifact is locked.");
+ public static final IAttributeType WeeklyBenefit = new AtsAttributeTypes("AAMFEdEnEU9AecOHMOwA", "Weekly Benefit", "Estimated number of hours that will be saved over a single year if this change is completed.");
+ public static final IAttributeType WorkPackage = new AtsAttributeTypes("AAMFEdpJqRp2wvA2qvAA", "Work Package", "Designated accounting work package for completing workflow.");
+ // @formatter:on
+
+ private AtsAttributeTypes(String guid, String name) {
+ super(guid, "ats." + name);
+ }
+
+ private AtsAttributeTypes(String guid, String name, String description) {
+ super(guid, "ats." + name, description);
+ }
} \ No newline at end of file
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/DecisionReviewArtifact.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/DecisionReviewArtifact.java
index ec1d78f4048..9cccdcc0677 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/DecisionReviewArtifact.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/DecisionReviewArtifact.java
@@ -1,80 +1,80 @@
-/*******************************************************************************
- * 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.artifact;
-
-import java.util.Collection;
-import org.eclipse.osee.ats.util.widgets.XDecisionOptions;
-import org.eclipse.osee.framework.core.exception.OseeCoreException;
-import org.eclipse.osee.framework.core.exception.OseeDataStoreException;
-import org.eclipse.osee.framework.core.model.Branch;
-import org.eclipse.osee.framework.core.model.type.ArtifactType;
-import org.eclipse.osee.framework.skynet.core.User;
-import org.eclipse.osee.framework.skynet.core.artifact.ArtifactFactory;
-import org.eclipse.osee.framework.skynet.core.artifact.IATSStateMachineArtifact;
-import org.eclipse.osee.framework.skynet.core.utility.Artifacts;
-
-/**
- * @author Donald G. Dunne
- */
-public class DecisionReviewArtifact extends ReviewSMArtifact implements IReviewArtifact, IATSStateMachineArtifact {
-
- public XDecisionOptions decisionOptions;
- public static enum DecisionReviewState {
- Prepare,
- Decision,
- Followup,
- Completed
- };
-
- public DecisionReviewArtifact(ArtifactFactory parentFactory, String guid, String humanReadableId, Branch branch, ArtifactType artifactType) throws OseeDataStoreException {
- super(parentFactory, guid, humanReadableId, branch, artifactType);
- decisionOptions = new XDecisionOptions(this);
- }
-
- @Override
- public String getHelpContext() {
- return "decisionReview";
- }
-
- @Override
- public String getHyperName() {
- return getName();
- }
-
- @Override
- public String getWorldViewDecision() throws OseeCoreException {
+/*******************************************************************************
+ * 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.artifact;
+
+import java.util.Collection;
+import org.eclipse.osee.ats.util.widgets.XDecisionOptions;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.core.exception.OseeDataStoreException;
+import org.eclipse.osee.framework.core.model.Branch;
+import org.eclipse.osee.framework.core.model.type.ArtifactType;
+import org.eclipse.osee.framework.skynet.core.User;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactFactory;
+import org.eclipse.osee.framework.skynet.core.artifact.IATSStateMachineArtifact;
+import org.eclipse.osee.framework.skynet.core.utility.Artifacts;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class DecisionReviewArtifact extends ReviewSMArtifact implements IReviewArtifact, IATSStateMachineArtifact {
+
+ public XDecisionOptions decisionOptions;
+ public static enum DecisionReviewState {
+ Prepare,
+ Decision,
+ Followup,
+ Completed
+ };
+
+ public DecisionReviewArtifact(ArtifactFactory parentFactory, String guid, String humanReadableId, Branch branch, ArtifactType artifactType) throws OseeDataStoreException {
+ super(parentFactory, guid, humanReadableId, branch, artifactType);
+ decisionOptions = new XDecisionOptions(this);
+ }
+
+ @Override
+ public String getHelpContext() {
+ return "decisionReview";
+ }
+
+ @Override
+ public String getHyperName() {
+ return getName();
+ }
+
+ @Override
+ public String getWorldViewDecision() throws OseeCoreException {
return getSoleAttributeValue(AtsAttributeTypes.Decision, "");
- }
-
- @Override
- public String getWorldViewDescription() throws OseeCoreException {
+ }
+
+ @Override
+ public String getWorldViewDescription() throws OseeCoreException {
return getSoleAttributeValue(AtsAttributeTypes.Description, "");
- }
-
- @Override
- public VersionArtifact getWorldViewTargetedVersion() throws OseeCoreException {
- if (getParentSMA() == null) {
- return null;
- }
- return getParentSMA().getWorldViewTargetedVersion();
- }
-
- @Override
- public Collection<User> getImplementers() throws OseeCoreException {
- return getImplementersByState(DecisionReviewState.Decision.name());
- }
-
- @Override
- public String getWorldViewReviewDecider() throws OseeCoreException {
- return Artifacts.toString("; ", getStateMgr().getAssignees(DecisionReviewState.Decision.name()));
- }
-
+ }
+
+ @Override
+ public VersionArtifact getWorldViewTargetedVersion() throws OseeCoreException {
+ if (getParentSMA() == null) {
+ return null;
+ }
+ return getParentSMA().getWorldViewTargetedVersion();
+ }
+
+ @Override
+ public Collection<User> getImplementers() throws OseeCoreException {
+ return getImplementersByState(DecisionReviewState.Decision.name());
+ }
+
+ @Override
+ public String getWorldViewReviewDecider() throws OseeCoreException {
+ return Artifacts.toString("; ", getStateMgr().getAssignees(DecisionReviewState.Decision.name()));
+ }
+
} \ No newline at end of file
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/DecisionReviewWorkflowManager.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/DecisionReviewWorkflowManager.java
index d328e49979e..ab3ed71c389 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/DecisionReviewWorkflowManager.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/DecisionReviewWorkflowManager.java
@@ -29,9 +29,7 @@ public class DecisionReviewWorkflowManager {
* Quickly transition to a state with minimal metrics and data entered. Should only be used for automated
* transitioning for things such as developmental testing and demos.
*
- * @param toState
* @param user User to transition to OR null if should use user of current state
- * @param popup
* @return Result
* @throws Exception
*/
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/GoalArtifact.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/GoalArtifact.java
index f91b19973b7..633a6a14bea 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/GoalArtifact.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/GoalArtifact.java
@@ -1,276 +1,276 @@
-/*******************************************************************************
- * 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.artifact;
-
-import java.text.NumberFormat;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Date;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-import org.eclipse.jface.window.Window;
-import org.eclipse.nebula.widgets.xviewer.XViewerCells;
-import org.eclipse.osee.ats.artifact.ATSLog.LogType;
-import org.eclipse.osee.ats.util.AtsArtifactTypes;
-import org.eclipse.osee.ats.util.AtsRelationTypes;
-import org.eclipse.osee.ats.util.AtsUtil;
-import org.eclipse.osee.ats.world.search.GoalSearchItem;
-import org.eclipse.osee.framework.core.exception.OseeCoreException;
-import org.eclipse.osee.framework.core.exception.OseeDataStoreException;
-import org.eclipse.osee.framework.core.model.Branch;
-import org.eclipse.osee.framework.core.model.type.ArtifactType;
-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.ArtifactFactory;
-import org.eclipse.osee.framework.skynet.core.artifact.ArtifactTypeManager;
-import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
-import org.eclipse.osee.framework.ui.skynet.widgets.dialog.ArtifactListDialog;
-import org.eclipse.osee.framework.ui.skynet.widgets.dialog.EntryDialog;
-import org.eclipse.osee.framework.ui.swt.Displays;
-
-/**
- * @author Donald G. Dunne
- */
-public class GoalArtifact extends StateMachineArtifact {
-
- public static enum GoalState {
- InWork,
- Completed,
- Cancelled
- };
-
- public GoalArtifact(ArtifactFactory parentFactory, String guid, String humanReadableId, Branch branch, ArtifactType artifactType) throws OseeDataStoreException {
- super(parentFactory, guid, humanReadableId, branch, artifactType);
- registerAtsWorldRelation(AtsRelationTypes.Goal_Member);
- }
-
- @Override
- public ActionArtifact getParentActionArtifact() {
- return null;
- }
-
- @Override
- public StateMachineArtifact getParentSMA() throws OseeCoreException {
- List<Artifact> parents = getRelatedArtifacts(AtsRelationTypes.Goal_Goal);
- if (parents.isEmpty()) {
- return null;
- }
- if (parents.size() == 1) {
- return (StateMachineArtifact) parents.iterator().next();
- }
- System.err.println("Two parent goals, what do here?");
- return (StateMachineArtifact) parents.iterator().next();
- }
-
- @Override
- public TeamWorkFlowArtifact getParentTeamWorkflow() {
- return null;
- }
-
- @Override
- public Set<User> getPrivilegedUsers() {
- return null;
- }
-
- @Override
- public boolean isTaskable() {
- return false;
- }
-
- @Override
- public Date getWorldViewReleaseDate() {
- return null;
- }
-
- @Override
- public VersionArtifact getWorldViewTargetedVersion() {
- return null;
- }
-
- @Override
- public String getWorldViewParentID() {
- return null;
- }
-
- @Override
- public String getHyperTargetVersion() {
- return null;
- }
-
- public static void getGoals(Artifact artifact, Set<Artifact> goals, boolean recurse) throws OseeCoreException {
- getGoals(Arrays.asList(artifact), goals, recurse);
- }
-
- public static Collection<Artifact> getGoals(Artifact artifact, boolean recurse) throws OseeCoreException {
- Set<Artifact> goals = new HashSet<Artifact>();
- getGoals(artifact, goals, recurse);
- return goals;
- }
-
- public static void getGoals(Collection<Artifact> artifacts, Set<Artifact> goals, boolean recurse) throws OseeCoreException {
- for (Artifact art : artifacts) {
- if (art instanceof GoalArtifact) {
- goals.add(art);
- }
- goals.addAll(art.getRelatedArtifacts(AtsRelationTypes.Goal_Goal, GoalArtifact.class));
- if (recurse && art instanceof StateMachineArtifact && ((StateMachineArtifact) art).getParentSMA() != null) {
- getGoals(((StateMachineArtifact) art).getParentSMA(), goals, recurse);
- }
- }
- }
-
- public static boolean isHasGoal(Artifact artifact) throws OseeCoreException {
- return artifact.getRelatedArtifactsCount(AtsRelationTypes.Goal_Goal) > 0;
- }
-
- public static String getGoalOrder(Artifact artifact) throws OseeCoreException {
- if (artifact instanceof GoalArtifact) {
- return "";
- }
- if (!isHasGoal(artifact)) {
- return "";
- }
- Collection<Artifact> goals = GoalArtifact.getGoals(artifact, false);
- if (goals.size() > 1) {
- List<Artifact> goalsSorted = new ArrayList<Artifact>(goals);
- Collections.sort(goalsSorted);
- StringBuffer sb = new StringBuffer();
- for (Artifact goal : goalsSorted) {
- sb.append(String.format("%s-[%s] ", getGoalOrder((GoalArtifact) goal, artifact), goal));
- }
- return sb.toString();
- }
- Artifact goal = goals.iterator().next();
- return getGoalOrder((GoalArtifact) goal, artifact);
- }
-
- public static String getGoalOrder(GoalArtifact goalArtifact, Artifact member) throws OseeCoreException {
- List<Artifact> members = goalArtifact.getMembers();
- if (!members.contains(member)) {
- return "";
- }
- try {
- return String.valueOf(members.indexOf(member) + 1);
- } catch (Exception ex) {
- return XViewerCells.getCellExceptionString(ex);
- }
- }
-
- public static GoalArtifact createGoal(String title) throws OseeCoreException {
- GoalArtifact goalArt =
- (GoalArtifact) ArtifactTypeManager.addArtifact(AtsArtifactTypes.Goal, AtsUtil.getAtsBranch());
- goalArt.setName(title);
- goalArt.getLog().addLog(LogType.Originated, "", "");
-
- // Initialize state machine
- goalArt.getStateMgr().initializeStateMachine(GoalState.InWork.name(),
- Collections.singleton(UserManager.getUser()));
- goalArt.getLog().addLog(LogType.StateEntered, GoalState.InWork.name(), "");
- return goalArt;
- }
-
- public List<Artifact> getMembers() throws OseeCoreException {
- return getRelatedArtifacts(AtsRelationTypes.Goal_Member, false);
- }
-
- public void addMember(Artifact artifact) throws OseeCoreException {
- if (!getMembers().contains(artifact)) {
- addRelation(AtsRelationTypes.Goal_Member, artifact);
- }
- }
-
- /**
- * change goal, prompt if member of two goals
- */
- public static GoalArtifact promptChangeGoalOrder(Artifact artifact) throws OseeCoreException {
- if (!isHasGoal(artifact)) {
- AWorkbench.popup(String.format("No Goal set for artifact [%s]", artifact));
- return null;
- }
- Collection<Artifact> goals = getGoals(artifact, false);
- GoalArtifact goal = null;
- if (goals.size() == 1) {
- goal = (GoalArtifact) goals.iterator().next();
- } else if (goals.size() > 1) {
- ArtifactListDialog dialog = new ArtifactListDialog(Displays.getActiveShell());
- dialog.setTitle("Select Goal");
- dialog.setMessage("Artifact has multiple Goals\n\nSelect Goal to change order");
- dialog.setArtifacts(goals);
- if (dialog.open() == 0) {
- goal = (GoalArtifact) dialog.getSelection();
- } else {
- return null;
- }
- }
- return promptChangeGoalOrder(goal, artifact);
- }
-
- /**
- * change goal order for artifact within given goal
- */
- public static GoalArtifact promptChangeGoalOrder(GoalArtifact goalArtifact, Artifact artifact) throws OseeCoreException {
- return promptChangeGoalOrder(goalArtifact, Arrays.asList(artifact));
- }
-
- /**
- * change goal order for artifacts within given goal
- */
- public static GoalArtifact promptChangeGoalOrder(GoalArtifact goalArtifact, List<Artifact> artifacts) throws OseeCoreException {
- String currentOrder = "Current Order: ";
- for (Artifact artifact : artifacts) {
- if (artifacts.size() == 1 && !isHasGoal(artifact) || goalArtifact == null) {
- AWorkbench.popup(String.format("No Goal set for artifact [%s]", artifact));
- return null;
- }
- String currIndexStr = getGoalOrder(goalArtifact, artifact);
- currentOrder += currIndexStr + ", ";
- }
- currentOrder = currentOrder.replaceFirst(", $", "");
-
- List<Artifact> members = goalArtifact.getMembers();
- EntryDialog ed =
- new EntryDialog(
- "Change Goal Order",
- String.format(
- "Goal: %s\n\n%s\n\nEnter New Order Number from 1..%d or %d for last\n\nNote: Goal will be placed before number entered.",
- goalArtifact, currentOrder, members.size(), members.size() + 1));
- ed.setNumberFormat(NumberFormat.getIntegerInstance());
-
- int result = ed.open();
- if (result == Window.OK) {
- String newIndexStr = ed.getEntry();
- Integer enteredIndex = new Integer(newIndexStr);
- boolean insertLast = enteredIndex == members.size() + 1;
- Integer membersIndex = insertLast ? members.size() - 1 : enteredIndex - 1;
- if (membersIndex > members.size()) {
- AWorkbench.popup(String.format("New Order Number [%s] out of range 1..%d", newIndexStr, members.size()));
- return null;
- }
- for (Artifact artifact : artifacts) {
- Artifact insertTarget = members.get(membersIndex);
- goalArtifact.setRelationOrder(AtsRelationTypes.Goal_Member, insertTarget, insertLast ? true : false,
- artifact);
- }
- goalArtifact.persist();
- return goalArtifact;
- }
- return null;
- }
-
- public Collection<GoalArtifact> getInWorkGoals() throws OseeCoreException {
- GoalSearchItem searchItem = new GoalSearchItem("", new ArrayList<TeamDefinitionArtifact>(), false, null);
- return org.eclipse.osee.framework.jdk.core.util.Collections.castAll(searchItem.performSearchGetResults());
- }
-}
+/*******************************************************************************
+ * 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.artifact;
+
+import java.text.NumberFormat;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import org.eclipse.jface.window.Window;
+import org.eclipse.nebula.widgets.xviewer.XViewerCells;
+import org.eclipse.osee.ats.artifact.ATSLog.LogType;
+import org.eclipse.osee.ats.util.AtsArtifactTypes;
+import org.eclipse.osee.ats.util.AtsRelationTypes;
+import org.eclipse.osee.ats.util.AtsUtil;
+import org.eclipse.osee.ats.world.search.GoalSearchItem;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.core.exception.OseeDataStoreException;
+import org.eclipse.osee.framework.core.model.Branch;
+import org.eclipse.osee.framework.core.model.type.ArtifactType;
+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.ArtifactFactory;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactTypeManager;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
+import org.eclipse.osee.framework.ui.skynet.widgets.dialog.ArtifactListDialog;
+import org.eclipse.osee.framework.ui.skynet.widgets.dialog.EntryDialog;
+import org.eclipse.osee.framework.ui.swt.Displays;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class GoalArtifact extends StateMachineArtifact {
+
+ public static enum GoalState {
+ InWork,
+ Completed,
+ Cancelled
+ };
+
+ public GoalArtifact(ArtifactFactory parentFactory, String guid, String humanReadableId, Branch branch, ArtifactType artifactType) throws OseeDataStoreException {
+ super(parentFactory, guid, humanReadableId, branch, artifactType);
+ registerAtsWorldRelation(AtsRelationTypes.Goal_Member);
+ }
+
+ @Override
+ public ActionArtifact getParentActionArtifact() {
+ return null;
+ }
+
+ @Override
+ public StateMachineArtifact getParentSMA() throws OseeCoreException {
+ List<Artifact> parents = getRelatedArtifacts(AtsRelationTypes.Goal_Goal);
+ if (parents.isEmpty()) {
+ return null;
+ }
+ if (parents.size() == 1) {
+ return (StateMachineArtifact) parents.iterator().next();
+ }
+ System.err.println("Two parent goals, what do here?");
+ return (StateMachineArtifact) parents.iterator().next();
+ }
+
+ @Override
+ public TeamWorkFlowArtifact getParentTeamWorkflow() {
+ return null;
+ }
+
+ @Override
+ public Set<User> getPrivilegedUsers() {
+ return null;
+ }
+
+ @Override
+ public boolean isTaskable() {
+ return false;
+ }
+
+ @Override
+ public Date getWorldViewReleaseDate() {
+ return null;
+ }
+
+ @Override
+ public VersionArtifact getWorldViewTargetedVersion() {
+ return null;
+ }
+
+ @Override
+ public String getWorldViewParentID() {
+ return null;
+ }
+
+ @Override
+ public String getHyperTargetVersion() {
+ return null;
+ }
+
+ public static void getGoals(Artifact artifact, Set<Artifact> goals, boolean recurse) throws OseeCoreException {
+ getGoals(Arrays.asList(artifact), goals, recurse);
+ }
+
+ public static Collection<Artifact> getGoals(Artifact artifact, boolean recurse) throws OseeCoreException {
+ Set<Artifact> goals = new HashSet<Artifact>();
+ getGoals(artifact, goals, recurse);
+ return goals;
+ }
+
+ public static void getGoals(Collection<Artifact> artifacts, Set<Artifact> goals, boolean recurse) throws OseeCoreException {
+ for (Artifact art : artifacts) {
+ if (art instanceof GoalArtifact) {
+ goals.add(art);
+ }
+ goals.addAll(art.getRelatedArtifacts(AtsRelationTypes.Goal_Goal, GoalArtifact.class));
+ if (recurse && art instanceof StateMachineArtifact && ((StateMachineArtifact) art).getParentSMA() != null) {
+ getGoals(((StateMachineArtifact) art).getParentSMA(), goals, recurse);
+ }
+ }
+ }
+
+ public static boolean isHasGoal(Artifact artifact) throws OseeCoreException {
+ return artifact.getRelatedArtifactsCount(AtsRelationTypes.Goal_Goal) > 0;
+ }
+
+ public static String getGoalOrder(Artifact artifact) throws OseeCoreException {
+ if (artifact instanceof GoalArtifact) {
+ return "";
+ }
+ if (!isHasGoal(artifact)) {
+ return "";
+ }
+ Collection<Artifact> goals = GoalArtifact.getGoals(artifact, false);
+ if (goals.size() > 1) {
+ List<Artifact> goalsSorted = new ArrayList<Artifact>(goals);
+ Collections.sort(goalsSorted);
+ StringBuffer sb = new StringBuffer();
+ for (Artifact goal : goalsSorted) {
+ sb.append(String.format("%s-[%s] ", getGoalOrder((GoalArtifact) goal, artifact), goal));
+ }
+ return sb.toString();
+ }
+ Artifact goal = goals.iterator().next();
+ return getGoalOrder((GoalArtifact) goal, artifact);
+ }
+
+ public static String getGoalOrder(GoalArtifact goalArtifact, Artifact member) throws OseeCoreException {
+ List<Artifact> members = goalArtifact.getMembers();
+ if (!members.contains(member)) {
+ return "";
+ }
+ try {
+ return String.valueOf(members.indexOf(member) + 1);
+ } catch (Exception ex) {
+ return XViewerCells.getCellExceptionString(ex);
+ }
+ }
+
+ public static GoalArtifact createGoal(String title) throws OseeCoreException {
+ GoalArtifact goalArt =
+ (GoalArtifact) ArtifactTypeManager.addArtifact(AtsArtifactTypes.Goal, AtsUtil.getAtsBranch());
+ goalArt.setName(title);
+ goalArt.getLog().addLog(LogType.Originated, "", "");
+
+ // Initialize state machine
+ goalArt.getStateMgr().initializeStateMachine(GoalState.InWork.name(),
+ Collections.singleton(UserManager.getUser()));
+ goalArt.getLog().addLog(LogType.StateEntered, GoalState.InWork.name(), "");
+ return goalArt;
+ }
+
+ public List<Artifact> getMembers() throws OseeCoreException {
+ return getRelatedArtifacts(AtsRelationTypes.Goal_Member, false);
+ }
+
+ public void addMember(Artifact artifact) throws OseeCoreException {
+ if (!getMembers().contains(artifact)) {
+ addRelation(AtsRelationTypes.Goal_Member, artifact);
+ }
+ }
+
+ /**
+ * change goal, prompt if member of two goals
+ */
+ public static GoalArtifact promptChangeGoalOrder(Artifact artifact) throws OseeCoreException {
+ if (!isHasGoal(artifact)) {
+ AWorkbench.popup(String.format("No Goal set for artifact [%s]", artifact));
+ return null;
+ }
+ Collection<Artifact> goals = getGoals(artifact, false);
+ GoalArtifact goal = null;
+ if (goals.size() == 1) {
+ goal = (GoalArtifact) goals.iterator().next();
+ } else if (goals.size() > 1) {
+ ArtifactListDialog dialog = new ArtifactListDialog(Displays.getActiveShell());
+ dialog.setTitle("Select Goal");
+ dialog.setMessage("Artifact has multiple Goals\n\nSelect Goal to change order");
+ dialog.setArtifacts(goals);
+ if (dialog.open() == 0) {
+ goal = (GoalArtifact) dialog.getSelection();
+ } else {
+ return null;
+ }
+ }
+ return promptChangeGoalOrder(goal, artifact);
+ }
+
+ /**
+ * change goal order for artifact within given goal
+ */
+ public static GoalArtifact promptChangeGoalOrder(GoalArtifact goalArtifact, Artifact artifact) throws OseeCoreException {
+ return promptChangeGoalOrder(goalArtifact, Arrays.asList(artifact));
+ }
+
+ /**
+ * change goal order for artifacts within given goal
+ */
+ public static GoalArtifact promptChangeGoalOrder(GoalArtifact goalArtifact, List<Artifact> artifacts) throws OseeCoreException {
+ String currentOrder = "Current Order: ";
+ for (Artifact artifact : artifacts) {
+ if (artifacts.size() == 1 && !isHasGoal(artifact) || goalArtifact == null) {
+ AWorkbench.popup(String.format("No Goal set for artifact [%s]", artifact));
+ return null;
+ }
+ String currIndexStr = getGoalOrder(goalArtifact, artifact);
+ currentOrder += currIndexStr + ", ";
+ }
+ currentOrder = currentOrder.replaceFirst(", $", "");
+
+ List<Artifact> members = goalArtifact.getMembers();
+ EntryDialog ed =
+ new EntryDialog(
+ "Change Goal Order",
+ String.format(
+ "Goal: %s\n\n%s\n\nEnter New Order Number from 1..%d or %d for last\n\nNote: Goal will be placed before number entered.",
+ goalArtifact, currentOrder, members.size(), members.size() + 1));
+ ed.setNumberFormat(NumberFormat.getIntegerInstance());
+
+ int result = ed.open();
+ if (result == Window.OK) {
+ String newIndexStr = ed.getEntry();
+ Integer enteredIndex = new Integer(newIndexStr);
+ boolean insertLast = enteredIndex == members.size() + 1;
+ Integer membersIndex = insertLast ? members.size() - 1 : enteredIndex - 1;
+ if (membersIndex > members.size()) {
+ AWorkbench.popup(String.format("New Order Number [%s] out of range 1..%d", newIndexStr, members.size()));
+ return null;
+ }
+ for (Artifact artifact : artifacts) {
+ Artifact insertTarget = members.get(membersIndex);
+ goalArtifact.setRelationOrder(AtsRelationTypes.Goal_Member, insertTarget, insertLast ? true : false,
+ artifact);
+ }
+ goalArtifact.persist();
+ return goalArtifact;
+ }
+ return null;
+ }
+
+ public Collection<GoalArtifact> getInWorkGoals() throws OseeCoreException {
+ GoalSearchItem searchItem = new GoalSearchItem("", new ArrayList<TeamDefinitionArtifact>(), false, null);
+ return org.eclipse.osee.framework.jdk.core.util.Collections.castAll(searchItem.performSearchGetResults());
+ }
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/PeerToPeerReviewArtifact.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/PeerToPeerReviewArtifact.java
index 4c896e35a48..6d7b8971f2b 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/PeerToPeerReviewArtifact.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/PeerToPeerReviewArtifact.java
@@ -1,130 +1,130 @@
-/*******************************************************************************
- * 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.artifact;
-
-import java.util.Collection;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.osee.ats.internal.AtsPlugin;
-import org.eclipse.osee.ats.util.widgets.defect.DefectManager;
-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.core.exception.OseeDataStoreException;
-import org.eclipse.osee.framework.core.model.Branch;
-import org.eclipse.osee.framework.core.model.type.ArtifactType;
-import org.eclipse.osee.framework.skynet.core.User;
-import org.eclipse.osee.framework.skynet.core.artifact.ArtifactFactory;
-import org.eclipse.osee.framework.skynet.core.artifact.IATSStateMachineArtifact;
-import org.eclipse.osee.framework.skynet.core.utility.Artifacts;
-
-/**
- * @author Donald G. Dunne
- */
-public class PeerToPeerReviewArtifact extends ReviewSMArtifact implements IReviewArtifact, IATSStateMachineArtifact {
-
- public static enum PeerToPeerReviewState {
- Prepare,
- Review,
- Completed
- };
-
- public PeerToPeerReviewArtifact(ArtifactFactory parentFactory, String guid, String humanReadableId, Branch branch, ArtifactType artifactType) throws OseeDataStoreException {
- super(parentFactory, guid, humanReadableId, branch, artifactType);
- defectManager = new DefectManager(this);
- }
-
- public static String getDefaultReviewTitle(TeamWorkFlowArtifact teamArt) {
- return "Review \"" + teamArt.getArtifactTypeName() + "\" titled \"" + teamArt.getName() + "\"";
- }
-
- @Override
- public IStatus isUserRoleValid(String namespace) throws OseeCoreException {
- if (getUserRoleManager().getUserRoles(Role.Author).size() <= 0) {
- return new Status(IStatus.ERROR, namespace, "Must have at least one Author");
- }
- if (getUserRoleManager().getUserRoles(Role.Reviewer).size() <= 0) {
- return new Status(IStatus.ERROR, namespace, "Must have at least one Reviewer");
- }
- // If in review state, all roles must have hours spent entered
- if (getStateMgr().getCurrentStateName().equals(PeerToPeerReviewArtifact.PeerToPeerReviewState.Review.name())) {
- for (UserRole uRole : userRoleManager.getUserRoles()) {
- if (uRole.getHoursSpent() == null) {
- new Status(IStatus.ERROR, AtsPlugin.PLUGIN_ID, "Hours spent must be entered for each role.");
- }
- }
- }
- return super.isUserRoleValid(namespace);
- }
-
- @Override
- public String getHelpContext() {
- return "peerToPeerReview";
- }
-
- @Override
- public String getHyperName() {
- return getName();
- }
-
- @Override
- public String getWorldViewDescription() throws OseeCoreException {
+/*******************************************************************************
+ * 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.artifact;
+
+import java.util.Collection;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.osee.ats.internal.AtsPlugin;
+import org.eclipse.osee.ats.util.widgets.defect.DefectManager;
+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.core.exception.OseeDataStoreException;
+import org.eclipse.osee.framework.core.model.Branch;
+import org.eclipse.osee.framework.core.model.type.ArtifactType;
+import org.eclipse.osee.framework.skynet.core.User;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactFactory;
+import org.eclipse.osee.framework.skynet.core.artifact.IATSStateMachineArtifact;
+import org.eclipse.osee.framework.skynet.core.utility.Artifacts;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class PeerToPeerReviewArtifact extends ReviewSMArtifact implements IReviewArtifact, IATSStateMachineArtifact {
+
+ public static enum PeerToPeerReviewState {
+ Prepare,
+ Review,
+ Completed
+ };
+
+ public PeerToPeerReviewArtifact(ArtifactFactory parentFactory, String guid, String humanReadableId, Branch branch, ArtifactType artifactType) throws OseeDataStoreException {
+ super(parentFactory, guid, humanReadableId, branch, artifactType);
+ defectManager = new DefectManager(this);
+ }
+
+ public static String getDefaultReviewTitle(TeamWorkFlowArtifact teamArt) {
+ return "Review \"" + teamArt.getArtifactTypeName() + "\" titled \"" + teamArt.getName() + "\"";
+ }
+
+ @Override
+ public IStatus isUserRoleValid(String namespace) throws OseeCoreException {
+ if (getUserRoleManager().getUserRoles(Role.Author).size() <= 0) {
+ return new Status(IStatus.ERROR, namespace, "Must have at least one Author");
+ }
+ if (getUserRoleManager().getUserRoles(Role.Reviewer).size() <= 0) {
+ return new Status(IStatus.ERROR, namespace, "Must have at least one Reviewer");
+ }
+ // If in review state, all roles must have hours spent entered
+ if (getStateMgr().getCurrentStateName().equals(PeerToPeerReviewArtifact.PeerToPeerReviewState.Review.name())) {
+ for (UserRole uRole : userRoleManager.getUserRoles()) {
+ if (uRole.getHoursSpent() == null) {
+ new Status(IStatus.ERROR, AtsPlugin.PLUGIN_ID, "Hours spent must be entered for each role.");
+ }
+ }
+ }
+ return super.isUserRoleValid(namespace);
+ }
+
+ @Override
+ public String getHelpContext() {
+ return "peerToPeerReview";
+ }
+
+ @Override
+ public String getHyperName() {
+ return getName();
+ }
+
+ @Override
+ public String getWorldViewDescription() throws OseeCoreException {
return getSoleAttributeValue(AtsAttributeTypes.Description, "");
- }
-
- @Override
- public VersionArtifact getWorldViewTargetedVersion() throws OseeCoreException {
- if (getParentSMA() == null) {
- return null;
- }
- return getParentSMA().getWorldViewTargetedVersion();
- }
-
- @Override
- public Collection<User> getImplementers() throws OseeCoreException {
- Collection<User> users = getImplementersByState(PeerToPeerReviewState.Review.name());
- for (UserRole role : userRoleManager.getUserRoles()) {
- users.add(role.getUser());
- }
- return users;
- }
-
- @Override
- public String getWorldViewReviewAuthor() throws OseeCoreException {
- return Artifacts.toString("; ", getUserRoleManager().getRoleUsers(Role.Author));
- }
-
- @Override
- public String getWorldViewReviewModerator() throws OseeCoreException {
- return Artifacts.toString("; ", getUserRoleManager().getRoleUsers(Role.Moderator));
- }
-
- @Override
- public String getWorldViewReviewReviewer() throws OseeCoreException {
- return Artifacts.toString("; ", getUserRoleManager().getRoleUsers(Role.Reviewer));
- }
-
- @Override
- public String getWorldViewNumberOfReviewIssueDefects() throws OseeCoreException {
- return String.valueOf(getDefectManager().getNumIssues());
- }
-
- @Override
- public String getWorldViewNumberOfReviewMajorDefects() throws OseeCoreException {
- return String.valueOf(getDefectManager().getNumMajor());
- }
-
- @Override
- public String getWorldViewNumberOfReviewMinorDefects() throws OseeCoreException {
- return String.valueOf(getDefectManager().getNumMinor());
- }
-
-}
+ }
+
+ @Override
+ public VersionArtifact getWorldViewTargetedVersion() throws OseeCoreException {
+ if (getParentSMA() == null) {
+ return null;
+ }
+ return getParentSMA().getWorldViewTargetedVersion();
+ }
+
+ @Override
+ public Collection<User> getImplementers() throws OseeCoreException {
+ Collection<User> users = getImplementersByState(PeerToPeerReviewState.Review.name());
+ for (UserRole role : userRoleManager.getUserRoles()) {
+ users.add(role.getUser());
+ }
+ return users;
+ }
+
+ @Override
+ public String getWorldViewReviewAuthor() throws OseeCoreException {
+ return Artifacts.toString("; ", getUserRoleManager().getRoleUsers(Role.Author));
+ }
+
+ @Override
+ public String getWorldViewReviewModerator() throws OseeCoreException {
+ return Artifacts.toString("; ", getUserRoleManager().getRoleUsers(Role.Moderator));
+ }
+
+ @Override
+ public String getWorldViewReviewReviewer() throws OseeCoreException {
+ return Artifacts.toString("; ", getUserRoleManager().getRoleUsers(Role.Reviewer));
+ }
+
+ @Override
+ public String getWorldViewNumberOfReviewIssueDefects() throws OseeCoreException {
+ return String.valueOf(getDefectManager().getNumIssues());
+ }
+
+ @Override
+ public String getWorldViewNumberOfReviewMajorDefects() throws OseeCoreException {
+ return String.valueOf(getDefectManager().getNumMajor());
+ }
+
+ @Override
+ public String getWorldViewNumberOfReviewMinorDefects() throws OseeCoreException {
+ return String.valueOf(getDefectManager().getNumMinor());
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/PeerToPeerReviewWorkflowManager.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/PeerToPeerReviewWorkflowManager.java
index 7e5dd4c2411..2a57dead04f 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/PeerToPeerReviewWorkflowManager.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/PeerToPeerReviewWorkflowManager.java
@@ -33,10 +33,7 @@ public class PeerToPeerReviewWorkflowManager {
* Quickly transition to a state with minimal metrics and data entered. Should only be used for automated transition
* for things such as developmental testing and demos.
*
- * @param toState
* @param user User to transition to OR null if should use user of current state
- * @param popup
- * @param transaction
* @return Result
* @throws Exception
*/
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/ReviewSMArtifact.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/ReviewSMArtifact.java
index 1f2673e219c..de916b4cbd2 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/ReviewSMArtifact.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/ReviewSMArtifact.java
@@ -1,343 +1,343 @@
-/*******************************************************************************
- * 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.artifact;
-
-import java.util.Collection;
-import java.util.Date;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-import java.util.logging.Level;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.osee.ats.internal.AtsPlugin;
-import org.eclipse.osee.ats.util.AtsNotifyUsers;
-import org.eclipse.osee.ats.util.AtsRelationTypes;
-import org.eclipse.osee.ats.util.AtsUtil;
-import org.eclipse.osee.ats.util.widgets.XActionableItemsDam;
-import org.eclipse.osee.ats.util.widgets.defect.DefectManager;
-import org.eclipse.osee.ats.util.widgets.role.UserRole;
-import org.eclipse.osee.ats.util.widgets.role.UserRole.Role;
-import org.eclipse.osee.ats.util.widgets.role.UserRoleManager;
-import org.eclipse.osee.framework.core.exception.OseeCoreException;
-import org.eclipse.osee.framework.core.exception.OseeDataStoreException;
-import org.eclipse.osee.framework.core.model.Branch;
-import org.eclipse.osee.framework.core.model.type.ArtifactType;
-import org.eclipse.osee.framework.logging.OseeLog;
-import org.eclipse.osee.framework.skynet.core.User;
-import org.eclipse.osee.framework.skynet.core.UserManager;
-import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
-import org.eclipse.osee.framework.skynet.core.artifact.ArtifactFactory;
-import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction;
-
-/**
- * @author Donald G. Dunne
- */
-public abstract class ReviewSMArtifact extends TaskableStateMachineArtifact {
-
- protected DefectManager defectManager;
- protected UserRoleManager userRoleManager;
- private XActionableItemsDam actionableItemsDam;
- private Collection<UserRole> preSaveReviewRoleComplete;
- Boolean standAlone = null;
- public static enum ReviewBlockType {
- None,
- Transition,
- Commit
- };
-
- public ReviewSMArtifact(ArtifactFactory parentFactory, String guid, String humanReadableId, Branch branch, ArtifactType artifactType) throws OseeDataStoreException {
- super(parentFactory, guid, humanReadableId, branch, artifactType);
- }
-
- @Override
- public void onInitializationComplete() throws OseeCoreException {
- super.onInitializationComplete();
- initializeSMA();
- };
-
- @Override
- public Set<User> getPrivilegedUsers() throws OseeCoreException {
- Set<User> users = new HashSet<User>();
- if (getParentTeamWorkflow() != null) {
- users.addAll(getParentTeamWorkflow().getPrivilegedUsers());
- }
- for (ActionableItemArtifact aia : getActionableItemsDam().getActionableItems()) {
- for (TeamDefinitionArtifact teamDef : aia.getImpactedTeamDefs()) {
- addPriviledgedUsersUpTeamDefinitionTree(teamDef, users);
- }
- }
- if (AtsUtil.isAtsAdmin()) {
- users.add(UserManager.getUser());
- }
- return users;
- }
-
- @Override
- public void onAttributePersist(SkynetTransaction transaction) {
- super.onAttributePersist(transaction);
- // Since multiple ways exist to change the assignees, notification is performed on the persist
- if (isDeleted()) {
- return;
- }
- try {
- notifyReviewersComplete();
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
- }
-
- @Override
- public void initalizePreSaveCache() {
- super.initalizePreSaveCache();
- try {
- preSaveReviewRoleComplete = getRoleUsersReviewComplete();
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
- }
-
- private Collection<UserRole> getRoleUsersReviewComplete() throws OseeCoreException {
- return this.getUserRoleManager().getRoleUsersReviewComplete();
- }
-
- public void notifyReviewersComplete() throws OseeCoreException {
- UserRoleManager userRoleManager = this.getUserRoleManager();
- if (!preSaveReviewRoleComplete.equals(userRoleManager.getRoleUsersReviewComplete())) {
- //all reviewers are complete; send notification to author/moderator
- if (userRoleManager.getUserRoles(Role.Reviewer).equals(userRoleManager.getRoleUsersReviewComplete())) {
- AtsNotifyUsers.getInstance().notify(this, AtsNotifyUsers.NotifyType.Reviewed);
- }
- }
- preSaveReviewRoleComplete = userRoleManager.getRoleUsersReviewComplete();
- }
-
- /**
- * Reset managers for case where artifact is re-loaded/initialized
- *
- * @throws OseeCoreException
- * @see org.eclipse.osee.ats.artifact.StateMachineArtifact#initialize()
- */
- @Override
- protected void initializeSMA() throws OseeCoreException {
- super.initializeSMA();
- defectManager = new DefectManager(this);
- userRoleManager = new UserRoleManager(this);
- actionableItemsDam = new XActionableItemsDam(this);
- }
-
- @Override
- public String getArtifactSuperTypeName() {
- return "Review";
- }
-
- public boolean isBlocking() throws OseeCoreException {
- return getReviewBlockType() != ReviewBlockType.None;
- }
-
- public ReviewBlockType getReviewBlockType() throws OseeCoreException {
+/*******************************************************************************
+ * 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.artifact;
+
+import java.util.Collection;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.logging.Level;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.osee.ats.internal.AtsPlugin;
+import org.eclipse.osee.ats.util.AtsNotifyUsers;
+import org.eclipse.osee.ats.util.AtsRelationTypes;
+import org.eclipse.osee.ats.util.AtsUtil;
+import org.eclipse.osee.ats.util.widgets.XActionableItemsDam;
+import org.eclipse.osee.ats.util.widgets.defect.DefectManager;
+import org.eclipse.osee.ats.util.widgets.role.UserRole;
+import org.eclipse.osee.ats.util.widgets.role.UserRole.Role;
+import org.eclipse.osee.ats.util.widgets.role.UserRoleManager;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.core.exception.OseeDataStoreException;
+import org.eclipse.osee.framework.core.model.Branch;
+import org.eclipse.osee.framework.core.model.type.ArtifactType;
+import org.eclipse.osee.framework.logging.OseeLog;
+import org.eclipse.osee.framework.skynet.core.User;
+import org.eclipse.osee.framework.skynet.core.UserManager;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactFactory;
+import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction;
+
+/**
+ * @author Donald G. Dunne
+ */
+public abstract class ReviewSMArtifact extends TaskableStateMachineArtifact {
+
+ protected DefectManager defectManager;
+ protected UserRoleManager userRoleManager;
+ private XActionableItemsDam actionableItemsDam;
+ private Collection<UserRole> preSaveReviewRoleComplete;
+ Boolean standAlone = null;
+ public static enum ReviewBlockType {
+ None,
+ Transition,
+ Commit
+ };
+
+ public ReviewSMArtifact(ArtifactFactory parentFactory, String guid, String humanReadableId, Branch branch, ArtifactType artifactType) throws OseeDataStoreException {
+ super(parentFactory, guid, humanReadableId, branch, artifactType);
+ }
+
+ @Override
+ public void onInitializationComplete() throws OseeCoreException {
+ super.onInitializationComplete();
+ initializeSMA();
+ };
+
+ @Override
+ public Set<User> getPrivilegedUsers() throws OseeCoreException {
+ Set<User> users = new HashSet<User>();
+ if (getParentTeamWorkflow() != null) {
+ users.addAll(getParentTeamWorkflow().getPrivilegedUsers());
+ }
+ for (ActionableItemArtifact aia : getActionableItemsDam().getActionableItems()) {
+ for (TeamDefinitionArtifact teamDef : aia.getImpactedTeamDefs()) {
+ addPriviledgedUsersUpTeamDefinitionTree(teamDef, users);
+ }
+ }
+ if (AtsUtil.isAtsAdmin()) {
+ users.add(UserManager.getUser());
+ }
+ return users;
+ }
+
+ @Override
+ public void onAttributePersist(SkynetTransaction transaction) {
+ super.onAttributePersist(transaction);
+ // Since multiple ways exist to change the assignees, notification is performed on the persist
+ if (isDeleted()) {
+ return;
+ }
+ try {
+ notifyReviewersComplete();
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ }
+ }
+
+ @Override
+ public void initalizePreSaveCache() {
+ super.initalizePreSaveCache();
+ try {
+ preSaveReviewRoleComplete = getRoleUsersReviewComplete();
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ }
+ }
+
+ private Collection<UserRole> getRoleUsersReviewComplete() throws OseeCoreException {
+ return this.getUserRoleManager().getRoleUsersReviewComplete();
+ }
+
+ public void notifyReviewersComplete() throws OseeCoreException {
+ UserRoleManager userRoleManager = this.getUserRoleManager();
+ if (!preSaveReviewRoleComplete.equals(userRoleManager.getRoleUsersReviewComplete())) {
+ //all reviewers are complete; send notification to author/moderator
+ if (userRoleManager.getUserRoles(Role.Reviewer).equals(userRoleManager.getRoleUsersReviewComplete())) {
+ AtsNotifyUsers.getInstance().notify(this, AtsNotifyUsers.NotifyType.Reviewed);
+ }
+ }
+ preSaveReviewRoleComplete = userRoleManager.getRoleUsersReviewComplete();
+ }
+
+ /**
+ * Reset managers for case where artifact is re-loaded/initialized
+ *
+ * @throws OseeCoreException
+ * @see org.eclipse.osee.ats.artifact.StateMachineArtifact#initialize()
+ */
+ @Override
+ protected void initializeSMA() throws OseeCoreException {
+ super.initializeSMA();
+ defectManager = new DefectManager(this);
+ userRoleManager = new UserRoleManager(this);
+ actionableItemsDam = new XActionableItemsDam(this);
+ }
+
+ @Override
+ public String getArtifactSuperTypeName() {
+ return "Review";
+ }
+
+ public boolean isBlocking() throws OseeCoreException {
+ return getReviewBlockType() != ReviewBlockType.None;
+ }
+
+ public ReviewBlockType getReviewBlockType() throws OseeCoreException {
String typeStr = getSoleAttributeValue(AtsAttributeTypes.ReviewBlocks, null);
- if (typeStr == null) {
- // Check old attribute value
+ if (typeStr == null) {
+ // Check old attribute value
if (getSoleAttributeValue(AtsAttributeTypes.BlockingReview, false) == true) {
- return ReviewBlockType.Transition;
- }
- return ReviewBlockType.None;
- }
- return ReviewBlockType.valueOf(typeStr);
- }
-
- public DefectManager getDefectManager() {
- if (defectManager == null) {
- defectManager = new DefectManager(this);
- }
- return defectManager;
- }
-
- @Override
- public String getHyperTargetVersion() {
- return null;
- }
-
- public UserRoleManager getUserRoleManager() {
- if (userRoleManager == null) {
- return userRoleManager = new UserRoleManager(this);
- }
- return userRoleManager;
- }
-
- @SuppressWarnings("unused")
- public IStatus isUserRoleValid(String namespace) throws OseeCoreException {
- // Need this cause it removes all error items of this namespace
- return new Status(IStatus.OK, namespace, "");
- }
-
- public Set<TeamDefinitionArtifact> getCorrespondingTeamDefinitionArtifact() throws OseeCoreException {
- Set<TeamDefinitionArtifact> teamDefs = new HashSet<TeamDefinitionArtifact>();
- if (getParentTeamWorkflow() != null) {
- teamDefs.add(getParentTeamWorkflow().getTeamDefinition());
- }
- if (getActionableItemsDam().getActionableItems().size() > 0) {
- teamDefs.addAll(ActionableItemArtifact.getImpactedTeamDefs(getActionableItemsDam().getActionableItems()));
- }
- return teamDefs;
- }
-
- /**
- * @return the actionableItemsDam
- */
- public XActionableItemsDam getActionableItemsDam() throws OseeCoreException {
- if (actionableItemsDam == null) {
- actionableItemsDam = new XActionableItemsDam(this);
- }
- return actionableItemsDam;
- }
-
- @Override
- public StateMachineArtifact getParentSMA() throws OseeCoreException {
- if (isStandAloneReview()) {
- return null;
- }
- if (parentSma != null) {
- return parentSma;
- }
- parentSma = getParentTeamWorkflow();
- return parentSma;
- }
-
- @Override
- public ActionArtifact getParentActionArtifact() throws OseeCoreException {
- if (isStandAloneReview()) {
- return null;
- }
- if (parentAction != null) {
- return parentAction;
- }
- parentTeamArt = getParentTeamWorkflow();
- if (parentTeamArt != null) {
- parentAction = parentTeamArt.getParentActionArtifact();
- }
- return parentAction;
- }
-
- @Override
- public TeamWorkFlowArtifact getParentTeamWorkflow() throws OseeCoreException {
- if (isStandAloneReview()) {
- return null;
- }
- if (parentTeamArt != null) {
- return parentTeamArt;
- }
- List<TeamWorkFlowArtifact> teams =
- getRelatedArtifacts(AtsRelationTypes.TeamWorkflowToReview_Team, TeamWorkFlowArtifact.class);
- if (teams.size() > 1) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE,
- getArtifactTypeName() + " " + getHumanReadableId() + " has multiple parent workflows");
- } else if (!isStandAloneReview() && teams.isEmpty()) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE,
- getArtifactTypeName() + " " + getHumanReadableId() + " has no parent workflow");
- }
- if (teams.size() > 0) {
- parentTeamArt = teams.iterator().next();
- }
- return parentTeamArt;
- }
-
- public boolean isStandAloneReview() throws OseeCoreException {
- if (standAlone == null) {
- standAlone = getActionableItemsDam().getActionableItemGuids().size() > 0;
- }
- return standAlone;
- }
-
- @Override
- public String getWorldViewParentID() throws OseeCoreException {
- return getParentTeamWorkflow().getHumanReadableId();
- }
-
- @Override
- public Date getWorldViewDeadlineDate() {
- return null;
- }
-
- @Override
- public String getWorldViewCategory() {
- return "";
- }
-
- @Override
- public Date getWorldViewReleaseDate() {
- return null;
- }
-
- @Override
- public String getWorldViewTeam() throws OseeCoreException {
- TeamWorkFlowArtifact teamDef = getParentTeamWorkflow();
- if (teamDef != null) {
- return teamDef.getWorldViewTeam();
- }
- return "";
- }
-
- @SuppressWarnings("unused")
- @Override
- public String getWorldViewReviewDecider() throws OseeCoreException {
- return "";
- }
-
- @SuppressWarnings("unused")
- @Override
- public String getWorldViewReviewModerator() throws OseeCoreException {
- return "";
- }
-
- @SuppressWarnings("unused")
- @Override
- public String getWorldViewReviewReviewer() throws OseeCoreException {
- return "";
- }
-
- @SuppressWarnings("unused")
- @Override
- public String getWorldViewReviewAuthor() throws OseeCoreException {
- return "";
- }
-
- @Override
- public double getWorldViewWeeklyBenefit() {
- return 0;
- }
-
- @Override
- public String getWorldViewWorkPackage() {
- return "";
- }
-
- public Artifact getArtifact() {
- return this;
- }
-
- @Override
- public String getWorldViewCategory2() {
- return "";
- }
-
- @Override
- public String getWorldViewCategory3() {
- return "";
- }
-
- @Override
- public String getWorldViewDeadlineDateStr() {
- return "";
- }
-
-}
+ return ReviewBlockType.Transition;
+ }
+ return ReviewBlockType.None;
+ }
+ return ReviewBlockType.valueOf(typeStr);
+ }
+
+ public DefectManager getDefectManager() {
+ if (defectManager == null) {
+ defectManager = new DefectManager(this);
+ }
+ return defectManager;
+ }
+
+ @Override
+ public String getHyperTargetVersion() {
+ return null;
+ }
+
+ public UserRoleManager getUserRoleManager() {
+ if (userRoleManager == null) {
+ return userRoleManager = new UserRoleManager(this);
+ }
+ return userRoleManager;
+ }
+
+ @SuppressWarnings("unused")
+ public IStatus isUserRoleValid(String namespace) throws OseeCoreException {
+ // Need this cause it removes all error items of this namespace
+ return new Status(IStatus.OK, namespace, "");
+ }
+
+ public Set<TeamDefinitionArtifact> getCorrespondingTeamDefinitionArtifact() throws OseeCoreException {
+ Set<TeamDefinitionArtifact> teamDefs = new HashSet<TeamDefinitionArtifact>();
+ if (getParentTeamWorkflow() != null) {
+ teamDefs.add(getParentTeamWorkflow().getTeamDefinition());
+ }
+ if (getActionableItemsDam().getActionableItems().size() > 0) {
+ teamDefs.addAll(ActionableItemArtifact.getImpactedTeamDefs(getActionableItemsDam().getActionableItems()));
+ }
+ return teamDefs;
+ }
+
+ /**
+ * @return the actionableItemsDam
+ */
+ public XActionableItemsDam getActionableItemsDam() throws OseeCoreException {
+ if (actionableItemsDam == null) {
+ actionableItemsDam = new XActionableItemsDam(this);
+ }
+ return actionableItemsDam;
+ }
+
+ @Override
+ public StateMachineArtifact getParentSMA() throws OseeCoreException {
+ if (isStandAloneReview()) {
+ return null;
+ }
+ if (parentSma != null) {
+ return parentSma;
+ }
+ parentSma = getParentTeamWorkflow();
+ return parentSma;
+ }
+
+ @Override
+ public ActionArtifact getParentActionArtifact() throws OseeCoreException {
+ if (isStandAloneReview()) {
+ return null;
+ }
+ if (parentAction != null) {
+ return parentAction;
+ }
+ parentTeamArt = getParentTeamWorkflow();
+ if (parentTeamArt != null) {
+ parentAction = parentTeamArt.getParentActionArtifact();
+ }
+ return parentAction;
+ }
+
+ @Override
+ public TeamWorkFlowArtifact getParentTeamWorkflow() throws OseeCoreException {
+ if (isStandAloneReview()) {
+ return null;
+ }
+ if (parentTeamArt != null) {
+ return parentTeamArt;
+ }
+ List<TeamWorkFlowArtifact> teams =
+ getRelatedArtifacts(AtsRelationTypes.TeamWorkflowToReview_Team, TeamWorkFlowArtifact.class);
+ if (teams.size() > 1) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE,
+ getArtifactTypeName() + " " + getHumanReadableId() + " has multiple parent workflows");
+ } else if (!isStandAloneReview() && teams.isEmpty()) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE,
+ getArtifactTypeName() + " " + getHumanReadableId() + " has no parent workflow");
+ }
+ if (teams.size() > 0) {
+ parentTeamArt = teams.iterator().next();
+ }
+ return parentTeamArt;
+ }
+
+ public boolean isStandAloneReview() throws OseeCoreException {
+ if (standAlone == null) {
+ standAlone = getActionableItemsDam().getActionableItemGuids().size() > 0;
+ }
+ return standAlone;
+ }
+
+ @Override
+ public String getWorldViewParentID() throws OseeCoreException {
+ return getParentTeamWorkflow().getHumanReadableId();
+ }
+
+ @Override
+ public Date getWorldViewDeadlineDate() {
+ return null;
+ }
+
+ @Override
+ public String getWorldViewCategory() {
+ return "";
+ }
+
+ @Override
+ public Date getWorldViewReleaseDate() {
+ return null;
+ }
+
+ @Override
+ public String getWorldViewTeam() throws OseeCoreException {
+ TeamWorkFlowArtifact teamDef = getParentTeamWorkflow();
+ if (teamDef != null) {
+ return teamDef.getWorldViewTeam();
+ }
+ return "";
+ }
+
+ @SuppressWarnings("unused")
+ @Override
+ public String getWorldViewReviewDecider() throws OseeCoreException {
+ return "";
+ }
+
+ @SuppressWarnings("unused")
+ @Override
+ public String getWorldViewReviewModerator() throws OseeCoreException {
+ return "";
+ }
+
+ @SuppressWarnings("unused")
+ @Override
+ public String getWorldViewReviewReviewer() throws OseeCoreException {
+ return "";
+ }
+
+ @SuppressWarnings("unused")
+ @Override
+ public String getWorldViewReviewAuthor() throws OseeCoreException {
+ return "";
+ }
+
+ @Override
+ public double getWorldViewWeeklyBenefit() {
+ return 0;
+ }
+
+ @Override
+ public String getWorldViewWorkPackage() {
+ return "";
+ }
+
+ public Artifact getArtifact() {
+ return this;
+ }
+
+ @Override
+ public String getWorldViewCategory2() {
+ return "";
+ }
+
+ @Override
+ public String getWorldViewCategory3() {
+ return "";
+ }
+
+ @Override
+ public String getWorldViewDeadlineDateStr() {
+ return "";
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/StateMachineArtifact.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/StateMachineArtifact.java
index 40f44f41a95..46e7bf1f220 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/StateMachineArtifact.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/StateMachineArtifact.java
@@ -1,1913 +1,1912 @@
-/*******************************************************************************
- * 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.artifact;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-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;
-import java.util.Set;
-import java.util.logging.Level;
-import org.eclipse.nebula.widgets.xviewer.XViewerCells;
-import org.eclipse.osee.ats.artifact.ATSLog.LogType;
-import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact.DefaultTeamState;
-import org.eclipse.osee.ats.editor.SMAEditor;
-import org.eclipse.osee.ats.editor.stateItem.AtsStateItems;
-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.util.AtsNotifyUsers;
-import org.eclipse.osee.ats.util.AtsRelationTypes;
-import org.eclipse.osee.ats.util.AtsUtil;
-import org.eclipse.osee.ats.util.DeadlineManager;
-import org.eclipse.osee.ats.util.Overview;
-import org.eclipse.osee.ats.util.Overview.PreviewStyle;
-import org.eclipse.osee.ats.util.StateManager;
-import org.eclipse.osee.ats.util.widgets.ReviewManager;
-import org.eclipse.osee.ats.workflow.ATSXWidgetOptionResolver;
-import org.eclipse.osee.ats.workflow.AtsWorkPage;
-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.AccessContextId;
-import org.eclipse.osee.framework.core.data.IArtifactType;
-import org.eclipse.osee.framework.core.data.SystemUser;
-import org.eclipse.osee.framework.core.enums.CoreRelationTypes;
-import org.eclipse.osee.framework.core.enums.IRelationEnumeration;
-import org.eclipse.osee.framework.core.enums.PermissionEnum;
-import org.eclipse.osee.framework.core.exception.OseeArgumentException;
-import org.eclipse.osee.framework.core.exception.OseeCoreException;
-import org.eclipse.osee.framework.core.exception.OseeDataStoreException;
-import org.eclipse.osee.framework.core.exception.OseeStateException;
-import org.eclipse.osee.framework.core.model.Branch;
-import org.eclipse.osee.framework.core.model.type.ArtifactType;
-import org.eclipse.osee.framework.core.services.CmAccessControl;
-import org.eclipse.osee.framework.core.services.HasCmAccessControl;
-import org.eclipse.osee.framework.jdk.core.util.Lib;
-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.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.ArtifactFactory;
-import org.eclipse.osee.framework.skynet.core.artifact.search.ArtifactQuery;
-import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction;
-import org.eclipse.osee.framework.skynet.core.utility.Artifacts;
-import org.eclipse.osee.framework.ui.plugin.util.Result;
-import org.eclipse.osee.framework.ui.skynet.FrameworkArtifactImageProvider;
-import org.eclipse.osee.framework.ui.skynet.group.IGroupExplorerProvider;
-import org.eclipse.osee.framework.ui.skynet.notify.OseeNotificationManager;
-import org.eclipse.osee.framework.ui.skynet.util.ChangeType;
-import org.eclipse.osee.framework.ui.skynet.util.email.EmailGroup;
-import org.eclipse.osee.framework.ui.skynet.widgets.XDate;
-import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkFlowDefinition;
-import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkFlowDefinitionFactory;
-import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkItemDefinition;
-import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkPageDefinition;
-import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkRuleDefinition;
-import org.eclipse.swt.graphics.Image;
-
-/**
- * @author Donald G. Dunne
- */
-public abstract class StateMachineArtifact extends ATSArtifact implements HasCmAccessControl, IGroupExplorerProvider, IWorldViewArtifact, ISubscribableArtifact, IFavoriteableArtifact {
-
- private final Set<IRelationEnumeration> atsWorldRelations = new HashSet<IRelationEnumeration>();
- private Collection<User> preSaveStateAssignees;
- private User preSaveOriginator;
- public static double DEFAULT_HOURS_PER_WORK_DAY = 8;
- protected WorkFlowDefinition workFlowDefinition;
- protected Artifact parent;
- protected StateMachineArtifact parentSma;
- protected TeamWorkFlowArtifact parentTeamArt;
- protected ActionArtifact parentAction;
- private Collection<User> transitionAssignees;
- private static String SEPERATOR = "; ";
- private StateManager stateMgr;
- private DeadlineManager deadlineMgr;
- private SMAEditor editor;
- private ATSLog atsLog;
- private ATSNote atsNote;
- private static final AtsStateItems stateItems = new AtsStateItems();
- private boolean inTransition = false;
- public static enum TransitionOption {
- None,
- Persist,
- // Override check whether workflow allows transition to state
- OverrideTransitionValidityCheck,
- // Allows transition to occur with UnAssigned, OseeSystem or Guest
- OverrideAssigneeCheck
- };
-
- public StateMachineArtifact(ArtifactFactory parentFactory, String guid, String humanReadableId, Branch branch, ArtifactType artifactType) throws OseeDataStoreException {
- super(parentFactory, guid, humanReadableId, branch, artifactType);
- }
-
- @Override
- public void onBirth() throws OseeCoreException {
- super.onBirth();
- setSoleAttributeValue(AtsAttributeTypes.CurrentState, "");
- }
-
- @Override
- public void onInitializationComplete() throws OseeCoreException {
- super.onInitializationComplete();
- initializeSMA();
- }
-
- @Override
- public void reloadAttributesAndRelations() throws OseeCoreException {
- super.reloadAttributesAndRelations();
- initializeSMA();
- }
-
- @SuppressWarnings("unused")
- protected void initializeSMA() throws OseeCoreException {
- initalizePreSaveCache();
- }
-
- public void initalizePreSaveCache() {
- try {
- deadlineMgr = new DeadlineManager(this);
- stateMgr = new StateManager(this);
- atsLog = new ATSLog(this);
- atsNote = new ATSNote(this);
- preSaveStateAssignees = getStateMgr().getAssignees();
- if (getOriginator() == null) {
- preSaveOriginator = UserManager.getUser();
- } else {
- preSaveOriginator = getOriginator();
- }
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
- }
-
- public boolean hasAtsWorldChildren() throws OseeCoreException {
- for (IRelationEnumeration iRelationEnumeration : atsWorldRelations) {
- if (getRelatedArtifactsCount(iRelationEnumeration) > 0) {
- return true;
- }
- }
- return false;
- }
-
- public String getHelpContext() {
- return "atsWorkflowEditorWorkflowTab";
- }
-
- public String getArtifactSuperTypeName() {
- return getArtifactTypeName();
- }
-
- @SuppressWarnings("unused")
- @Override
- public Date getWorldViewDeadlineDate() throws OseeCoreException {
- return null;
- }
-
- @SuppressWarnings("unused")
- @Override
- public String getWorldViewDeadlineDateStr() throws OseeCoreException {
- return "";
- }
-
- @SuppressWarnings("unused")
- @Override
- public String getWorldViewDescription() throws OseeCoreException {
- return "";
- }
-
- @Override
- public String getWorldViewImplementer() throws OseeCoreException {
- return Artifacts.toString("; ", getImplementers());
- }
-
- public Collection<User> getImplementersByState(String stateName) throws OseeCoreException {
- if (isCancelled()) {
- return Arrays.asList(getLog().getCancelledLogItem().getUser());
- }
- Collection<User> users = new HashSet<User>(getStateMgr().getAssignees(stateName));
- LogItem item = getLog().getCompletedLogItem();
- if (item != null) {
- users.add(item.getUser());
- }
- return users;
- }
-
- @SuppressWarnings("unused")
- public Collection<User> getImplementers() throws OseeCoreException {
- return Collections.emptyList();
- }
-
- @SuppressWarnings("unused")
- @Override
- public String getWorldViewTeam() throws OseeCoreException {
- return null;
- }
-
- @Override
- public String getWorldViewGroups() throws OseeCoreException {
- return Artifacts.toString("; ", getRelatedArtifacts(CoreRelationTypes.Universal_Grouping__Group));
- }
-
- @Override
- public String getWorldViewGoals() throws OseeCoreException {
- return Artifacts.toString("; ", getRelatedArtifacts(AtsRelationTypes.Goal_Goal));
- }
-
- @SuppressWarnings("unused")
- @Override
- public double getWorldViewWeeklyBenefit() throws OseeCoreException {
- return 0;
- }
-
- @Override
- public void onAttributePersist(SkynetTransaction transaction) {
- // Since multiple ways exist to change the assignees, notification is performed on the persist
- if (isDeleted()) {
- return;
- }
- try {
- notifyNewAssigneesAndReset();
- notifyOriginatorAndReset();
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
- }
-
- /**
- * Override to apply different algorithm to current section expansion.
- *
- * @param page
- * @return true if section should be expanded
- * @throws OseeCoreException
- */
- public boolean isCurrentSectionExpanded(String stateName) throws OseeCoreException {
- return getStateMgr().getCurrentStateName().equals(stateName);
- }
-
- public void notifyNewAssigneesAndReset() throws OseeCoreException {
- if (preSaveStateAssignees == null) {
- preSaveStateAssignees = getStateMgr().getAssignees();
- return;
- }
- Set<User> newAssignees = new HashSet<User>();
- for (User user : getStateMgr().getAssignees()) {
- if (!preSaveStateAssignees.contains(user)) {
- newAssignees.add(user);
- }
- }
- preSaveStateAssignees = getStateMgr().getAssignees();
- if (newAssignees.isEmpty()) {
- return;
- }
- try {
- // These will be processed upon save
- AtsNotifyUsers.getInstance().notify(this, newAssignees, AtsNotifyUsers.NotifyType.Assigned);
- } catch (OseeCoreException ex) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
- }
- }
-
- public void notifyOriginatorAndReset() throws OseeCoreException {
- if (preSaveOriginator != null && getOriginator() != null && !getOriginator().equals(preSaveOriginator)) {
- AtsNotifyUsers.getInstance().notify(this, AtsNotifyUsers.NotifyType.Originator);
- }
- preSaveOriginator = getOriginator();
- }
-
- @SuppressWarnings("unused")
- public boolean isValidationRequired() throws OseeCoreException {
- return false;
- }
-
- public abstract Set<User> getPrivilegedUsers() throws OseeCoreException;
-
- @Override
- public String getDescription() {
- return "";
- }
-
- public ArrayList<EmailGroup> getEmailableGroups() throws OseeCoreException {
- ArrayList<EmailGroup> groupNames = new ArrayList<EmailGroup>();
- ArrayList<String> emails = new ArrayList<String>();
- emails.add(getOriginator().getEmail());
- groupNames.add(new EmailGroup("Originator", emails));
- if (getStateMgr().getAssignees().size() > 0) {
- emails = new ArrayList<String>();
- for (User u : getStateMgr().getAssignees()) {
- emails.add(u.getEmail());
- }
- groupNames.add(new EmailGroup("Assignees", emails));
- }
- return groupNames;
- }
-
- @SuppressWarnings("unused")
- public StateMachineArtifact getParentSMA() throws OseeCoreException {
- return parentSma;
- }
-
- @SuppressWarnings("unused")
- public ActionArtifact getParentActionArtifact() throws OseeCoreException {
- return parentAction;
- }
-
- @SuppressWarnings("unused")
- public TeamWorkFlowArtifact getParentTeamWorkflow() throws OseeCoreException {
- return parentTeamArt;
- }
-
- public String getPreviewHtml() throws OseeCoreException {
- return getPreviewHtml(PreviewStyle.NONE);
- }
-
- public String getPreviewHtml(PreviewStyle... styles) throws OseeCoreException {
- Overview o = new Overview();
- o.addHeader(this, styles);
- o.addFooter(this, styles);
- return o.getPage();
- }
-
- public boolean isUnCancellable() {
- try {
- LogItem item = getLog().getStateEvent(LogType.StateCancelled);
- if (item == null) {
- throw new OseeArgumentException("No Cancelled Event");
- }
- for (WorkPageDefinition toWorkPageDefinition : getWorkFlowDefinition().getToPages(getWorkPageDefinition())) {
- if (toWorkPageDefinition.getPageName().equals(item.getState())) {
- return true;
- }
- }
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
- return false;
- }
-
- public boolean isTaskable() throws OseeCoreException {
- if (isCompleted() || isCancelled()) {
- return false;
- }
- return true;
- }
-
- public boolean showTaskTab() throws OseeCoreException {
- return isTaskable();
- }
-
- public String getEditorTitle() throws OseeCoreException {
- return getWorldViewType() + ": " + getName();
- }
-
- @SuppressWarnings("unused")
- @Override
- public String getWorldViewActionableItems() throws OseeCoreException {
- return "";
- }
-
- /**
- * Registers relation as part of the parent/child hierarchy in ATS World
- */
- public void registerAtsWorldRelation(AtsRelationTypes side) {
- atsWorldRelations.add(side);
- }
-
- @Override
- public Image getAssigneeImage() throws OseeCoreException {
- if (isDeleted()) {
- return null;
- }
- return FrameworkArtifactImageProvider.getUserImage(getStateMgr().getAssignees());
- }
-
- public WorkFlowDefinition getWorkFlowDefinition() {
- if (workFlowDefinition == null) {
- try {
- workFlowDefinition = WorkFlowDefinitionFactory.getWorkFlowDefinition(this);
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
- }
- return workFlowDefinition;
- }
-
- @Override
- public void addSubscribed(User user, SkynetTransaction transaction) throws OseeCoreException {
- if (!getRelatedArtifacts(AtsRelationTypes.SubscribedUser_User).contains(user)) {
- addRelation(AtsRelationTypes.SubscribedUser_User, user);
- persist(transaction);
- }
-
- }
-
- @Override
- public void removeSubscribed(User user, SkynetTransaction transaction) throws OseeCoreException {
- deleteRelation(AtsRelationTypes.SubscribedUser_User, user);
- persist(transaction);
- }
-
- @Override
- public boolean isSubscribed(User user) throws OseeCoreException {
- return getRelatedArtifacts(AtsRelationTypes.SubscribedUser_User).contains(user);
- }
-
- @Override
- public ArrayList<User> getSubscribed() throws OseeCoreException {
- ArrayList<User> arts = new ArrayList<User>();
- for (Artifact art : getRelatedArtifacts(AtsRelationTypes.SubscribedUser_User)) {
- arts.add((User) art);
- }
- return arts;
- }
-
- @Override
- public void addFavorite(User user, SkynetTransaction transaction) throws OseeCoreException {
- if (!getRelatedArtifacts(AtsRelationTypes.FavoriteUser_User).contains(user)) {
- addRelation(AtsRelationTypes.FavoriteUser_User, user);
- persist(transaction);
- }
- }
-
- @Override
- public void removeFavorite(User user, SkynetTransaction transaction) throws OseeCoreException {
- deleteRelation(AtsRelationTypes.FavoriteUser_User, user);
- persist(transaction);
- }
-
- @Override
- public boolean isFavorite(User user) throws OseeCoreException {
- return getRelatedArtifacts(AtsRelationTypes.FavoriteUser_User).contains(user);
- }
-
- @Override
- public ArrayList<User> getFavorites() throws OseeCoreException {
- ArrayList<User> arts = new ArrayList<User>();
- for (Artifact art : getRelatedArtifacts(AtsRelationTypes.FavoriteUser_User)) {
- arts.add((User) art);
- }
- return arts;
- }
-
- @Override
- public boolean amISubscribed() {
- try {
- return isSubscribed(UserManager.getUser());
- } catch (OseeCoreException ex) {
- return false;
- }
- }
-
- @Override
- public boolean amIFavorite() {
- try {
- return isFavorite(UserManager.getUser());
- } catch (OseeCoreException ex) {
- return false;
- }
- }
-
- @Override
- public void atsDelete(Set<Artifact> deleteArts, Map<Artifact, Object> allRelated) throws OseeCoreException {
- SMAEditor.close(Collections.singleton(this), true);
- super.atsDelete(deleteArts, allRelated);
- }
-
- @SuppressWarnings("unused")
- @Override
- public String getWorldViewType() throws OseeCoreException {
- return getArtifactTypeName();
- }
-
- @SuppressWarnings("unused")
- @Override
- public String getWorldViewTitle() throws OseeCoreException {
- return getName();
- }
-
- @Override
- public String getWorldViewState() throws OseeCoreException {
- return getStateMgr().getCurrentStateName();
- }
-
- public String implementersStr = null;
-
- @Override
- public String getWorldViewActivePoc() throws OseeCoreException {
- if (isCancelledOrCompleted()) {
- if (implementersStr == null) {
- if (getImplementers().size() > 0) {
- implementersStr = "(" + Artifacts.toString("; ", getImplementers()) + ")";
- }
- }
- return implementersStr;
- }
- return Artifacts.toString("; ", getStateMgr().getAssignees());
- }
-
- @Override
- public String getWorldViewCreatedDateStr() throws OseeCoreException {
- if (getWorldViewCreatedDate() == null) {
- return XViewerCells.getCellExceptionString("No creation date");
- }
- return new XDate(getWorldViewCreatedDate()).getMMDDYYHHMM();
- }
-
- @Override
- public String getWorldViewCompletedDateStr() throws OseeCoreException {
- if (isCompleted()) {
- if (getWorldViewCompletedDate() == null) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, "Completed with no date => " + getHumanReadableId());
- return XViewerCells.getCellExceptionString("Completed with no date.");
- }
- return new XDate(getWorldViewCompletedDate()).getMMDDYYHHMM();
- }
- return "";
- }
-
- @Override
- public String getWorldViewCancelledDateStr() throws OseeCoreException {
- if (isCancelled()) {
- if (getWorldViewCancelledDate() == null) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, "Cancelled with no date => " + getHumanReadableId());
- return XViewerCells.getCellExceptionString("Cancelled with no date.");
- }
- return new XDate(getWorldViewCancelledDate()).getMMDDYYHHMM();
- }
- return "";
- }
-
- @Override
- public Date getWorldViewCreatedDate() throws OseeCoreException {
- return getLog().getCreationDate();
- }
-
- @Override
- public String getWorldViewOriginator() throws OseeCoreException {
- return getOriginator().getName();
- }
-
- @SuppressWarnings("unused")
- @Override
- public String getWorldViewID() throws OseeCoreException {
- return getHumanReadableId();
- }
-
- @Override
- public String getWorldViewLegacyPCR() throws OseeCoreException {
- if (isAttributeTypeValid(AtsAttributeTypes.LegacyPcrId)) {
- return getSoleAttributeValue(AtsAttributeTypes.LegacyPcrId, "");
- }
- return "";
- }
-
- @Override
- public Date getWorldViewCompletedDate() throws OseeCoreException {
- LogItem item = getLog().getCompletedLogItem();
- if (item != null) {
- return item.getDate();
- }
- return null;
- }
-
- @Override
- public Date getWorldViewCancelledDate() throws OseeCoreException {
- LogItem item = getLog().getCancelledLogItem();
- if (item != null) {
- return item.getDate();
- }
- return null;
- }
-
- @Override
- public abstract VersionArtifact getWorldViewTargetedVersion() throws OseeCoreException;
-
- @SuppressWarnings("unused")
- @Override
- public ChangeType getWorldViewChangeType() throws OseeCoreException {
- return ChangeType.None;
- }
-
- @Override
- public String getWorldViewChangeTypeStr() throws OseeCoreException {
- if (getWorldViewChangeType() == null || getWorldViewChangeType() == ChangeType.None) {
- return "";
- } else {
- return getWorldViewChangeType().name();
- }
- }
-
- public double getEstimatedHoursFromArtifact() throws OseeCoreException {
- if (isAttributeTypeValid(AtsAttributeTypes.EstimatedHours)) {
- return getSoleAttributeValue(AtsAttributeTypes.EstimatedHours, 0.0);
- }
- return 0;
- }
-
- public double getEstimatedHoursFromTasks(String relatedToState) throws OseeCoreException {
- if (!(this instanceof TaskableStateMachineArtifact)) {
- return 0;
- }
- return ((TaskableStateMachineArtifact) this).getEstimatedHoursFromTasks(relatedToState);
- }
-
- public double getEstimatedHoursFromTasks() throws OseeCoreException {
- if (!(this instanceof TaskableStateMachineArtifact)) {
- return 0;
- }
- return ((TaskableStateMachineArtifact) this).getEstimatedHoursFromTasks();
- }
-
- public double getEstimatedHoursFromReviews() throws OseeCoreException {
- if (isTeamWorkflow()) {
- return ReviewManager.getEstimatedHours((TeamWorkFlowArtifact) this);
- }
- return 0;
- }
-
- public double getEstimatedHoursFromReviews(String relatedToState) throws OseeCoreException {
- if (isTeamWorkflow()) {
- return ReviewManager.getEstimatedHours((TeamWorkFlowArtifact) this, relatedToState);
- }
- return 0;
- }
-
- public double getEstimatedHoursTotal(String relatedToState) throws OseeCoreException {
- return getEstimatedHoursFromArtifact() + getEstimatedHoursFromTasks(relatedToState) + getEstimatedHoursFromReviews(relatedToState);
- }
-
- public double getEstimatedHoursTotal() throws OseeCoreException {
- return getEstimatedHoursFromArtifact() + getEstimatedHoursFromTasks() + getEstimatedHoursFromReviews();
- }
-
- @Override
- public double getWorldViewEstimatedHours() throws OseeCoreException {
- return getEstimatedHoursTotal();
- }
-
- @SuppressWarnings("unused")
- @Override
- public String getWorldViewUserCommunity() throws OseeCoreException {
- return "";
- }
-
- @SuppressWarnings("unused")
- @Override
- public String getWorldViewPriority() throws OseeCoreException {
- return "";
- }
-
- @Override
- public String getWorldViewResolution() throws OseeCoreException {
- return getAttributesToString(AtsAttributeTypes.Resolution);
- }
-
- public double getRemainHoursFromArtifact() throws OseeCoreException {
- if (isCompleted() || isCancelled()) {
- return 0;
- }
- double est = getSoleAttributeValue(AtsAttributeTypes.EstimatedHours, 0.0);
- if (est == 0) {
- return getEstimatedHoursFromArtifact();
- }
- double remain = est - est * getPercentCompleteSMATotal() / 100.0;
- return remain;
- }
-
- public double getRemainHoursTotal() throws OseeCoreException {
- return getRemainHoursFromArtifact() + getRemainFromTasks() + getRemainFromReviews();
- }
-
- public double getRemainFromTasks() throws OseeCoreException {
- if (!(this instanceof TaskableStateMachineArtifact)) {
- return 0;
- }
- return ((TaskableStateMachineArtifact) this).getRemainHoursFromTasks();
- }
-
- public double getRemainFromReviews() throws OseeCoreException {
- if (isTeamWorkflow()) {
- return ReviewManager.getRemainHours((TeamWorkFlowArtifact) this);
- }
- return 0;
- }
-
- @Override
- public double getWorldViewRemainHours() throws OseeCoreException {
- return getRemainHoursTotal();
- }
-
- @Override
- public Result isWorldViewRemainHoursValid() throws OseeCoreException {
- if (!isAttributeTypeValid(AtsAttributeTypes.EstimatedHours)) {
- return Result.TrueResult;
- }
- try {
- Double value = getSoleAttributeValue(AtsAttributeTypes.EstimatedHours, null);
- if (isCancelled()) {
- return Result.TrueResult;
- }
- if (value == null) {
- return new Result("Estimated Hours not set.");
- }
- return Result.TrueResult;
- } catch (Exception ex) {
- return new Result(
- ex.getClass().getName() + ": " + ex.getLocalizedMessage() + "\n\n" + Lib.exceptionToString(ex));
- }
- }
-
- @Override
- public Result isWorldViewManDaysNeededValid() throws OseeCoreException {
- Result result = isWorldViewRemainHoursValid();
- if (result.isFalse()) {
- return result;
- }
- if (getManHrsPerDayPreference() == 0) {
- return new Result("Man Day Hours Preference is not set.");
- }
-
- return Result.TrueResult;
- }
-
- @Override
- public double getWorldViewManDaysNeeded() throws OseeCoreException {
- double hrsRemain = getWorldViewRemainHours();
- double manDaysNeeded = 0;
- if (hrsRemain != 0) {
- manDaysNeeded = hrsRemain / getManHrsPerDayPreference();
- }
- return manDaysNeeded;
- }
-
- @SuppressWarnings("unused")
- public double getManHrsPerDayPreference() throws OseeCoreException {
- return DEFAULT_HOURS_PER_WORK_DAY;
- }
-
- @SuppressWarnings("unused")
- @Override
- public double getWorldViewAnnualCostAvoidance() throws OseeCoreException {
- return 0;
- }
-
- @Override
- public Result isWorldViewAnnualCostAvoidanceValid() throws OseeCoreException {
- if (isAttributeTypeValid(AtsAttributeTypes.WeeklyBenefit)) {
- return Result.TrueResult;
- }
- Result result = isWorldViewRemainHoursValid();
- if (result.isFalse()) {
- return result;
- }
- String value = null;
- try {
- value = getSoleAttributeValue(AtsAttributeTypes.WeeklyBenefit, "");
- if (!Strings.isValid(value)) {
- return new Result("Weekly Benefit Hours not set.");
- }
- double val = new Float(value).doubleValue();
- if (val == 0) {
- return new Result("Weekly Benefit Hours not set.");
- }
- } catch (NumberFormatException ex) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, "HRID " + getHumanReadableId(), ex);
- return new Result("Weekly Benefit value is invalid double \"" + value + "\"");
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, "HRID " + getHumanReadableId(), ex);
- return new Result("Exception calculating cost avoidance. See log for details.");
- }
- return Result.TrueResult;
- }
-
- @Override
- public String getWorldViewNotes() throws OseeCoreException {
- return getSoleAttributeValue(AtsAttributeTypes.SmaNote, "");
- }
-
- @Override
- public String getWorldViewWorkPackage() throws OseeCoreException {
- return getSoleAttributeValue(AtsAttributeTypes.WorkPackage, "");
- }
-
- @Override
- public String getWorldViewPoint() throws OseeCoreException {
- return getSoleAttributeValue(AtsAttributeTypes.Points, "");
- }
-
- @Override
- public String getWorldViewNumeric1() throws OseeCoreException {
- return AtsUtil.doubleToI18nString(getSoleAttributeValue(AtsAttributeTypes.Numeric1, 0.0), true);
- }
-
- @Override
- public String getWorldViewNumeric2() throws OseeCoreException {
- return AtsUtil.doubleToI18nString(getSoleAttributeValue(AtsAttributeTypes.Numeric2, 0.0), true);
- }
-
- @Override
- public String getWorldViewGoalOrderVote() throws OseeCoreException {
- return getSoleAttributeValue(AtsAttributeTypes.GoalOrderVote, "");
- }
-
- @Override
- public String getWorldViewCategory() throws OseeCoreException {
- return getSoleAttributeValue(AtsAttributeTypes.Category1, "");
- }
-
- @Override
- public String getWorldViewCategory2() throws OseeCoreException {
- return getSoleAttributeValue(AtsAttributeTypes.Category2, "");
- }
-
- @Override
- public String getWorldViewCategory3() throws OseeCoreException {
- return getSoleAttributeValue(AtsAttributeTypes.Category3, "");
- }
-
- public int getWorldViewStatePercentComplete() throws OseeCoreException {
- return getPercentCompleteSMAStateTotal(getStateMgr().getCurrentStateName());
- }
-
- @Override
- public String getWorldViewNumberOfTasks() throws OseeCoreException {
- if (!(this instanceof TaskableStateMachineArtifact)) {
- return "";
- }
- int num = ((TaskableStateMachineArtifact) this).getTaskArtifacts().size();
- if (num == 0) {
- return "";
- }
- return String.valueOf(num);
- }
-
- @SuppressWarnings("unused")
- @Override
- public String getWorldViewRelatedToState() throws OseeCoreException {
- return "";
- }
-
- @Override
- public String getWorldViewTargetedVersionStr() throws OseeCoreException {
- if (getWorldViewTargetedVersion() == null) {
- return "";
- }
- return getWorldViewTargetedVersion().toString();
- }
-
- /**
- * Return true if this artifact, it's ATS relations and any of the other side artifacts are dirty
- *
- * @return true if any object in SMA tree is dirty
- */
- public Result isSMAEditorDirty() {
- try {
- Set<Artifact> artifacts = new HashSet<Artifact>();
- getSmaArtifactsOneLevel(this, artifacts);
- for (Artifact artifact : artifacts) {
- if (artifact.isDirty()) {
- return new Result(true, String.format("Artifact [%s][%s] is dirty", artifact.getHumanReadableId(),
- artifact));
- }
- }
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, "Can't save artifact " + getHumanReadableId(), ex);
- }
- return Result.FalseResult;
- }
-
- public void saveSMA(SkynetTransaction transaction) {
- try {
- Set<Artifact> artifacts = new HashSet<Artifact>();
- getSmaArtifactsOneLevel(this, artifacts);
- for (Artifact artifact : artifacts) {
- artifact.persist(transaction);
- }
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, "Can't save artifact " + getHumanReadableId(), ex);
- }
- }
-
- public void revertSMA() {
- try {
- Set<Artifact> artifacts = new HashSet<Artifact>();
- getSmaArtifactsOneLevel(this, artifacts);
- for (Artifact artifact : artifacts) {
- artifact.reloadAttributesAndRelations();
- }
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, "Can't revert artifact " + getHumanReadableId(), ex);
- }
- }
-
- @SuppressWarnings("unused")
- public void getSmaArtifactsOneLevel(StateMachineArtifact smaArtifact, Set<Artifact> artifacts) throws OseeCoreException {
- artifacts.add(smaArtifact);
- }
-
- @Override
- public Date getWorldViewEstimatedReleaseDate() throws OseeCoreException {
- Date date = getSoleAttributeValue(AtsAttributeTypes.EstimatedReleaseDate, null);
- Date parentDate = null;
- if (getParentSMA() != null) {
- parentDate = getParentSMA().getWorldViewEstimatedReleaseDate();
- }
- if (date == null && parentDate != null) {
- return parentDate;
- }
- return date;
- }
-
- @Override
- public Date getWorldViewEstimatedCompletionDate() throws OseeCoreException {
- Date date = getSoleAttributeValue(AtsAttributeTypes.EstimatedCompletionDate, null);
- if (date != null) {
- return date;
- }
- if (getParentSMA() != null) {
- Date parentDate = getParentSMA().getWorldViewEstimatedCompletionDate();
- if (parentDate != null) {
- return parentDate;
- }
- }
- date = getWorldViewEstimatedReleaseDate();
- if (date != null) {
- return date;
- }
- return null;
- }
-
- @Override
- public String getWorldViewEstimatedReleaseDateStr() throws OseeCoreException {
- if (getWorldViewEstimatedReleaseDate() == null) {
- return "";
- }
- return new XDate(getWorldViewEstimatedReleaseDate()).getMMDDYYHHMM();
- }
-
- @Override
- public String getWorldViewEstimatedCompletionDateStr() throws OseeCoreException {
- if (getWorldViewEstimatedCompletionDate() == null) {
- return "";
- }
- return new XDate(getWorldViewEstimatedCompletionDate()).getMMDDYYHHMM();
- }
-
- @Override
- public abstract Date getWorldViewReleaseDate() throws OseeCoreException;
-
- @Override
- public String getWorldViewReleaseDateStr() throws OseeCoreException {
- if (getWorldViewReleaseDate() == null) {
- return "";
- }
- return new XDate(getWorldViewReleaseDate()).getMMDDYYHHMM();
- }
-
- /**
- * Called at the end of a transition just before transaction manager persist. SMAs can override to perform tasks due
- * to transition.
- *
- * @throws Exception
- */
- @SuppressWarnings("unused")
- public void transitioned(WorkPageDefinition fromPage, WorkPageDefinition toPage, Collection<User> toAssignees, boolean persist, SkynetTransaction transaction) throws OseeCoreException {
- // provided for subclass implementation
- }
-
- @Override
- public String getHyperName() {
- return getName();
- }
-
- @Override
- public String getHyperType() {
- try {
- return getArtifactTypeName();
- } catch (Exception ex) {
- return ex.getLocalizedMessage();
- }
- }
-
- @Override
- public String getHyperState() {
- try {
- return getStateMgr().getCurrentStateName();
- } catch (OseeCoreException ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
- return "";
- }
-
- @Override
- public String getHyperAssignee() {
- try {
- return Artifacts.toString("; ", getStateMgr().getAssignees());
- } catch (OseeCoreException ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
- return "";
- }
-
- @Override
- public Image getHyperAssigneeImage() throws OseeCoreException {
- return getAssigneeImage();
- }
-
- @Override
- public Artifact getHyperArtifact() {
- return this;
- }
-
- @SuppressWarnings("unused")
- @Override
- public String getWorldViewDecision() throws OseeCoreException {
- return "";
- }
-
- @Override
- public Artifact getParentAtsArtifact() throws OseeCoreException {
- return getParentSMA();
- }
-
- @Override
- public String getWorldViewValidationRequiredStr() throws OseeCoreException {
- if (isAttributeTypeValid(AtsAttributeTypes.ValidationRequired)) {
- return String.valueOf(getSoleAttributeValue(AtsAttributeTypes.ValidationRequired, false));
- }
- return "";
- }
-
- @SuppressWarnings("unused")
- @Override
- public Result isWorldViewDeadlineAlerting() throws OseeCoreException {
- return Result.FalseResult;
- }
-
- @SuppressWarnings("unused")
- @Override
- public int getWorldViewPercentRework() throws OseeCoreException {
- return 0;
- }
-
- @Override
- public String getWorldViewPercentReworkStr() throws OseeCoreException {
- int reWork = getWorldViewPercentRework();
- if (reWork == 0) {
- return "";
- }
- return String.valueOf(reWork);
- }
-
- public static Set<IArtifactType> getAllSMAType() throws OseeCoreException {
- Set<IArtifactType> artTypeNames = TeamWorkflowExtensions.getInstance().getAllTeamWorkflowArtifactTypes();
- artTypeNames.add(AtsArtifactTypes.Task);
- artTypeNames.add(AtsArtifactTypes.DecisionReview);
- artTypeNames.add(AtsArtifactTypes.PeerToPeerReview);
- return artTypeNames;
- }
-
- public static List<Artifact> getAllSMATypeArtifacts() throws OseeCoreException {
- List<Artifact> result = new ArrayList<Artifact>();
- for (IArtifactType artType : getAllSMAType()) {
- result.addAll(ArtifactQuery.getArtifactListFromType(artType, AtsUtil.getAtsBranch()));
- }
- return result;
- }
-
- public static List<TeamWorkFlowArtifact> getAllTeamWorkflowArtifacts() throws OseeCoreException {
- List<TeamWorkFlowArtifact> result = new ArrayList<TeamWorkFlowArtifact>();
- for (IArtifactType artType : TeamWorkflowExtensions.getInstance().getAllTeamWorkflowArtifactTypes()) {
- List<TeamWorkFlowArtifact> teamArts =
- org.eclipse.osee.framework.jdk.core.util.Collections.castAll(ArtifactQuery.getArtifactListFromType(artType,
- AtsUtil.getAtsBranch()));
- result.addAll(teamArts);
- }
- return result;
- }
-
- @SuppressWarnings("unused")
- @Override
- public String getWorldViewBranchStatus() throws OseeCoreException {
- return "";
- }
-
- @SuppressWarnings("unused")
- @Override
- public String getWorldViewReviewAuthor() throws OseeCoreException {
- return "";
- }
-
- @SuppressWarnings("unused")
- @Override
- public String getWorldViewReviewDecider() throws OseeCoreException {
- return "";
- }
-
- @SuppressWarnings("unused")
- @Override
- public String getWorldViewReviewModerator() throws OseeCoreException {
- return "";
- }
-
- @SuppressWarnings("unused")
- @Override
- public String getWorldViewReviewReviewer() throws OseeCoreException {
- return "";
- }
-
- /**
- * Return hours spent working ONLY the SMA stateName (not children SMAs)
- */
- public double getHoursSpentSMAState(String stateName) throws OseeCoreException {
- return getStateMgr().getHoursSpent(stateName);
- }
-
- /**
- * Return hours spent working ONLY on tasks related to stateName
- */
- public double getHoursSpentSMAStateTasks(String stateName) throws OseeCoreException {
- if (!(this instanceof TaskableStateMachineArtifact)) {
- return 0;
- }
- return ((TaskableStateMachineArtifact) this).getHoursSpentFromTasks(stateName);
- }
-
- /**
- * Return hours spent working ONLY on reviews related to stateName
- */
- public double getHoursSpentSMAStateReviews(String stateName) throws OseeCoreException {
- if (isTeamWorkflow()) {
- return ReviewManager.getHoursSpent((TeamWorkFlowArtifact) this, stateName);
- }
- return 0;
- }
-
- /**
- * Return hours spent working on all things (including children SMAs) related to stateName
- */
- public double getHoursSpentSMAStateTotal(String stateName) throws OseeCoreException {
- return getHoursSpentSMAState(stateName) + getHoursSpentSMAStateTasks(stateName) + getHoursSpentSMAStateReviews(stateName);
- }
-
- @Override
- public double getWorldViewHoursSpentStateTotal() throws OseeCoreException {
- return getHoursSpentSMAStateTotal(getStateMgr().getCurrentStateName());
- }
-
- /**
- * Return hours spent working on all things (including children SMAs) for this SMA
- */
- public double getHoursSpentSMATotal() throws OseeCoreException {
- double hours = 0.0;
- for (String stateName : getStateMgr().getVisitedStateNames()) {
- hours += getHoursSpentSMAStateTotal(stateName);
- }
- return hours;
- }
-
- /**
- * Return Percent Complete working ONLY the SMA stateName (not children SMAs)
- */
- public int getPercentCompleteSMAState(String stateName) throws OseeCoreException {
- return getStateMgr().getPercentComplete(stateName);
- }
-
- /**
- * Return Percent Complete ONLY on tasks related to stateName. Total Percent / # Tasks
- */
- public int getPercentCompleteSMAStateTasks(String stateName) throws OseeCoreException {
- if (!(this instanceof TaskableStateMachineArtifact)) {
- return 0;
- }
- return ((TaskableStateMachineArtifact) this).getPercentCompleteFromTasks(stateName);
- }
-
- /**
- * Return Percent Complete ONLY on reviews related to stateName. Total Percent / # Reviews
- */
- public int getPercentCompleteSMAStateReviews(String stateName) throws OseeCoreException {
- if (isTeamWorkflow()) {
- return ReviewManager.getPercentComplete((TeamWorkFlowArtifact) this, stateName);
- }
- return 0;
- }
-
- /**
- * Return Percent Complete on all things (including children SMAs) related to stateName. Total Percent for state,
- * tasks and reviews / 1 + # Tasks + # Reviews
- */
- public int getPercentCompleteSMAStateTotal(String stateName) throws OseeCoreException {
- return getStateMetricsData(stateName).getResultingPercent();
- }
-
- /**
- * Return Percent Complete on all things (including children SMAs) for this SMA<br>
- * <br>
- * percent = all state's percents / number of states (minus completed/cancelled)
- */
- public int getPercentCompleteSMATotal() throws OseeCoreException {
- if (isCancelledOrCompleted()) {
- return 100;
- }
- Map<String, Double> stateToWeightMap = getStatePercentCompleteWeight();
- if (stateToWeightMap.size() > 0) {
- // Calculate total percent using configured weighting
- int percent = 0;
- for (String stateName : getWorkFlowDefinition().getPageNames()) {
- if (!stateName.equals(DefaultTeamState.Completed.name()) && !stateName.equals(DefaultTeamState.Cancelled.name())) {
- Double weight = stateToWeightMap.get(stateName);
- if (weight == null) {
- weight = 0.0;
- }
- percent += weight * getPercentCompleteSMAStateTotal(stateName);
- }
- }
- return percent;
- } else {
- int percent = 0;
- int numStates = 0;
- for (String stateName : getWorkFlowDefinition().getPageNames()) {
- if (!stateName.equals(DefaultTeamState.Completed.name()) && !stateName.equals(DefaultTeamState.Cancelled.name())) {
- percent += getPercentCompleteSMAStateTotal(stateName);
- numStates++;
- }
- }
- if (numStates == 0) {
- return 0;
- }
- return percent / numStates;
- }
- }
-
- // Cache stateToWeight mapping
- private Map<String, Double> stateToWeight = null;
-
- public Map<String, Double> getStatePercentCompleteWeight() throws OseeCoreException {
- if (stateToWeight == null) {
- stateToWeight = new HashMap<String, Double>();
- Collection<WorkRuleDefinition> workRuleDefs = getWorkRulesStartsWith(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.");
- }
- if (workRuleDefs.size() == 1) {
- stateToWeight = AtsStatePercentCompleteWeightRule.getStateWeightMap(workRuleDefs.iterator().next());
- }
- }
- return stateToWeight;
- }
-
- private StateMetricsData getStateMetricsData(String stateName) throws OseeCoreException {
- // Add percent and bump objects 1 for state percent
- int percent = getPercentCompleteSMAState(stateName);
- int numObjects = 1; // the state itself is one object
-
- // Add percent for each task and bump objects for each task
- if (this instanceof TaskableStateMachineArtifact) {
- Collection<TaskArtifact> tasks = ((TaskableStateMachineArtifact) this).getTaskArtifacts(stateName);
- for (TaskArtifact taskArt : tasks) {
- percent += taskArt.getPercentCompleteSMATotal();
- }
- numObjects += tasks.size();
- }
-
- // Add percent for each review and bump objects for each review
- if (isTeamWorkflow()) {
- Collection<ReviewSMArtifact> reviews = ReviewManager.getReviews((TeamWorkFlowArtifact) this, stateName);
- for (ReviewSMArtifact reviewArt : reviews) {
- percent += reviewArt.getPercentCompleteSMATotal();
- }
- numObjects += reviews.size();
- }
-
- return new StateMetricsData(percent, numObjects);
- }
-
- private static class StateMetricsData {
- public int numObjects = 0;
- public int percent = 0;
-
- public StateMetricsData(int percent, int numObjects) {
- this.numObjects = numObjects;
- this.percent = percent;
- }
-
- public int getResultingPercent() {
- return percent / numObjects;
- }
-
- @Override
- public String toString() {
- return "Percent: " + getResultingPercent() + " NumObjs: " + numObjects + " Total Percent: " + percent;
- }
- }
-
- @Override
- public double getWorldViewHoursSpentState() throws OseeCoreException {
- return getHoursSpentSMAState(getStateMgr().getCurrentStateName());
- }
-
- @Override
- public double getWorldViewHoursSpentStateReview() throws OseeCoreException {
- return getHoursSpentSMAStateReviews(getStateMgr().getCurrentStateName());
- }
-
- @Override
- public double getWorldViewHoursSpentStateTask() throws OseeCoreException {
- return getHoursSpentSMAStateTasks(getStateMgr().getCurrentStateName());
- }
-
- @Override
- public double getWorldViewHoursSpentTotal() throws OseeCoreException {
- return getHoursSpentSMATotal();
- }
-
- @Override
- public int getWorldViewPercentCompleteState() throws OseeCoreException {
- return getPercentCompleteSMAState(getStateMgr().getCurrentStateName());
- }
-
- @Override
- public int getWorldViewPercentCompleteStateReview() throws OseeCoreException {
- return getPercentCompleteSMAStateReviews(getStateMgr().getCurrentStateName());
- }
-
- @Override
- public int getWorldViewPercentCompleteStateTask() throws OseeCoreException {
- return getPercentCompleteSMAStateTasks(getStateMgr().getCurrentStateName());
- }
-
- @Override
- public int getWorldViewPercentCompleteTotal() throws OseeCoreException {
- return getPercentCompleteSMATotal();
- }
-
- public Set<IRelationEnumeration> getAtsWorldRelations() {
- return atsWorldRelations;
- }
-
- public String getWorldViewLastUpdated() throws OseeCoreException {
- return XDate.getDateStr(getLastModified(), XDate.MMDDYYHHMM);
- }
-
- @Override
- public String getWorldViewLastStatused() throws OseeCoreException {
- return XDate.getDateStr(getLog().getLastStatusedDate(), XDate.MMDDYYHHMM);
- }
-
- @SuppressWarnings("unused")
- public String getWorldViewSWEnhancement() throws OseeCoreException {
- return "";
- }
-
- @SuppressWarnings("unused")
- @Override
- public String getWorldViewNumberOfReviewIssueDefects() throws OseeCoreException {
- return "";
- }
-
- @SuppressWarnings("unused")
- @Override
- public String getWorldViewNumberOfReviewMajorDefects() throws OseeCoreException {
- return "";
- }
-
- @SuppressWarnings("unused")
- @Override
- public String getWorldViewNumberOfReviewMinorDefects() throws OseeCoreException {
- return "";
- }
-
- @Override
- public String getWorldViewActionsIntiatingWorkflow() throws OseeCoreException {
- return getParentActionArtifact().getWorldViewActionsIntiatingWorkflow();
- }
-
- @Override
- public String getWorldViewDaysInCurrentState() throws OseeCoreException {
- double timeInCurrState = getStateMgr().getTimeInState();
- if (timeInCurrState == 0) {
- return "0.0";
- }
- return AtsUtil.doubleToI18nString(timeInCurrState / XDate.MILLISECONDS_IN_A_DAY);
- }
-
- @Override
- public String getWorldViewParentState() throws OseeCoreException {
- if (getParentSMA() != null) {
- return getParentSMA().getStateMgr().getCurrentStateName();
- }
- return "";
- }
-
- @Override
- public String getGroupExplorerName() throws OseeCoreException {
- return String.format("[%s] %s", getStateMgr().getCurrentStateName(), getName());
- }
-
- @Override
- public String getWorldViewOriginatingWorkflowStr() throws OseeCoreException {
- return getParentActionArtifact().getWorldViewOriginatingWorkflowStr();
- }
-
- @Override
- public Collection<TeamWorkFlowArtifact> getWorldViewOriginatingWorkflows() throws OseeCoreException {
- return getParentActionArtifact().getWorldViewOriginatingWorkflows();
- }
-
- @SuppressWarnings("unused")
- @Override
- public String getWorldViewNumberOfTasksRemaining() throws OseeCoreException {
- return "";
- }
-
- public void closeEditors(boolean save) {
- SMAEditor.close(java.util.Collections.singleton(this), save);
- }
-
- public ATSLog getLog() {
- return atsLog;
- }
-
- public ATSNote getNotes() {
- return atsNote;
- }
-
- public Result getUserInputNeeded() {
- return Result.FalseResult;
- }
-
- public WorkPageDefinition getWorkPageDefinition() throws OseeCoreException {
- if (getStateMgr().getCurrentStateName() == null) {
- return null;
- }
- return getWorkFlowDefinition().getWorkPageDefinitionByName(getStateMgr().getCurrentStateName());
- }
-
- public WorkPageDefinition getWorkPageDefinitionByName(String name) throws OseeCoreException {
- return getWorkFlowDefinition().getWorkPageDefinitionByName(name);
- }
-
- public WorkPageDefinition getWorkPageDefinitionById(String id) throws OseeCoreException {
- return getWorkFlowDefinition().getWorkPageDefinitionById(id);
- }
-
- public boolean isHistoricalVersion() {
- return isHistorical();
- }
-
- public List<WorkPageDefinition> getToWorkPages() throws OseeCoreException {
- return getWorkFlowDefinition().getToPages(getWorkPageDefinition());
- }
-
- public List<WorkPageDefinition> getReturnPages() throws OseeCoreException {
- return getWorkFlowDefinition().getReturnPages(getWorkPageDefinition());
- }
-
- public boolean isReturnPage(WorkPageDefinition workPageDefinition) throws OseeCoreException {
- return getWorkFlowDefinition().isReturnPage(getWorkPageDefinition(), workPageDefinition);
- }
-
- public boolean isAccessControlWrite() throws OseeCoreException {
- return AccessControlManager.hasPermission(this, PermissionEnum.WRITE);
- }
-
- public User getOriginator() throws OseeCoreException {
- return atsLog.getOriginator();
- }
-
- public void setOriginator(User user) throws OseeCoreException {
- atsLog.addLog(LogType.Originated, "", "Changed by " + UserManager.getUser().getName(), user);
- }
-
- /**
- * @return true if this is a TeamWorkflow and it uses versions
- * @throws OseeStateException
- */
- public boolean isTeamUsesVersions() {
- if (!isTeamWorkflow()) {
- return false;
- }
- try {
- return ((TeamWorkFlowArtifact) this).getTeamDefinition().isTeamUsesVersions();
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- return false;
- }
- }
-
- /**
- * 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 {
- TeamWorkFlowArtifact teamArt = null;
- if (isTeamWorkflow()) {
- teamArt = (TeamWorkFlowArtifact) this;
- }
- if (this instanceof ReviewSMArtifact) {
- teamArt = ((ReviewSMArtifact) this).getParentTeamWorkflow();
- }
- if (teamArt == null) {
- return false;
- }
- try {
- return teamArt.getTeamDefinition().hasWorkRule(ruleId);
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
- return false;
- }
- }
-
- public boolean workPageHasWorkRule(String ruleId) throws OseeCoreException {
- return getWorkPageDefinition().hasWorkRule(AtsWorkDefinitions.RuleWorkItemId.atsRequireTargetedVersion.name());
- }
-
- public Collection<WorkRuleDefinition> getWorkRulesStartsWith(String ruleId) throws OseeCoreException {
- Set<WorkRuleDefinition> workRules = new HashSet<WorkRuleDefinition>();
- if (!Strings.isValid(ruleId)) {
- return workRules;
- }
- if (isTeamWorkflow()) {
- // Get rules from team definition
- workRules.addAll(((TeamWorkFlowArtifact) this).getTeamDefinition().getWorkRulesStartsWith(ruleId));
- }
- // Get work rules from workflow
- WorkFlowDefinition workFlowDefinition = getWorkFlowDefinition();
- if (workFlowDefinition != null) {
- // Get rules from workflow definitions
- workRules.addAll(getWorkFlowDefinition().getWorkRulesStartsWith(ruleId));
- }
- // Add work rules from page
- for (WorkItemDefinition wid : getWorkPageDefinition().getWorkItems(false)) {
- if (!wid.getId().equals("") && wid.getId().startsWith(ruleId)) {
- workRules.add((WorkRuleDefinition) wid);
- }
- }
- return workRules;
- }
-
- /**
- * @return true if this is a TeamWorkflow and the version it's been targeted for has been released
- */
- public boolean isReleased() {
- try {
- VersionArtifact verArt = getTargetedForVersion();
- if (verArt != null) {
- return verArt.isReleased();
- }
- } catch (Exception ex) {
- // Do Nothing
- }
- return false;
- }
-
- public boolean isVersionLocked() {
- try {
- VersionArtifact verArt = getTargetedForVersion();
- if (verArt != null) {
- return verArt.isVersionLocked();
- }
- } catch (Exception ex) {
- // Do Nothing
- }
- return false;
- }
-
- public VersionArtifact getTargetedForVersion() throws OseeCoreException {
- return getWorldViewTargetedVersion();
- }
-
- public boolean isCompleted() throws OseeCoreException {
- return stateMgr.getCurrentStateName().equals(DefaultTeamState.Completed.name());
- }
-
- public boolean isCancelled() throws OseeCoreException {
- return stateMgr.getCurrentStateName().equals(DefaultTeamState.Cancelled.name());
- }
-
- public boolean isCancelledOrCompleted() throws OseeCoreException {
- return isCompleted() || isCancelled();
- }
-
- public boolean isCurrentState(String stateName) throws OseeCoreException {
- return stateName.equals(stateMgr.getCurrentStateName());
- }
-
- public void setTransitionAssignees(Collection<User> assignees) throws OseeCoreException {
- if (assignees.contains(UserManager.getUser(SystemUser.OseeSystem)) || assignees.contains(UserManager.getUser(SystemUser.Guest))) {
- throw new OseeArgumentException("Can not assign workflow to OseeSystem or Guest");
- }
- if (assignees.size() > 1 && assignees.contains(UserManager.getUser(SystemUser.UnAssigned))) {
- throw new OseeArgumentException("Can not assign to user and UnAssigned");
- }
- transitionAssignees = assignees;
- }
-
- public boolean isAssigneeMe() throws OseeCoreException {
- return stateMgr.getAssignees().contains(UserManager.getUser());
- }
-
- public Collection<User> getTransitionAssignees() throws OseeCoreException {
- if (transitionAssignees != null) {
- if (transitionAssignees.size() > 0 && transitionAssignees.contains(UserManager.getUser(SystemUser.UnAssigned))) {
- transitionAssignees.remove(UserManager.getUser(SystemUser.UnAssigned));
- }
- if (transitionAssignees.size() > 0) {
- return transitionAssignees;
- }
- }
- return stateMgr.getAssignees();
- }
-
- public String getTransitionAssigneesStr() throws OseeCoreException {
- StringBuffer sb = new StringBuffer();
- for (User u : getTransitionAssignees()) {
- sb.append(u.getName() + SEPERATOR);
- }
- return sb.toString().replaceFirst(SEPERATOR + "$", "");
- }
-
- public Result transitionToCancelled(String reason, SkynetTransaction transaction, TransitionOption... transitionOption) {
- Result result =
- transition(DefaultTeamState.Cancelled.name(), Arrays.asList(new User[] {}), reason, transaction,
- transitionOption);
- return result;
- }
-
- public Result transitionToCompleted(String reason, SkynetTransaction transaction, TransitionOption... transitionOption) {
- Result result =
- transition(DefaultTeamState.Completed.name(), Arrays.asList(new User[] {}), reason, transaction,
- transitionOption);
- return result;
- }
-
- public Result isTransitionValid(final String toStateName, final Collection<User> toAssignees, TransitionOption... transitionOption) throws OseeCoreException {
- boolean overrideTransitionCheck =
- org.eclipse.osee.framework.jdk.core.util.Collections.getAggregate(transitionOption).contains(
- TransitionOption.OverrideTransitionValidityCheck);
- boolean overrideAssigneeCheck =
- org.eclipse.osee.framework.jdk.core.util.Collections.getAggregate(transitionOption).contains(
- TransitionOption.OverrideAssigneeCheck);
- // Validate assignees
- if (!overrideAssigneeCheck && (getStateMgr().getAssignees().contains(UserManager.getUser(SystemUser.OseeSystem)) || getStateMgr().getAssignees().contains(
- UserManager.getUser(SystemUser.Guest)) || getStateMgr().getAssignees().contains(
- UserManager.getUser(SystemUser.UnAssigned)))) {
- return new Result("Can not transition with \"Guest\", \"UnAssigned\" or \"OseeSystem\" user as assignee.");
- }
-
- // Validate toState name
- final WorkPageDefinition fromWorkPageDefinition = getWorkPageDefinition();
- final WorkPageDefinition toWorkPageDefinition = getWorkPageDefinitionByName(toStateName);
- if (toWorkPageDefinition == null) {
- return new Result("Invalid toState \"" + toStateName + "\"");
- }
-
- // Validate transition from fromPage to toPage
- if (!overrideTransitionCheck && !getWorkFlowDefinition().getToPages(fromWorkPageDefinition).contains(
- toWorkPageDefinition)) {
- String errStr =
- "Not configured to transition to \"" + toStateName + "\" from \"" + fromWorkPageDefinition.getPageName() + "\"";
- OseeLog.log(AtsPlugin.class, Level.SEVERE, errStr);
- return new Result(errStr);
- }
- // Don't transition with existing working branch
- if (toStateName.equals(DefaultTeamState.Cancelled.name()) && isTeamWorkflow() && ((TeamWorkFlowArtifact) this).getBranchMgr().isWorkingBranchInWork()) {
- return new Result("Working Branch exists. Please delete working branch before cancelling.");
- }
-
- // Don't transition with uncommitted branch if this is a commit state
- if (AtsWorkDefinitions.isAllowCommitBranch(getWorkPageDefinition()) && isTeamWorkflow() && ((TeamWorkFlowArtifact) this).getBranchMgr().isWorkingBranchInWork()) {
- return new Result("Working Branch exists. Please commit or delete working branch before transition.");
- }
-
- // Check extension points for valid transition
- List<IAtsStateItem> atsStateItems = stateItems.getStateItems(fromWorkPageDefinition.getId());
- for (IAtsStateItem item : atsStateItems) {
- Result result = item.transitioning(this, fromWorkPageDefinition.getPageName(), toStateName, toAssignees);
- if (result.isFalse()) {
- return result;
- }
- }
- for (IAtsStateItem item : atsStateItems) {
- Result result = item.transitioning(this, fromWorkPageDefinition.getPageName(), toStateName, toAssignees);
- if (result.isFalse()) {
- return result;
- }
- }
- return Result.TrueResult;
- }
-
- public Result transition(String toStateName, User toAssignee, SkynetTransaction transaction, TransitionOption... transitionOption) {
- List<User> users = new ArrayList<User>();
- if (toAssignee != null && !toStateName.equals(DefaultTeamState.Completed.name()) && !toStateName.equals(DefaultTeamState.Cancelled.name())) {
- users.add(toAssignee);
- }
- return transition(toStateName, users, transaction, transitionOption);
- }
-
- public boolean isTargetedVersionable() throws OseeCoreException {
- if (!isTeamWorkflow()) {
- return false;
- }
- return ((TeamWorkFlowArtifact) this).getTeamDefinition().getTeamDefinitionHoldingVersions() != null && ((TeamWorkFlowArtifact) this).getTeamDefinition().getTeamDefinitionHoldingVersions().isTeamUsesVersions();
- }
-
- public Result transition(String toStateName, Collection<User> toAssignees, SkynetTransaction transaction, TransitionOption... transitionOption) {
- return transition(toStateName, toAssignees, null, transaction, transitionOption);
- }
-
- private Result transition(final String toStateName, final Collection<User> toAssignees, final String completeOrCancelReason, SkynetTransaction transaction, TransitionOption... transitionOption) {
- try {
- final boolean persist =
- org.eclipse.osee.framework.jdk.core.util.Collections.getAggregate(transitionOption).contains(
- TransitionOption.Persist);
-
- Result result = isTransitionValid(toStateName, toAssignees, transitionOption);
- if (result.isFalse()) {
- return result;
- }
-
- final WorkPageDefinition fromWorkPageDefinition = getWorkPageDefinition();
- final WorkPageDefinition toWorkPageDefinition = getWorkPageDefinitionByName(toStateName);
-
- transitionHelper(toAssignees, persist, fromWorkPageDefinition, toWorkPageDefinition, toStateName,
- completeOrCancelReason, transaction);
- if (persist) {
- OseeNotificationManager.getInstance().sendNotifications();
- }
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
- return new Result("Transaction failed " + ex.getLocalizedMessage());
- }
- return Result.TrueResult;
- }
-
- private void transitionHelper(Collection<User> toAssignees, boolean persist, WorkPageDefinition fromPage, WorkPageDefinition toPage, String toStateName, String completeOrCancelReason, SkynetTransaction transaction) throws OseeCoreException {
- // Log transition
- if (toPage.isCancelledPage()) {
- atsLog.addLog(LogType.StateCancelled, stateMgr.getCurrentStateName(), completeOrCancelReason);
- } else {
- atsLog.addLog(LogType.StateComplete, stateMgr.getCurrentStateName(),
- (completeOrCancelReason != null ? completeOrCancelReason : ""));
- }
- atsLog.addLog(LogType.StateEntered, toStateName, "");
-
- stateMgr.transitionHelper(toAssignees, persist, fromPage, toPage, toStateName, completeOrCancelReason);
-
- if (isValidationRequired() && isTeamWorkflow()) {
- ReviewManager.createValidateReview((TeamWorkFlowArtifact) this, false, transaction);
- }
-
- AtsNotifyUsers.getInstance().notify(this, AtsNotifyUsers.NotifyType.Subscribed,
- AtsNotifyUsers.NotifyType.Completed, AtsNotifyUsers.NotifyType.Completed);
-
- // Persist
- if (persist) {
- persist(transaction);
- }
-
- transitioned(fromPage, toPage, toAssignees, true, transaction);
-
- // Notify extension points of transition
- for (IAtsStateItem item : stateItems.getStateItems(fromPage.getId())) {
- item.transitioned(this, fromPage.getPageName(), toStateName, toAssignees, transaction);
- }
- for (IAtsStateItem item : stateItems.getStateItems(toPage.getId())) {
- item.transitioned(this, fromPage.getPageName(), toStateName, toAssignees, transaction);
- }
- }
-
- public SMAEditor getEditor() {
- return editor;
- }
-
- public void setEditor(SMAEditor editor) {
- this.editor = editor;
- }
-
- public AtsStateItems getStateItems() {
- return stateItems;
- }
-
- public boolean isInTransition() {
- return inTransition;
- }
-
- public void setInTransition(boolean inTransition) {
- this.inTransition = inTransition;
- }
-
- public DeadlineManager getDeadlineMgr() {
- return deadlineMgr;
- }
-
- public StateManager getStateMgr() {
- return stateMgr;
- }
-
- public boolean isTeamWorkflow() {
- return this instanceof TeamWorkFlowArtifact;
- }
-
- public boolean isTask() {
- return this instanceof TaskArtifact;
- }
-
- @Override
- public String getWorldViewGoalOrder() throws OseeCoreException {
- return GoalArtifact.getGoalOrder(this);
- }
-
- public AtsWorkPage getCurrentAtsWorkPage() throws OseeCoreException {
- for (AtsWorkPage atsWorkPage : getAtsWorkPages()) {
- if (isCurrentState(atsWorkPage.getName())) {
- return atsWorkPage;
- }
- }
- return null;
- }
-
- public List<AtsWorkPage> getAtsWorkPages() throws OseeCoreException {
- List<AtsWorkPage> atsWorkPages = new ArrayList<AtsWorkPage>();
- for (WorkPageDefinition workPageDefinition : getWorkFlowDefinition().getPagesOrdered()) {
- try {
- AtsWorkPage atsWorkPage =
- new AtsWorkPage(getWorkFlowDefinition(), workPageDefinition, null,
- ATSXWidgetOptionResolver.getInstance());
- atsWorkPages.add(atsWorkPage);
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
- }
- return atsWorkPages;
- }
-
- /**
- * Assigned or computed Id that will show at the top of the editor
- */
- @SuppressWarnings("unused")
- public String getPcrId() throws OseeCoreException {
- return "";
- }
-
- public Map<String, String> getSMADetails() throws OseeCoreException {
- Map<String, String> details = Artifacts.getDetailsKeyValues(this);
- details.put("Workflow Definition", getWorkFlowDefinition().getName());
- if (getParentActionArtifact() != null) {
- details.put("Action Id", getParentActionArtifact().getHumanReadableId());
- }
- if (!(this instanceof TeamWorkFlowArtifact) && getParentTeamWorkflow() != null) {
- details.put("Parent Team Workflow Id", getParentTeamWorkflow().getHumanReadableId());
- }
- if (this.isOfType(AtsArtifactTypes.TeamWorkflow)) {
- String message = null;
- CmAccessControl accessControl = getAccessControl();
- if (accessControl != null) {
- Collection<? extends AccessContextId> ids = accessControl.getContextId(UserManager.getUser(), this);
- message = ids.toString();
- } else {
- message = "AtsCmAccessControlService not started";
- }
- details.put("Access Context Id", message);
- }
- return details;
- }
-
- protected void addPriviledgedUsersUpTeamDefinitionTree(TeamDefinitionArtifact tda, Set<User> users) throws OseeCoreException {
- users.addAll(tda.getLeads());
- users.addAll(tda.getPrivilegedMembers());
-
- // Walk up tree to get other editors
- if (tda.getParent() != null && tda.getParent() instanceof TeamDefinitionArtifact) {
- addPriviledgedUsersUpTeamDefinitionTree((TeamDefinitionArtifact) tda.getParent(), users);
- }
- }
-
- @Override
- public CmAccessControl getAccessControl() {
- return AtsPlugin.getInstance().getCmService();
- }
-
-}
+/*******************************************************************************
+ * 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.artifact;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+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;
+import java.util.Set;
+import java.util.logging.Level;
+import org.eclipse.nebula.widgets.xviewer.XViewerCells;
+import org.eclipse.osee.ats.artifact.ATSLog.LogType;
+import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact.DefaultTeamState;
+import org.eclipse.osee.ats.editor.SMAEditor;
+import org.eclipse.osee.ats.editor.stateItem.AtsStateItems;
+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.util.AtsNotifyUsers;
+import org.eclipse.osee.ats.util.AtsRelationTypes;
+import org.eclipse.osee.ats.util.AtsUtil;
+import org.eclipse.osee.ats.util.DeadlineManager;
+import org.eclipse.osee.ats.util.Overview;
+import org.eclipse.osee.ats.util.Overview.PreviewStyle;
+import org.eclipse.osee.ats.util.StateManager;
+import org.eclipse.osee.ats.util.widgets.ReviewManager;
+import org.eclipse.osee.ats.workflow.ATSXWidgetOptionResolver;
+import org.eclipse.osee.ats.workflow.AtsWorkPage;
+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.AccessContextId;
+import org.eclipse.osee.framework.core.data.IArtifactType;
+import org.eclipse.osee.framework.core.data.SystemUser;
+import org.eclipse.osee.framework.core.enums.CoreRelationTypes;
+import org.eclipse.osee.framework.core.enums.IRelationEnumeration;
+import org.eclipse.osee.framework.core.enums.PermissionEnum;
+import org.eclipse.osee.framework.core.exception.OseeArgumentException;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.core.exception.OseeDataStoreException;
+import org.eclipse.osee.framework.core.exception.OseeStateException;
+import org.eclipse.osee.framework.core.model.Branch;
+import org.eclipse.osee.framework.core.model.type.ArtifactType;
+import org.eclipse.osee.framework.core.services.CmAccessControl;
+import org.eclipse.osee.framework.core.services.HasCmAccessControl;
+import org.eclipse.osee.framework.jdk.core.util.Lib;
+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.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.ArtifactFactory;
+import org.eclipse.osee.framework.skynet.core.artifact.search.ArtifactQuery;
+import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction;
+import org.eclipse.osee.framework.skynet.core.utility.Artifacts;
+import org.eclipse.osee.framework.ui.plugin.util.Result;
+import org.eclipse.osee.framework.ui.skynet.FrameworkArtifactImageProvider;
+import org.eclipse.osee.framework.ui.skynet.group.IGroupExplorerProvider;
+import org.eclipse.osee.framework.ui.skynet.notify.OseeNotificationManager;
+import org.eclipse.osee.framework.ui.skynet.util.ChangeType;
+import org.eclipse.osee.framework.ui.skynet.util.email.EmailGroup;
+import org.eclipse.osee.framework.ui.skynet.widgets.XDate;
+import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkFlowDefinition;
+import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkFlowDefinitionFactory;
+import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkItemDefinition;
+import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkPageDefinition;
+import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkRuleDefinition;
+import org.eclipse.swt.graphics.Image;
+
+/**
+ * @author Donald G. Dunne
+ */
+public abstract class StateMachineArtifact extends ATSArtifact implements HasCmAccessControl, IGroupExplorerProvider, IWorldViewArtifact, ISubscribableArtifact, IFavoriteableArtifact {
+
+ private final Set<IRelationEnumeration> atsWorldRelations = new HashSet<IRelationEnumeration>();
+ private Collection<User> preSaveStateAssignees;
+ private User preSaveOriginator;
+ public static double DEFAULT_HOURS_PER_WORK_DAY = 8;
+ protected WorkFlowDefinition workFlowDefinition;
+ protected Artifact parent;
+ protected StateMachineArtifact parentSma;
+ protected TeamWorkFlowArtifact parentTeamArt;
+ protected ActionArtifact parentAction;
+ private Collection<User> transitionAssignees;
+ private static String SEPERATOR = "; ";
+ private StateManager stateMgr;
+ private DeadlineManager deadlineMgr;
+ private SMAEditor editor;
+ private ATSLog atsLog;
+ private ATSNote atsNote;
+ private static final AtsStateItems stateItems = new AtsStateItems();
+ private boolean inTransition = false;
+ public static enum TransitionOption {
+ None,
+ Persist,
+ // Override check whether workflow allows transition to state
+ OverrideTransitionValidityCheck,
+ // Allows transition to occur with UnAssigned, OseeSystem or Guest
+ OverrideAssigneeCheck
+ };
+
+ public StateMachineArtifact(ArtifactFactory parentFactory, String guid, String humanReadableId, Branch branch, ArtifactType artifactType) throws OseeDataStoreException {
+ super(parentFactory, guid, humanReadableId, branch, artifactType);
+ }
+
+ @Override
+ public void onBirth() throws OseeCoreException {
+ super.onBirth();
+ setSoleAttributeValue(AtsAttributeTypes.CurrentState, "");
+ }
+
+ @Override
+ public void onInitializationComplete() throws OseeCoreException {
+ super.onInitializationComplete();
+ initializeSMA();
+ }
+
+ @Override
+ public void reloadAttributesAndRelations() throws OseeCoreException {
+ super.reloadAttributesAndRelations();
+ initializeSMA();
+ }
+
+ @SuppressWarnings("unused")
+ protected void initializeSMA() throws OseeCoreException {
+ initalizePreSaveCache();
+ }
+
+ public void initalizePreSaveCache() {
+ try {
+ deadlineMgr = new DeadlineManager(this);
+ stateMgr = new StateManager(this);
+ atsLog = new ATSLog(this);
+ atsNote = new ATSNote(this);
+ preSaveStateAssignees = getStateMgr().getAssignees();
+ if (getOriginator() == null) {
+ preSaveOriginator = UserManager.getUser();
+ } else {
+ preSaveOriginator = getOriginator();
+ }
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ }
+ }
+
+ public boolean hasAtsWorldChildren() throws OseeCoreException {
+ for (IRelationEnumeration iRelationEnumeration : atsWorldRelations) {
+ if (getRelatedArtifactsCount(iRelationEnumeration) > 0) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public String getHelpContext() {
+ return "atsWorkflowEditorWorkflowTab";
+ }
+
+ public String getArtifactSuperTypeName() {
+ return getArtifactTypeName();
+ }
+
+ @SuppressWarnings("unused")
+ @Override
+ public Date getWorldViewDeadlineDate() throws OseeCoreException {
+ return null;
+ }
+
+ @SuppressWarnings("unused")
+ @Override
+ public String getWorldViewDeadlineDateStr() throws OseeCoreException {
+ return "";
+ }
+
+ @SuppressWarnings("unused")
+ @Override
+ public String getWorldViewDescription() throws OseeCoreException {
+ return "";
+ }
+
+ @Override
+ public String getWorldViewImplementer() throws OseeCoreException {
+ return Artifacts.toString("; ", getImplementers());
+ }
+
+ public Collection<User> getImplementersByState(String stateName) throws OseeCoreException {
+ if (isCancelled()) {
+ return Arrays.asList(getLog().getCancelledLogItem().getUser());
+ }
+ Collection<User> users = new HashSet<User>(getStateMgr().getAssignees(stateName));
+ LogItem item = getLog().getCompletedLogItem();
+ if (item != null) {
+ users.add(item.getUser());
+ }
+ return users;
+ }
+
+ @SuppressWarnings("unused")
+ public Collection<User> getImplementers() throws OseeCoreException {
+ return Collections.emptyList();
+ }
+
+ @SuppressWarnings("unused")
+ @Override
+ public String getWorldViewTeam() throws OseeCoreException {
+ return null;
+ }
+
+ @Override
+ public String getWorldViewGroups() throws OseeCoreException {
+ return Artifacts.toString("; ", getRelatedArtifacts(CoreRelationTypes.Universal_Grouping__Group));
+ }
+
+ @Override
+ public String getWorldViewGoals() throws OseeCoreException {
+ return Artifacts.toString("; ", getRelatedArtifacts(AtsRelationTypes.Goal_Goal));
+ }
+
+ @SuppressWarnings("unused")
+ @Override
+ public double getWorldViewWeeklyBenefit() throws OseeCoreException {
+ return 0;
+ }
+
+ @Override
+ public void onAttributePersist(SkynetTransaction transaction) {
+ // Since multiple ways exist to change the assignees, notification is performed on the persist
+ if (isDeleted()) {
+ return;
+ }
+ try {
+ notifyNewAssigneesAndReset();
+ notifyOriginatorAndReset();
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ }
+ }
+
+ /**
+ * Override to apply different algorithm to current section expansion.
+ *
+ * @return true if section should be expanded
+ * @throws OseeCoreException
+ */
+ public boolean isCurrentSectionExpanded(String stateName) throws OseeCoreException {
+ return getStateMgr().getCurrentStateName().equals(stateName);
+ }
+
+ public void notifyNewAssigneesAndReset() throws OseeCoreException {
+ if (preSaveStateAssignees == null) {
+ preSaveStateAssignees = getStateMgr().getAssignees();
+ return;
+ }
+ Set<User> newAssignees = new HashSet<User>();
+ for (User user : getStateMgr().getAssignees()) {
+ if (!preSaveStateAssignees.contains(user)) {
+ newAssignees.add(user);
+ }
+ }
+ preSaveStateAssignees = getStateMgr().getAssignees();
+ if (newAssignees.isEmpty()) {
+ return;
+ }
+ try {
+ // These will be processed upon save
+ AtsNotifyUsers.getInstance().notify(this, newAssignees, AtsNotifyUsers.NotifyType.Assigned);
+ } catch (OseeCoreException ex) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
+ }
+ }
+
+ public void notifyOriginatorAndReset() throws OseeCoreException {
+ if (preSaveOriginator != null && getOriginator() != null && !getOriginator().equals(preSaveOriginator)) {
+ AtsNotifyUsers.getInstance().notify(this, AtsNotifyUsers.NotifyType.Originator);
+ }
+ preSaveOriginator = getOriginator();
+ }
+
+ @SuppressWarnings("unused")
+ public boolean isValidationRequired() throws OseeCoreException {
+ return false;
+ }
+
+ public abstract Set<User> getPrivilegedUsers() throws OseeCoreException;
+
+ @Override
+ public String getDescription() {
+ return "";
+ }
+
+ public ArrayList<EmailGroup> getEmailableGroups() throws OseeCoreException {
+ ArrayList<EmailGroup> groupNames = new ArrayList<EmailGroup>();
+ ArrayList<String> emails = new ArrayList<String>();
+ emails.add(getOriginator().getEmail());
+ groupNames.add(new EmailGroup("Originator", emails));
+ if (getStateMgr().getAssignees().size() > 0) {
+ emails = new ArrayList<String>();
+ for (User u : getStateMgr().getAssignees()) {
+ emails.add(u.getEmail());
+ }
+ groupNames.add(new EmailGroup("Assignees", emails));
+ }
+ return groupNames;
+ }
+
+ @SuppressWarnings("unused")
+ public StateMachineArtifact getParentSMA() throws OseeCoreException {
+ return parentSma;
+ }
+
+ @SuppressWarnings("unused")
+ public ActionArtifact getParentActionArtifact() throws OseeCoreException {
+ return parentAction;
+ }
+
+ @SuppressWarnings("unused")
+ public TeamWorkFlowArtifact getParentTeamWorkflow() throws OseeCoreException {
+ return parentTeamArt;
+ }
+
+ public String getPreviewHtml() throws OseeCoreException {
+ return getPreviewHtml(PreviewStyle.NONE);
+ }
+
+ public String getPreviewHtml(PreviewStyle... styles) throws OseeCoreException {
+ Overview o = new Overview();
+ o.addHeader(this, styles);
+ o.addFooter(this, styles);
+ return o.getPage();
+ }
+
+ public boolean isUnCancellable() {
+ try {
+ LogItem item = getLog().getStateEvent(LogType.StateCancelled);
+ if (item == null) {
+ throw new OseeArgumentException("No Cancelled Event");
+ }
+ for (WorkPageDefinition toWorkPageDefinition : getWorkFlowDefinition().getToPages(getWorkPageDefinition())) {
+ if (toWorkPageDefinition.getPageName().equals(item.getState())) {
+ return true;
+ }
+ }
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ }
+ return false;
+ }
+
+ public boolean isTaskable() throws OseeCoreException {
+ if (isCompleted() || isCancelled()) {
+ return false;
+ }
+ return true;
+ }
+
+ public boolean showTaskTab() throws OseeCoreException {
+ return isTaskable();
+ }
+
+ public String getEditorTitle() throws OseeCoreException {
+ return getWorldViewType() + ": " + getName();
+ }
+
+ @SuppressWarnings("unused")
+ @Override
+ public String getWorldViewActionableItems() throws OseeCoreException {
+ return "";
+ }
+
+ /**
+ * Registers relation as part of the parent/child hierarchy in ATS World
+ */
+ public void registerAtsWorldRelation(AtsRelationTypes side) {
+ atsWorldRelations.add(side);
+ }
+
+ @Override
+ public Image getAssigneeImage() throws OseeCoreException {
+ if (isDeleted()) {
+ return null;
+ }
+ return FrameworkArtifactImageProvider.getUserImage(getStateMgr().getAssignees());
+ }
+
+ public WorkFlowDefinition getWorkFlowDefinition() {
+ if (workFlowDefinition == null) {
+ try {
+ workFlowDefinition = WorkFlowDefinitionFactory.getWorkFlowDefinition(this);
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ }
+ }
+ return workFlowDefinition;
+ }
+
+ @Override
+ public void addSubscribed(User user, SkynetTransaction transaction) throws OseeCoreException {
+ if (!getRelatedArtifacts(AtsRelationTypes.SubscribedUser_User).contains(user)) {
+ addRelation(AtsRelationTypes.SubscribedUser_User, user);
+ persist(transaction);
+ }
+
+ }
+
+ @Override
+ public void removeSubscribed(User user, SkynetTransaction transaction) throws OseeCoreException {
+ deleteRelation(AtsRelationTypes.SubscribedUser_User, user);
+ persist(transaction);
+ }
+
+ @Override
+ public boolean isSubscribed(User user) throws OseeCoreException {
+ return getRelatedArtifacts(AtsRelationTypes.SubscribedUser_User).contains(user);
+ }
+
+ @Override
+ public ArrayList<User> getSubscribed() throws OseeCoreException {
+ ArrayList<User> arts = new ArrayList<User>();
+ for (Artifact art : getRelatedArtifacts(AtsRelationTypes.SubscribedUser_User)) {
+ arts.add((User) art);
+ }
+ return arts;
+ }
+
+ @Override
+ public void addFavorite(User user, SkynetTransaction transaction) throws OseeCoreException {
+ if (!getRelatedArtifacts(AtsRelationTypes.FavoriteUser_User).contains(user)) {
+ addRelation(AtsRelationTypes.FavoriteUser_User, user);
+ persist(transaction);
+ }
+ }
+
+ @Override
+ public void removeFavorite(User user, SkynetTransaction transaction) throws OseeCoreException {
+ deleteRelation(AtsRelationTypes.FavoriteUser_User, user);
+ persist(transaction);
+ }
+
+ @Override
+ public boolean isFavorite(User user) throws OseeCoreException {
+ return getRelatedArtifacts(AtsRelationTypes.FavoriteUser_User).contains(user);
+ }
+
+ @Override
+ public ArrayList<User> getFavorites() throws OseeCoreException {
+ ArrayList<User> arts = new ArrayList<User>();
+ for (Artifact art : getRelatedArtifacts(AtsRelationTypes.FavoriteUser_User)) {
+ arts.add((User) art);
+ }
+ return arts;
+ }
+
+ @Override
+ public boolean amISubscribed() {
+ try {
+ return isSubscribed(UserManager.getUser());
+ } catch (OseeCoreException ex) {
+ return false;
+ }
+ }
+
+ @Override
+ public boolean amIFavorite() {
+ try {
+ return isFavorite(UserManager.getUser());
+ } catch (OseeCoreException ex) {
+ return false;
+ }
+ }
+
+ @Override
+ public void atsDelete(Set<Artifact> deleteArts, Map<Artifact, Object> allRelated) throws OseeCoreException {
+ SMAEditor.close(Collections.singleton(this), true);
+ super.atsDelete(deleteArts, allRelated);
+ }
+
+ @SuppressWarnings("unused")
+ @Override
+ public String getWorldViewType() throws OseeCoreException {
+ return getArtifactTypeName();
+ }
+
+ @SuppressWarnings("unused")
+ @Override
+ public String getWorldViewTitle() throws OseeCoreException {
+ return getName();
+ }
+
+ @Override
+ public String getWorldViewState() throws OseeCoreException {
+ return getStateMgr().getCurrentStateName();
+ }
+
+ public String implementersStr = null;
+
+ @Override
+ public String getWorldViewActivePoc() throws OseeCoreException {
+ if (isCancelledOrCompleted()) {
+ if (implementersStr == null) {
+ if (getImplementers().size() > 0) {
+ implementersStr = "(" + Artifacts.toString("; ", getImplementers()) + ")";
+ }
+ }
+ return implementersStr;
+ }
+ return Artifacts.toString("; ", getStateMgr().getAssignees());
+ }
+
+ @Override
+ public String getWorldViewCreatedDateStr() throws OseeCoreException {
+ if (getWorldViewCreatedDate() == null) {
+ return XViewerCells.getCellExceptionString("No creation date");
+ }
+ return new XDate(getWorldViewCreatedDate()).getMMDDYYHHMM();
+ }
+
+ @Override
+ public String getWorldViewCompletedDateStr() throws OseeCoreException {
+ if (isCompleted()) {
+ if (getWorldViewCompletedDate() == null) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, "Completed with no date => " + getHumanReadableId());
+ return XViewerCells.getCellExceptionString("Completed with no date.");
+ }
+ return new XDate(getWorldViewCompletedDate()).getMMDDYYHHMM();
+ }
+ return "";
+ }
+
+ @Override
+ public String getWorldViewCancelledDateStr() throws OseeCoreException {
+ if (isCancelled()) {
+ if (getWorldViewCancelledDate() == null) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, "Cancelled with no date => " + getHumanReadableId());
+ return XViewerCells.getCellExceptionString("Cancelled with no date.");
+ }
+ return new XDate(getWorldViewCancelledDate()).getMMDDYYHHMM();
+ }
+ return "";
+ }
+
+ @Override
+ public Date getWorldViewCreatedDate() throws OseeCoreException {
+ return getLog().getCreationDate();
+ }
+
+ @Override
+ public String getWorldViewOriginator() throws OseeCoreException {
+ return getOriginator().getName();
+ }
+
+ @SuppressWarnings("unused")
+ @Override
+ public String getWorldViewID() throws OseeCoreException {
+ return getHumanReadableId();
+ }
+
+ @Override
+ public String getWorldViewLegacyPCR() throws OseeCoreException {
+ if (isAttributeTypeValid(AtsAttributeTypes.LegacyPcrId)) {
+ return getSoleAttributeValue(AtsAttributeTypes.LegacyPcrId, "");
+ }
+ return "";
+ }
+
+ @Override
+ public Date getWorldViewCompletedDate() throws OseeCoreException {
+ LogItem item = getLog().getCompletedLogItem();
+ if (item != null) {
+ return item.getDate();
+ }
+ return null;
+ }
+
+ @Override
+ public Date getWorldViewCancelledDate() throws OseeCoreException {
+ LogItem item = getLog().getCancelledLogItem();
+ if (item != null) {
+ return item.getDate();
+ }
+ return null;
+ }
+
+ @Override
+ public abstract VersionArtifact getWorldViewTargetedVersion() throws OseeCoreException;
+
+ @SuppressWarnings("unused")
+ @Override
+ public ChangeType getWorldViewChangeType() throws OseeCoreException {
+ return ChangeType.None;
+ }
+
+ @Override
+ public String getWorldViewChangeTypeStr() throws OseeCoreException {
+ if (getWorldViewChangeType() == null || getWorldViewChangeType() == ChangeType.None) {
+ return "";
+ } else {
+ return getWorldViewChangeType().name();
+ }
+ }
+
+ public double getEstimatedHoursFromArtifact() throws OseeCoreException {
+ if (isAttributeTypeValid(AtsAttributeTypes.EstimatedHours)) {
+ return getSoleAttributeValue(AtsAttributeTypes.EstimatedHours, 0.0);
+ }
+ return 0;
+ }
+
+ public double getEstimatedHoursFromTasks(String relatedToState) throws OseeCoreException {
+ if (!(this instanceof TaskableStateMachineArtifact)) {
+ return 0;
+ }
+ return ((TaskableStateMachineArtifact) this).getEstimatedHoursFromTasks(relatedToState);
+ }
+
+ public double getEstimatedHoursFromTasks() throws OseeCoreException {
+ if (!(this instanceof TaskableStateMachineArtifact)) {
+ return 0;
+ }
+ return ((TaskableStateMachineArtifact) this).getEstimatedHoursFromTasks();
+ }
+
+ public double getEstimatedHoursFromReviews() throws OseeCoreException {
+ if (isTeamWorkflow()) {
+ return ReviewManager.getEstimatedHours((TeamWorkFlowArtifact) this);
+ }
+ return 0;
+ }
+
+ public double getEstimatedHoursFromReviews(String relatedToState) throws OseeCoreException {
+ if (isTeamWorkflow()) {
+ return ReviewManager.getEstimatedHours((TeamWorkFlowArtifact) this, relatedToState);
+ }
+ return 0;
+ }
+
+ public double getEstimatedHoursTotal(String relatedToState) throws OseeCoreException {
+ return getEstimatedHoursFromArtifact() + getEstimatedHoursFromTasks(relatedToState) + getEstimatedHoursFromReviews(relatedToState);
+ }
+
+ public double getEstimatedHoursTotal() throws OseeCoreException {
+ return getEstimatedHoursFromArtifact() + getEstimatedHoursFromTasks() + getEstimatedHoursFromReviews();
+ }
+
+ @Override
+ public double getWorldViewEstimatedHours() throws OseeCoreException {
+ return getEstimatedHoursTotal();
+ }
+
+ @SuppressWarnings("unused")
+ @Override
+ public String getWorldViewUserCommunity() throws OseeCoreException {
+ return "";
+ }
+
+ @SuppressWarnings("unused")
+ @Override
+ public String getWorldViewPriority() throws OseeCoreException {
+ return "";
+ }
+
+ @Override
+ public String getWorldViewResolution() throws OseeCoreException {
+ return getAttributesToString(AtsAttributeTypes.Resolution);
+ }
+
+ public double getRemainHoursFromArtifact() throws OseeCoreException {
+ if (isCompleted() || isCancelled()) {
+ return 0;
+ }
+ double est = getSoleAttributeValue(AtsAttributeTypes.EstimatedHours, 0.0);
+ if (est == 0) {
+ return getEstimatedHoursFromArtifact();
+ }
+ double remain = est - est * getPercentCompleteSMATotal() / 100.0;
+ return remain;
+ }
+
+ public double getRemainHoursTotal() throws OseeCoreException {
+ return getRemainHoursFromArtifact() + getRemainFromTasks() + getRemainFromReviews();
+ }
+
+ public double getRemainFromTasks() throws OseeCoreException {
+ if (!(this instanceof TaskableStateMachineArtifact)) {
+ return 0;
+ }
+ return ((TaskableStateMachineArtifact) this).getRemainHoursFromTasks();
+ }
+
+ public double getRemainFromReviews() throws OseeCoreException {
+ if (isTeamWorkflow()) {
+ return ReviewManager.getRemainHours((TeamWorkFlowArtifact) this);
+ }
+ return 0;
+ }
+
+ @Override
+ public double getWorldViewRemainHours() throws OseeCoreException {
+ return getRemainHoursTotal();
+ }
+
+ @Override
+ public Result isWorldViewRemainHoursValid() throws OseeCoreException {
+ if (!isAttributeTypeValid(AtsAttributeTypes.EstimatedHours)) {
+ return Result.TrueResult;
+ }
+ try {
+ Double value = getSoleAttributeValue(AtsAttributeTypes.EstimatedHours, null);
+ if (isCancelled()) {
+ return Result.TrueResult;
+ }
+ if (value == null) {
+ return new Result("Estimated Hours not set.");
+ }
+ return Result.TrueResult;
+ } catch (Exception ex) {
+ return new Result(
+ ex.getClass().getName() + ": " + ex.getLocalizedMessage() + "\n\n" + Lib.exceptionToString(ex));
+ }
+ }
+
+ @Override
+ public Result isWorldViewManDaysNeededValid() throws OseeCoreException {
+ Result result = isWorldViewRemainHoursValid();
+ if (result.isFalse()) {
+ return result;
+ }
+ if (getManHrsPerDayPreference() == 0) {
+ return new Result("Man Day Hours Preference is not set.");
+ }
+
+ return Result.TrueResult;
+ }
+
+ @Override
+ public double getWorldViewManDaysNeeded() throws OseeCoreException {
+ double hrsRemain = getWorldViewRemainHours();
+ double manDaysNeeded = 0;
+ if (hrsRemain != 0) {
+ manDaysNeeded = hrsRemain / getManHrsPerDayPreference();
+ }
+ return manDaysNeeded;
+ }
+
+ @SuppressWarnings("unused")
+ public double getManHrsPerDayPreference() throws OseeCoreException {
+ return DEFAULT_HOURS_PER_WORK_DAY;
+ }
+
+ @SuppressWarnings("unused")
+ @Override
+ public double getWorldViewAnnualCostAvoidance() throws OseeCoreException {
+ return 0;
+ }
+
+ @Override
+ public Result isWorldViewAnnualCostAvoidanceValid() throws OseeCoreException {
+ if (isAttributeTypeValid(AtsAttributeTypes.WeeklyBenefit)) {
+ return Result.TrueResult;
+ }
+ Result result = isWorldViewRemainHoursValid();
+ if (result.isFalse()) {
+ return result;
+ }
+ String value = null;
+ try {
+ value = getSoleAttributeValue(AtsAttributeTypes.WeeklyBenefit, "");
+ if (!Strings.isValid(value)) {
+ return new Result("Weekly Benefit Hours not set.");
+ }
+ double val = new Float(value).doubleValue();
+ if (val == 0) {
+ return new Result("Weekly Benefit Hours not set.");
+ }
+ } catch (NumberFormatException ex) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, "HRID " + getHumanReadableId(), ex);
+ return new Result("Weekly Benefit value is invalid double \"" + value + "\"");
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, "HRID " + getHumanReadableId(), ex);
+ return new Result("Exception calculating cost avoidance. See log for details.");
+ }
+ return Result.TrueResult;
+ }
+
+ @Override
+ public String getWorldViewNotes() throws OseeCoreException {
+ return getSoleAttributeValue(AtsAttributeTypes.SmaNote, "");
+ }
+
+ @Override
+ public String getWorldViewWorkPackage() throws OseeCoreException {
+ return getSoleAttributeValue(AtsAttributeTypes.WorkPackage, "");
+ }
+
+ @Override
+ public String getWorldViewPoint() throws OseeCoreException {
+ return getSoleAttributeValue(AtsAttributeTypes.Points, "");
+ }
+
+ @Override
+ public String getWorldViewNumeric1() throws OseeCoreException {
+ return AtsUtil.doubleToI18nString(getSoleAttributeValue(AtsAttributeTypes.Numeric1, 0.0), true);
+ }
+
+ @Override
+ public String getWorldViewNumeric2() throws OseeCoreException {
+ return AtsUtil.doubleToI18nString(getSoleAttributeValue(AtsAttributeTypes.Numeric2, 0.0), true);
+ }
+
+ @Override
+ public String getWorldViewGoalOrderVote() throws OseeCoreException {
+ return getSoleAttributeValue(AtsAttributeTypes.GoalOrderVote, "");
+ }
+
+ @Override
+ public String getWorldViewCategory() throws OseeCoreException {
+ return getSoleAttributeValue(AtsAttributeTypes.Category1, "");
+ }
+
+ @Override
+ public String getWorldViewCategory2() throws OseeCoreException {
+ return getSoleAttributeValue(AtsAttributeTypes.Category2, "");
+ }
+
+ @Override
+ public String getWorldViewCategory3() throws OseeCoreException {
+ return getSoleAttributeValue(AtsAttributeTypes.Category3, "");
+ }
+
+ public int getWorldViewStatePercentComplete() throws OseeCoreException {
+ return getPercentCompleteSMAStateTotal(getStateMgr().getCurrentStateName());
+ }
+
+ @Override
+ public String getWorldViewNumberOfTasks() throws OseeCoreException {
+ if (!(this instanceof TaskableStateMachineArtifact)) {
+ return "";
+ }
+ int num = ((TaskableStateMachineArtifact) this).getTaskArtifacts().size();
+ if (num == 0) {
+ return "";
+ }
+ return String.valueOf(num);
+ }
+
+ @SuppressWarnings("unused")
+ @Override
+ public String getWorldViewRelatedToState() throws OseeCoreException {
+ return "";
+ }
+
+ @Override
+ public String getWorldViewTargetedVersionStr() throws OseeCoreException {
+ if (getWorldViewTargetedVersion() == null) {
+ return "";
+ }
+ return getWorldViewTargetedVersion().toString();
+ }
+
+ /**
+ * Return true if this artifact, it's ATS relations and any of the other side artifacts are dirty
+ *
+ * @return true if any object in SMA tree is dirty
+ */
+ public Result isSMAEditorDirty() {
+ try {
+ Set<Artifact> artifacts = new HashSet<Artifact>();
+ getSmaArtifactsOneLevel(this, artifacts);
+ for (Artifact artifact : artifacts) {
+ if (artifact.isDirty()) {
+ return new Result(true, String.format("Artifact [%s][%s] is dirty", artifact.getHumanReadableId(),
+ artifact));
+ }
+ }
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, "Can't save artifact " + getHumanReadableId(), ex);
+ }
+ return Result.FalseResult;
+ }
+
+ public void saveSMA(SkynetTransaction transaction) {
+ try {
+ Set<Artifact> artifacts = new HashSet<Artifact>();
+ getSmaArtifactsOneLevel(this, artifacts);
+ for (Artifact artifact : artifacts) {
+ artifact.persist(transaction);
+ }
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, "Can't save artifact " + getHumanReadableId(), ex);
+ }
+ }
+
+ public void revertSMA() {
+ try {
+ Set<Artifact> artifacts = new HashSet<Artifact>();
+ getSmaArtifactsOneLevel(this, artifacts);
+ for (Artifact artifact : artifacts) {
+ artifact.reloadAttributesAndRelations();
+ }
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, "Can't revert artifact " + getHumanReadableId(), ex);
+ }
+ }
+
+ @SuppressWarnings("unused")
+ public void getSmaArtifactsOneLevel(StateMachineArtifact smaArtifact, Set<Artifact> artifacts) throws OseeCoreException {
+ artifacts.add(smaArtifact);
+ }
+
+ @Override
+ public Date getWorldViewEstimatedReleaseDate() throws OseeCoreException {
+ Date date = getSoleAttributeValue(AtsAttributeTypes.EstimatedReleaseDate, null);
+ Date parentDate = null;
+ if (getParentSMA() != null) {
+ parentDate = getParentSMA().getWorldViewEstimatedReleaseDate();
+ }
+ if (date == null && parentDate != null) {
+ return parentDate;
+ }
+ return date;
+ }
+
+ @Override
+ public Date getWorldViewEstimatedCompletionDate() throws OseeCoreException {
+ Date date = getSoleAttributeValue(AtsAttributeTypes.EstimatedCompletionDate, null);
+ if (date != null) {
+ return date;
+ }
+ if (getParentSMA() != null) {
+ Date parentDate = getParentSMA().getWorldViewEstimatedCompletionDate();
+ if (parentDate != null) {
+ return parentDate;
+ }
+ }
+ date = getWorldViewEstimatedReleaseDate();
+ if (date != null) {
+ return date;
+ }
+ return null;
+ }
+
+ @Override
+ public String getWorldViewEstimatedReleaseDateStr() throws OseeCoreException {
+ if (getWorldViewEstimatedReleaseDate() == null) {
+ return "";
+ }
+ return new XDate(getWorldViewEstimatedReleaseDate()).getMMDDYYHHMM();
+ }
+
+ @Override
+ public String getWorldViewEstimatedCompletionDateStr() throws OseeCoreException {
+ if (getWorldViewEstimatedCompletionDate() == null) {
+ return "";
+ }
+ return new XDate(getWorldViewEstimatedCompletionDate()).getMMDDYYHHMM();
+ }
+
+ @Override
+ public abstract Date getWorldViewReleaseDate() throws OseeCoreException;
+
+ @Override
+ public String getWorldViewReleaseDateStr() throws OseeCoreException {
+ if (getWorldViewReleaseDate() == null) {
+ return "";
+ }
+ return new XDate(getWorldViewReleaseDate()).getMMDDYYHHMM();
+ }
+
+ /**
+ * Called at the end of a transition just before transaction manager persist. SMAs can override to perform tasks due
+ * to transition.
+ *
+ * @throws Exception
+ */
+ @SuppressWarnings("unused")
+ public void transitioned(WorkPageDefinition fromPage, WorkPageDefinition toPage, Collection<User> toAssignees, boolean persist, SkynetTransaction transaction) throws OseeCoreException {
+ // provided for subclass implementation
+ }
+
+ @Override
+ public String getHyperName() {
+ return getName();
+ }
+
+ @Override
+ public String getHyperType() {
+ try {
+ return getArtifactTypeName();
+ } catch (Exception ex) {
+ return ex.getLocalizedMessage();
+ }
+ }
+
+ @Override
+ public String getHyperState() {
+ try {
+ return getStateMgr().getCurrentStateName();
+ } catch (OseeCoreException ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ }
+ return "";
+ }
+
+ @Override
+ public String getHyperAssignee() {
+ try {
+ return Artifacts.toString("; ", getStateMgr().getAssignees());
+ } catch (OseeCoreException ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ }
+ return "";
+ }
+
+ @Override
+ public Image getHyperAssigneeImage() throws OseeCoreException {
+ return getAssigneeImage();
+ }
+
+ @Override
+ public Artifact getHyperArtifact() {
+ return this;
+ }
+
+ @SuppressWarnings("unused")
+ @Override
+ public String getWorldViewDecision() throws OseeCoreException {
+ return "";
+ }
+
+ @Override
+ public Artifact getParentAtsArtifact() throws OseeCoreException {
+ return getParentSMA();
+ }
+
+ @Override
+ public String getWorldViewValidationRequiredStr() throws OseeCoreException {
+ if (isAttributeTypeValid(AtsAttributeTypes.ValidationRequired)) {
+ return String.valueOf(getSoleAttributeValue(AtsAttributeTypes.ValidationRequired, false));
+ }
+ return "";
+ }
+
+ @SuppressWarnings("unused")
+ @Override
+ public Result isWorldViewDeadlineAlerting() throws OseeCoreException {
+ return Result.FalseResult;
+ }
+
+ @SuppressWarnings("unused")
+ @Override
+ public int getWorldViewPercentRework() throws OseeCoreException {
+ return 0;
+ }
+
+ @Override
+ public String getWorldViewPercentReworkStr() throws OseeCoreException {
+ int reWork = getWorldViewPercentRework();
+ if (reWork == 0) {
+ return "";
+ }
+ return String.valueOf(reWork);
+ }
+
+ public static Set<IArtifactType> getAllSMAType() throws OseeCoreException {
+ Set<IArtifactType> artTypeNames = TeamWorkflowExtensions.getInstance().getAllTeamWorkflowArtifactTypes();
+ artTypeNames.add(AtsArtifactTypes.Task);
+ artTypeNames.add(AtsArtifactTypes.DecisionReview);
+ artTypeNames.add(AtsArtifactTypes.PeerToPeerReview);
+ return artTypeNames;
+ }
+
+ public static List<Artifact> getAllSMATypeArtifacts() throws OseeCoreException {
+ List<Artifact> result = new ArrayList<Artifact>();
+ for (IArtifactType artType : getAllSMAType()) {
+ result.addAll(ArtifactQuery.getArtifactListFromType(artType, AtsUtil.getAtsBranch()));
+ }
+ return result;
+ }
+
+ public static List<TeamWorkFlowArtifact> getAllTeamWorkflowArtifacts() throws OseeCoreException {
+ List<TeamWorkFlowArtifact> result = new ArrayList<TeamWorkFlowArtifact>();
+ for (IArtifactType artType : TeamWorkflowExtensions.getInstance().getAllTeamWorkflowArtifactTypes()) {
+ List<TeamWorkFlowArtifact> teamArts =
+ org.eclipse.osee.framework.jdk.core.util.Collections.castAll(ArtifactQuery.getArtifactListFromType(artType,
+ AtsUtil.getAtsBranch()));
+ result.addAll(teamArts);
+ }
+ return result;
+ }
+
+ @SuppressWarnings("unused")
+ @Override
+ public String getWorldViewBranchStatus() throws OseeCoreException {
+ return "";
+ }
+
+ @SuppressWarnings("unused")
+ @Override
+ public String getWorldViewReviewAuthor() throws OseeCoreException {
+ return "";
+ }
+
+ @SuppressWarnings("unused")
+ @Override
+ public String getWorldViewReviewDecider() throws OseeCoreException {
+ return "";
+ }
+
+ @SuppressWarnings("unused")
+ @Override
+ public String getWorldViewReviewModerator() throws OseeCoreException {
+ return "";
+ }
+
+ @SuppressWarnings("unused")
+ @Override
+ public String getWorldViewReviewReviewer() throws OseeCoreException {
+ return "";
+ }
+
+ /**
+ * Return hours spent working ONLY the SMA stateName (not children SMAs)
+ */
+ public double getHoursSpentSMAState(String stateName) throws OseeCoreException {
+ return getStateMgr().getHoursSpent(stateName);
+ }
+
+ /**
+ * Return hours spent working ONLY on tasks related to stateName
+ */
+ public double getHoursSpentSMAStateTasks(String stateName) throws OseeCoreException {
+ if (!(this instanceof TaskableStateMachineArtifact)) {
+ return 0;
+ }
+ return ((TaskableStateMachineArtifact) this).getHoursSpentFromTasks(stateName);
+ }
+
+ /**
+ * Return hours spent working ONLY on reviews related to stateName
+ */
+ public double getHoursSpentSMAStateReviews(String stateName) throws OseeCoreException {
+ if (isTeamWorkflow()) {
+ return ReviewManager.getHoursSpent((TeamWorkFlowArtifact) this, stateName);
+ }
+ return 0;
+ }
+
+ /**
+ * Return hours spent working on all things (including children SMAs) related to stateName
+ */
+ public double getHoursSpentSMAStateTotal(String stateName) throws OseeCoreException {
+ return getHoursSpentSMAState(stateName) + getHoursSpentSMAStateTasks(stateName) + getHoursSpentSMAStateReviews(stateName);
+ }
+
+ @Override
+ public double getWorldViewHoursSpentStateTotal() throws OseeCoreException {
+ return getHoursSpentSMAStateTotal(getStateMgr().getCurrentStateName());
+ }
+
+ /**
+ * Return hours spent working on all things (including children SMAs) for this SMA
+ */
+ public double getHoursSpentSMATotal() throws OseeCoreException {
+ double hours = 0.0;
+ for (String stateName : getStateMgr().getVisitedStateNames()) {
+ hours += getHoursSpentSMAStateTotal(stateName);
+ }
+ return hours;
+ }
+
+ /**
+ * Return Percent Complete working ONLY the SMA stateName (not children SMAs)
+ */
+ public int getPercentCompleteSMAState(String stateName) throws OseeCoreException {
+ return getStateMgr().getPercentComplete(stateName);
+ }
+
+ /**
+ * Return Percent Complete ONLY on tasks related to stateName. Total Percent / # Tasks
+ */
+ public int getPercentCompleteSMAStateTasks(String stateName) throws OseeCoreException {
+ if (!(this instanceof TaskableStateMachineArtifact)) {
+ return 0;
+ }
+ return ((TaskableStateMachineArtifact) this).getPercentCompleteFromTasks(stateName);
+ }
+
+ /**
+ * Return Percent Complete ONLY on reviews related to stateName. Total Percent / # Reviews
+ */
+ public int getPercentCompleteSMAStateReviews(String stateName) throws OseeCoreException {
+ if (isTeamWorkflow()) {
+ return ReviewManager.getPercentComplete((TeamWorkFlowArtifact) this, stateName);
+ }
+ return 0;
+ }
+
+ /**
+ * Return Percent Complete on all things (including children SMAs) related to stateName. Total Percent for state,
+ * tasks and reviews / 1 + # Tasks + # Reviews
+ */
+ public int getPercentCompleteSMAStateTotal(String stateName) throws OseeCoreException {
+ return getStateMetricsData(stateName).getResultingPercent();
+ }
+
+ /**
+ * Return Percent Complete on all things (including children SMAs) for this SMA<br>
+ * <br>
+ * percent = all state's percents / number of states (minus completed/cancelled)
+ */
+ public int getPercentCompleteSMATotal() throws OseeCoreException {
+ if (isCancelledOrCompleted()) {
+ return 100;
+ }
+ Map<String, Double> stateToWeightMap = getStatePercentCompleteWeight();
+ if (stateToWeightMap.size() > 0) {
+ // Calculate total percent using configured weighting
+ int percent = 0;
+ for (String stateName : getWorkFlowDefinition().getPageNames()) {
+ if (!stateName.equals(DefaultTeamState.Completed.name()) && !stateName.equals(DefaultTeamState.Cancelled.name())) {
+ Double weight = stateToWeightMap.get(stateName);
+ if (weight == null) {
+ weight = 0.0;
+ }
+ percent += weight * getPercentCompleteSMAStateTotal(stateName);
+ }
+ }
+ return percent;
+ } else {
+ int percent = 0;
+ int numStates = 0;
+ for (String stateName : getWorkFlowDefinition().getPageNames()) {
+ if (!stateName.equals(DefaultTeamState.Completed.name()) && !stateName.equals(DefaultTeamState.Cancelled.name())) {
+ percent += getPercentCompleteSMAStateTotal(stateName);
+ numStates++;
+ }
+ }
+ if (numStates == 0) {
+ return 0;
+ }
+ return percent / numStates;
+ }
+ }
+
+ // Cache stateToWeight mapping
+ private Map<String, Double> stateToWeight = null;
+
+ public Map<String, Double> getStatePercentCompleteWeight() throws OseeCoreException {
+ if (stateToWeight == null) {
+ stateToWeight = new HashMap<String, Double>();
+ Collection<WorkRuleDefinition> workRuleDefs = getWorkRulesStartsWith(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.");
+ }
+ if (workRuleDefs.size() == 1) {
+ stateToWeight = AtsStatePercentCompleteWeightRule.getStateWeightMap(workRuleDefs.iterator().next());
+ }
+ }
+ return stateToWeight;
+ }
+
+ private StateMetricsData getStateMetricsData(String stateName) throws OseeCoreException {
+ // Add percent and bump objects 1 for state percent
+ int percent = getPercentCompleteSMAState(stateName);
+ int numObjects = 1; // the state itself is one object
+
+ // Add percent for each task and bump objects for each task
+ if (this instanceof TaskableStateMachineArtifact) {
+ Collection<TaskArtifact> tasks = ((TaskableStateMachineArtifact) this).getTaskArtifacts(stateName);
+ for (TaskArtifact taskArt : tasks) {
+ percent += taskArt.getPercentCompleteSMATotal();
+ }
+ numObjects += tasks.size();
+ }
+
+ // Add percent for each review and bump objects for each review
+ if (isTeamWorkflow()) {
+ Collection<ReviewSMArtifact> reviews = ReviewManager.getReviews((TeamWorkFlowArtifact) this, stateName);
+ for (ReviewSMArtifact reviewArt : reviews) {
+ percent += reviewArt.getPercentCompleteSMATotal();
+ }
+ numObjects += reviews.size();
+ }
+
+ return new StateMetricsData(percent, numObjects);
+ }
+
+ private static class StateMetricsData {
+ public int numObjects = 0;
+ public int percent = 0;
+
+ public StateMetricsData(int percent, int numObjects) {
+ this.numObjects = numObjects;
+ this.percent = percent;
+ }
+
+ public int getResultingPercent() {
+ return percent / numObjects;
+ }
+
+ @Override
+ public String toString() {
+ return "Percent: " + getResultingPercent() + " NumObjs: " + numObjects + " Total Percent: " + percent;
+ }
+ }
+
+ @Override
+ public double getWorldViewHoursSpentState() throws OseeCoreException {
+ return getHoursSpentSMAState(getStateMgr().getCurrentStateName());
+ }
+
+ @Override
+ public double getWorldViewHoursSpentStateReview() throws OseeCoreException {
+ return getHoursSpentSMAStateReviews(getStateMgr().getCurrentStateName());
+ }
+
+ @Override
+ public double getWorldViewHoursSpentStateTask() throws OseeCoreException {
+ return getHoursSpentSMAStateTasks(getStateMgr().getCurrentStateName());
+ }
+
+ @Override
+ public double getWorldViewHoursSpentTotal() throws OseeCoreException {
+ return getHoursSpentSMATotal();
+ }
+
+ @Override
+ public int getWorldViewPercentCompleteState() throws OseeCoreException {
+ return getPercentCompleteSMAState(getStateMgr().getCurrentStateName());
+ }
+
+ @Override
+ public int getWorldViewPercentCompleteStateReview() throws OseeCoreException {
+ return getPercentCompleteSMAStateReviews(getStateMgr().getCurrentStateName());
+ }
+
+ @Override
+ public int getWorldViewPercentCompleteStateTask() throws OseeCoreException {
+ return getPercentCompleteSMAStateTasks(getStateMgr().getCurrentStateName());
+ }
+
+ @Override
+ public int getWorldViewPercentCompleteTotal() throws OseeCoreException {
+ return getPercentCompleteSMATotal();
+ }
+
+ public Set<IRelationEnumeration> getAtsWorldRelations() {
+ return atsWorldRelations;
+ }
+
+ public String getWorldViewLastUpdated() throws OseeCoreException {
+ return XDate.getDateStr(getLastModified(), XDate.MMDDYYHHMM);
+ }
+
+ @Override
+ public String getWorldViewLastStatused() throws OseeCoreException {
+ return XDate.getDateStr(getLog().getLastStatusedDate(), XDate.MMDDYYHHMM);
+ }
+
+ @SuppressWarnings("unused")
+ public String getWorldViewSWEnhancement() throws OseeCoreException {
+ return "";
+ }
+
+ @SuppressWarnings("unused")
+ @Override
+ public String getWorldViewNumberOfReviewIssueDefects() throws OseeCoreException {
+ return "";
+ }
+
+ @SuppressWarnings("unused")
+ @Override
+ public String getWorldViewNumberOfReviewMajorDefects() throws OseeCoreException {
+ return "";
+ }
+
+ @SuppressWarnings("unused")
+ @Override
+ public String getWorldViewNumberOfReviewMinorDefects() throws OseeCoreException {
+ return "";
+ }
+
+ @Override
+ public String getWorldViewActionsIntiatingWorkflow() throws OseeCoreException {
+ return getParentActionArtifact().getWorldViewActionsIntiatingWorkflow();
+ }
+
+ @Override
+ public String getWorldViewDaysInCurrentState() throws OseeCoreException {
+ double timeInCurrState = getStateMgr().getTimeInState();
+ if (timeInCurrState == 0) {
+ return "0.0";
+ }
+ return AtsUtil.doubleToI18nString(timeInCurrState / XDate.MILLISECONDS_IN_A_DAY);
+ }
+
+ @Override
+ public String getWorldViewParentState() throws OseeCoreException {
+ if (getParentSMA() != null) {
+ return getParentSMA().getStateMgr().getCurrentStateName();
+ }
+ return "";
+ }
+
+ @Override
+ public String getGroupExplorerName() throws OseeCoreException {
+ return String.format("[%s] %s", getStateMgr().getCurrentStateName(), getName());
+ }
+
+ @Override
+ public String getWorldViewOriginatingWorkflowStr() throws OseeCoreException {
+ return getParentActionArtifact().getWorldViewOriginatingWorkflowStr();
+ }
+
+ @Override
+ public Collection<TeamWorkFlowArtifact> getWorldViewOriginatingWorkflows() throws OseeCoreException {
+ return getParentActionArtifact().getWorldViewOriginatingWorkflows();
+ }
+
+ @SuppressWarnings("unused")
+ @Override
+ public String getWorldViewNumberOfTasksRemaining() throws OseeCoreException {
+ return "";
+ }
+
+ public void closeEditors(boolean save) {
+ SMAEditor.close(java.util.Collections.singleton(this), save);
+ }
+
+ public ATSLog getLog() {
+ return atsLog;
+ }
+
+ public ATSNote getNotes() {
+ return atsNote;
+ }
+
+ public Result getUserInputNeeded() {
+ return Result.FalseResult;
+ }
+
+ public WorkPageDefinition getWorkPageDefinition() throws OseeCoreException {
+ if (getStateMgr().getCurrentStateName() == null) {
+ return null;
+ }
+ return getWorkFlowDefinition().getWorkPageDefinitionByName(getStateMgr().getCurrentStateName());
+ }
+
+ public WorkPageDefinition getWorkPageDefinitionByName(String name) throws OseeCoreException {
+ return getWorkFlowDefinition().getWorkPageDefinitionByName(name);
+ }
+
+ public WorkPageDefinition getWorkPageDefinitionById(String id) throws OseeCoreException {
+ return getWorkFlowDefinition().getWorkPageDefinitionById(id);
+ }
+
+ public boolean isHistoricalVersion() {
+ return isHistorical();
+ }
+
+ public List<WorkPageDefinition> getToWorkPages() throws OseeCoreException {
+ return getWorkFlowDefinition().getToPages(getWorkPageDefinition());
+ }
+
+ public List<WorkPageDefinition> getReturnPages() throws OseeCoreException {
+ return getWorkFlowDefinition().getReturnPages(getWorkPageDefinition());
+ }
+
+ public boolean isReturnPage(WorkPageDefinition workPageDefinition) throws OseeCoreException {
+ return getWorkFlowDefinition().isReturnPage(getWorkPageDefinition(), workPageDefinition);
+ }
+
+ public boolean isAccessControlWrite() throws OseeCoreException {
+ return AccessControlManager.hasPermission(this, PermissionEnum.WRITE);
+ }
+
+ public User getOriginator() throws OseeCoreException {
+ return atsLog.getOriginator();
+ }
+
+ public void setOriginator(User user) throws OseeCoreException {
+ atsLog.addLog(LogType.Originated, "", "Changed by " + UserManager.getUser().getName(), user);
+ }
+
+ /**
+ * @return true if this is a TeamWorkflow and it uses versions
+ * @throws OseeStateException
+ */
+ public boolean isTeamUsesVersions() {
+ if (!isTeamWorkflow()) {
+ return false;
+ }
+ try {
+ return ((TeamWorkFlowArtifact) this).getTeamDefinition().isTeamUsesVersions();
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ return false;
+ }
+ }
+
+ /**
+ * 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 {
+ TeamWorkFlowArtifact teamArt = null;
+ if (isTeamWorkflow()) {
+ teamArt = (TeamWorkFlowArtifact) this;
+ }
+ if (this instanceof ReviewSMArtifact) {
+ teamArt = ((ReviewSMArtifact) this).getParentTeamWorkflow();
+ }
+ if (teamArt == null) {
+ return false;
+ }
+ try {
+ return teamArt.getTeamDefinition().hasWorkRule(ruleId);
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
+ return false;
+ }
+ }
+
+ public boolean workPageHasWorkRule(String ruleId) throws OseeCoreException {
+ return getWorkPageDefinition().hasWorkRule(AtsWorkDefinitions.RuleWorkItemId.atsRequireTargetedVersion.name());
+ }
+
+ public Collection<WorkRuleDefinition> getWorkRulesStartsWith(String ruleId) throws OseeCoreException {
+ Set<WorkRuleDefinition> workRules = new HashSet<WorkRuleDefinition>();
+ if (!Strings.isValid(ruleId)) {
+ return workRules;
+ }
+ if (isTeamWorkflow()) {
+ // Get rules from team definition
+ workRules.addAll(((TeamWorkFlowArtifact) this).getTeamDefinition().getWorkRulesStartsWith(ruleId));
+ }
+ // Get work rules from workflow
+ WorkFlowDefinition workFlowDefinition = getWorkFlowDefinition();
+ if (workFlowDefinition != null) {
+ // Get rules from workflow definitions
+ workRules.addAll(getWorkFlowDefinition().getWorkRulesStartsWith(ruleId));
+ }
+ // Add work rules from page
+ for (WorkItemDefinition wid : getWorkPageDefinition().getWorkItems(false)) {
+ if (!wid.getId().equals("") && wid.getId().startsWith(ruleId)) {
+ workRules.add((WorkRuleDefinition) wid);
+ }
+ }
+ return workRules;
+ }
+
+ /**
+ * @return true if this is a TeamWorkflow and the version it's been targeted for has been released
+ */
+ public boolean isReleased() {
+ try {
+ VersionArtifact verArt = getTargetedForVersion();
+ if (verArt != null) {
+ return verArt.isReleased();
+ }
+ } catch (Exception ex) {
+ // Do Nothing
+ }
+ return false;
+ }
+
+ public boolean isVersionLocked() {
+ try {
+ VersionArtifact verArt = getTargetedForVersion();
+ if (verArt != null) {
+ return verArt.isVersionLocked();
+ }
+ } catch (Exception ex) {
+ // Do Nothing
+ }
+ return false;
+ }
+
+ public VersionArtifact getTargetedForVersion() throws OseeCoreException {
+ return getWorldViewTargetedVersion();
+ }
+
+ public boolean isCompleted() throws OseeCoreException {
+ return stateMgr.getCurrentStateName().equals(DefaultTeamState.Completed.name());
+ }
+
+ public boolean isCancelled() throws OseeCoreException {
+ return stateMgr.getCurrentStateName().equals(DefaultTeamState.Cancelled.name());
+ }
+
+ public boolean isCancelledOrCompleted() throws OseeCoreException {
+ return isCompleted() || isCancelled();
+ }
+
+ public boolean isCurrentState(String stateName) throws OseeCoreException {
+ return stateName.equals(stateMgr.getCurrentStateName());
+ }
+
+ public void setTransitionAssignees(Collection<User> assignees) throws OseeCoreException {
+ if (assignees.contains(UserManager.getUser(SystemUser.OseeSystem)) || assignees.contains(UserManager.getUser(SystemUser.Guest))) {
+ throw new OseeArgumentException("Can not assign workflow to OseeSystem or Guest");
+ }
+ if (assignees.size() > 1 && assignees.contains(UserManager.getUser(SystemUser.UnAssigned))) {
+ throw new OseeArgumentException("Can not assign to user and UnAssigned");
+ }
+ transitionAssignees = assignees;
+ }
+
+ public boolean isAssigneeMe() throws OseeCoreException {
+ return stateMgr.getAssignees().contains(UserManager.getUser());
+ }
+
+ public Collection<User> getTransitionAssignees() throws OseeCoreException {
+ if (transitionAssignees != null) {
+ if (transitionAssignees.size() > 0 && transitionAssignees.contains(UserManager.getUser(SystemUser.UnAssigned))) {
+ transitionAssignees.remove(UserManager.getUser(SystemUser.UnAssigned));
+ }
+ if (transitionAssignees.size() > 0) {
+ return transitionAssignees;
+ }
+ }
+ return stateMgr.getAssignees();
+ }
+
+ public String getTransitionAssigneesStr() throws OseeCoreException {
+ StringBuffer sb = new StringBuffer();
+ for (User u : getTransitionAssignees()) {
+ sb.append(u.getName() + SEPERATOR);
+ }
+ return sb.toString().replaceFirst(SEPERATOR + "$", "");
+ }
+
+ public Result transitionToCancelled(String reason, SkynetTransaction transaction, TransitionOption... transitionOption) {
+ Result result =
+ transition(DefaultTeamState.Cancelled.name(), Arrays.asList(new User[] {}), reason, transaction,
+ transitionOption);
+ return result;
+ }
+
+ public Result transitionToCompleted(String reason, SkynetTransaction transaction, TransitionOption... transitionOption) {
+ Result result =
+ transition(DefaultTeamState.Completed.name(), Arrays.asList(new User[] {}), reason, transaction,
+ transitionOption);
+ return result;
+ }
+
+ public Result isTransitionValid(final String toStateName, final Collection<User> toAssignees, TransitionOption... transitionOption) throws OseeCoreException {
+ boolean overrideTransitionCheck =
+ org.eclipse.osee.framework.jdk.core.util.Collections.getAggregate(transitionOption).contains(
+ TransitionOption.OverrideTransitionValidityCheck);
+ boolean overrideAssigneeCheck =
+ org.eclipse.osee.framework.jdk.core.util.Collections.getAggregate(transitionOption).contains(
+ TransitionOption.OverrideAssigneeCheck);
+ // Validate assignees
+ if (!overrideAssigneeCheck && (getStateMgr().getAssignees().contains(UserManager.getUser(SystemUser.OseeSystem)) || getStateMgr().getAssignees().contains(
+ UserManager.getUser(SystemUser.Guest)) || getStateMgr().getAssignees().contains(
+ UserManager.getUser(SystemUser.UnAssigned)))) {
+ return new Result("Can not transition with \"Guest\", \"UnAssigned\" or \"OseeSystem\" user as assignee.");
+ }
+
+ // Validate toState name
+ final WorkPageDefinition fromWorkPageDefinition = getWorkPageDefinition();
+ final WorkPageDefinition toWorkPageDefinition = getWorkPageDefinitionByName(toStateName);
+ if (toWorkPageDefinition == null) {
+ return new Result("Invalid toState \"" + toStateName + "\"");
+ }
+
+ // Validate transition from fromPage to toPage
+ if (!overrideTransitionCheck && !getWorkFlowDefinition().getToPages(fromWorkPageDefinition).contains(
+ toWorkPageDefinition)) {
+ String errStr =
+ "Not configured to transition to \"" + toStateName + "\" from \"" + fromWorkPageDefinition.getPageName() + "\"";
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, errStr);
+ return new Result(errStr);
+ }
+ // Don't transition with existing working branch
+ if (toStateName.equals(DefaultTeamState.Cancelled.name()) && isTeamWorkflow() && ((TeamWorkFlowArtifact) this).getBranchMgr().isWorkingBranchInWork()) {
+ return new Result("Working Branch exists. Please delete working branch before cancelling.");
+ }
+
+ // Don't transition with uncommitted branch if this is a commit state
+ if (AtsWorkDefinitions.isAllowCommitBranch(getWorkPageDefinition()) && isTeamWorkflow() && ((TeamWorkFlowArtifact) this).getBranchMgr().isWorkingBranchInWork()) {
+ return new Result("Working Branch exists. Please commit or delete working branch before transition.");
+ }
+
+ // Check extension points for valid transition
+ List<IAtsStateItem> atsStateItems = stateItems.getStateItems(fromWorkPageDefinition.getId());
+ for (IAtsStateItem item : atsStateItems) {
+ Result result = item.transitioning(this, fromWorkPageDefinition.getPageName(), toStateName, toAssignees);
+ if (result.isFalse()) {
+ return result;
+ }
+ }
+ for (IAtsStateItem item : atsStateItems) {
+ Result result = item.transitioning(this, fromWorkPageDefinition.getPageName(), toStateName, toAssignees);
+ if (result.isFalse()) {
+ return result;
+ }
+ }
+ return Result.TrueResult;
+ }
+
+ public Result transition(String toStateName, User toAssignee, SkynetTransaction transaction, TransitionOption... transitionOption) {
+ List<User> users = new ArrayList<User>();
+ if (toAssignee != null && !toStateName.equals(DefaultTeamState.Completed.name()) && !toStateName.equals(DefaultTeamState.Cancelled.name())) {
+ users.add(toAssignee);
+ }
+ return transition(toStateName, users, transaction, transitionOption);
+ }
+
+ public boolean isTargetedVersionable() throws OseeCoreException {
+ if (!isTeamWorkflow()) {
+ return false;
+ }
+ return ((TeamWorkFlowArtifact) this).getTeamDefinition().getTeamDefinitionHoldingVersions() != null && ((TeamWorkFlowArtifact) this).getTeamDefinition().getTeamDefinitionHoldingVersions().isTeamUsesVersions();
+ }
+
+ public Result transition(String toStateName, Collection<User> toAssignees, SkynetTransaction transaction, TransitionOption... transitionOption) {
+ return transition(toStateName, toAssignees, null, transaction, transitionOption);
+ }
+
+ private Result transition(final String toStateName, final Collection<User> toAssignees, final String completeOrCancelReason, SkynetTransaction transaction, TransitionOption... transitionOption) {
+ try {
+ final boolean persist =
+ org.eclipse.osee.framework.jdk.core.util.Collections.getAggregate(transitionOption).contains(
+ TransitionOption.Persist);
+
+ Result result = isTransitionValid(toStateName, toAssignees, transitionOption);
+ if (result.isFalse()) {
+ return result;
+ }
+
+ final WorkPageDefinition fromWorkPageDefinition = getWorkPageDefinition();
+ final WorkPageDefinition toWorkPageDefinition = getWorkPageDefinitionByName(toStateName);
+
+ transitionHelper(toAssignees, persist, fromWorkPageDefinition, toWorkPageDefinition, toStateName,
+ completeOrCancelReason, transaction);
+ if (persist) {
+ OseeNotificationManager.getInstance().sendNotifications();
+ }
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
+ return new Result("Transaction failed " + ex.getLocalizedMessage());
+ }
+ return Result.TrueResult;
+ }
+
+ private void transitionHelper(Collection<User> toAssignees, boolean persist, WorkPageDefinition fromPage, WorkPageDefinition toPage, String toStateName, String completeOrCancelReason, SkynetTransaction transaction) throws OseeCoreException {
+ // Log transition
+ if (toPage.isCancelledPage()) {
+ atsLog.addLog(LogType.StateCancelled, stateMgr.getCurrentStateName(), completeOrCancelReason);
+ } else {
+ atsLog.addLog(LogType.StateComplete, stateMgr.getCurrentStateName(),
+ (completeOrCancelReason != null ? completeOrCancelReason : ""));
+ }
+ atsLog.addLog(LogType.StateEntered, toStateName, "");
+
+ stateMgr.transitionHelper(toAssignees, persist, fromPage, toPage, toStateName, completeOrCancelReason);
+
+ if (isValidationRequired() && isTeamWorkflow()) {
+ ReviewManager.createValidateReview((TeamWorkFlowArtifact) this, false, transaction);
+ }
+
+ AtsNotifyUsers.getInstance().notify(this, AtsNotifyUsers.NotifyType.Subscribed,
+ AtsNotifyUsers.NotifyType.Completed, AtsNotifyUsers.NotifyType.Completed);
+
+ // Persist
+ if (persist) {
+ persist(transaction);
+ }
+
+ transitioned(fromPage, toPage, toAssignees, true, transaction);
+
+ // Notify extension points of transition
+ for (IAtsStateItem item : stateItems.getStateItems(fromPage.getId())) {
+ item.transitioned(this, fromPage.getPageName(), toStateName, toAssignees, transaction);
+ }
+ for (IAtsStateItem item : stateItems.getStateItems(toPage.getId())) {
+ item.transitioned(this, fromPage.getPageName(), toStateName, toAssignees, transaction);
+ }
+ }
+
+ public SMAEditor getEditor() {
+ return editor;
+ }
+
+ public void setEditor(SMAEditor editor) {
+ this.editor = editor;
+ }
+
+ public AtsStateItems getStateItems() {
+ return stateItems;
+ }
+
+ public boolean isInTransition() {
+ return inTransition;
+ }
+
+ public void setInTransition(boolean inTransition) {
+ this.inTransition = inTransition;
+ }
+
+ public DeadlineManager getDeadlineMgr() {
+ return deadlineMgr;
+ }
+
+ public StateManager getStateMgr() {
+ return stateMgr;
+ }
+
+ public boolean isTeamWorkflow() {
+ return this instanceof TeamWorkFlowArtifact;
+ }
+
+ public boolean isTask() {
+ return this instanceof TaskArtifact;
+ }
+
+ @Override
+ public String getWorldViewGoalOrder() throws OseeCoreException {
+ return GoalArtifact.getGoalOrder(this);
+ }
+
+ public AtsWorkPage getCurrentAtsWorkPage() throws OseeCoreException {
+ for (AtsWorkPage atsWorkPage : getAtsWorkPages()) {
+ if (isCurrentState(atsWorkPage.getName())) {
+ return atsWorkPage;
+ }
+ }
+ return null;
+ }
+
+ public List<AtsWorkPage> getAtsWorkPages() throws OseeCoreException {
+ List<AtsWorkPage> atsWorkPages = new ArrayList<AtsWorkPage>();
+ for (WorkPageDefinition workPageDefinition : getWorkFlowDefinition().getPagesOrdered()) {
+ try {
+ AtsWorkPage atsWorkPage =
+ new AtsWorkPage(getWorkFlowDefinition(), workPageDefinition, null,
+ ATSXWidgetOptionResolver.getInstance());
+ atsWorkPages.add(atsWorkPage);
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ }
+ }
+ return atsWorkPages;
+ }
+
+ /**
+ * Assigned or computed Id that will show at the top of the editor
+ */
+ @SuppressWarnings("unused")
+ public String getPcrId() throws OseeCoreException {
+ return "";
+ }
+
+ public Map<String, String> getSMADetails() throws OseeCoreException {
+ Map<String, String> details = Artifacts.getDetailsKeyValues(this);
+ details.put("Workflow Definition", getWorkFlowDefinition().getName());
+ if (getParentActionArtifact() != null) {
+ details.put("Action Id", getParentActionArtifact().getHumanReadableId());
+ }
+ if (!(this instanceof TeamWorkFlowArtifact) && getParentTeamWorkflow() != null) {
+ details.put("Parent Team Workflow Id", getParentTeamWorkflow().getHumanReadableId());
+ }
+ if (this.isOfType(AtsArtifactTypes.TeamWorkflow)) {
+ String message = null;
+ CmAccessControl accessControl = getAccessControl();
+ if (accessControl != null) {
+ Collection<? extends AccessContextId> ids = accessControl.getContextId(UserManager.getUser(), this);
+ message = ids.toString();
+ } else {
+ message = "AtsCmAccessControlService not started";
+ }
+ details.put("Access Context Id", message);
+ }
+ return details;
+ }
+
+ protected void addPriviledgedUsersUpTeamDefinitionTree(TeamDefinitionArtifact tda, Set<User> users) throws OseeCoreException {
+ users.addAll(tda.getLeads());
+ users.addAll(tda.getPrivilegedMembers());
+
+ // Walk up tree to get other editors
+ if (tda.getParent() != null && tda.getParent() instanceof TeamDefinitionArtifact) {
+ addPriviledgedUsersUpTeamDefinitionTree((TeamDefinitionArtifact) tda.getParent(), users);
+ }
+ }
+
+ @Override
+ public CmAccessControl getAccessControl() {
+ return AtsPlugin.getInstance().getCmService();
+ }
+
+}
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 4121c38afc4..74609cb372a 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
@@ -1,408 +1,406 @@
-/*******************************************************************************
- * 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.artifact;
-
-import java.util.Collection;
-import java.util.Date;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.logging.Level;
-import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact.DefaultTeamState;
-import org.eclipse.osee.ats.internal.AtsPlugin;
-import org.eclipse.osee.ats.util.AtsRelationTypes;
-import org.eclipse.osee.ats.util.widgets.dialog.TaskResOptionDefinition;
-import org.eclipse.osee.ats.util.widgets.dialog.TaskResolutionOptionRule;
-import org.eclipse.osee.framework.core.exception.OseeCoreException;
-import org.eclipse.osee.framework.core.exception.OseeDataStoreException;
-import org.eclipse.osee.framework.core.exception.OseeStateException;
-import org.eclipse.osee.framework.core.model.Branch;
-import org.eclipse.osee.framework.core.model.type.ArtifactType;
-import org.eclipse.osee.framework.jdk.core.util.Collections;
-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.UserManager;
-import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
-import org.eclipse.osee.framework.skynet.core.artifact.ArtifactFactory;
-import org.eclipse.osee.framework.skynet.core.artifact.IATSStateMachineArtifact;
-import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction;
-import org.eclipse.osee.framework.ui.plugin.util.Result;
-import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkPageDefinition;
-
-/**
- * @author Donald G. Dunne
- */
-public class TaskArtifact extends StateMachineArtifact implements IATSStateMachineArtifact {
-
- public static enum TaskStates {
- InWork,
- Completed,
- Cancelled
- };
-
- public TaskArtifact(ArtifactFactory parentFactory, String guid, String humanReadableId, Branch branch, ArtifactType artifactType) throws OseeDataStoreException {
- super(parentFactory, guid, humanReadableId, branch, artifactType);
- }
-
- public boolean isRelatedToParentWorkflowCurrentState() throws OseeCoreException {
- return getWorldViewRelatedToState().equals(getParentSMA().getStateMgr().getCurrentStateName());
- }
-
- @Override
- public void onInitializationComplete() throws OseeCoreException {
- super.onInitializationComplete();
- }
-
- /**
- * Allow parent SMA's assignees and all privileged users up Team tree
- */
- @Override
- public Set<User> getPrivilegedUsers() throws OseeCoreException {
- Set<User> users = new HashSet<User>();
- StateMachineArtifact parentSma = getParentSMA();
- if (parentSma.isTeamWorkflow()) {
- users.addAll(((TeamWorkFlowArtifact) parentSma).getPrivilegedUsers());
- }
- users.addAll(parentSma.getStateMgr().getAssignees());
- return users;
- }
-
- /**
- * Can only un-cancel task when it's related to an active state
- */
- @Override
- public boolean isUnCancellable() {
- try {
- StateMachineArtifact parentSMA = getParentSMA();
- boolean unCancellable =
- parentSMA.getStateMgr().getCurrentStateName().equals(
+/*******************************************************************************
+ * 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.artifact;
+
+import java.util.Collection;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.logging.Level;
+import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact.DefaultTeamState;
+import org.eclipse.osee.ats.internal.AtsPlugin;
+import org.eclipse.osee.ats.util.AtsRelationTypes;
+import org.eclipse.osee.ats.util.widgets.dialog.TaskResOptionDefinition;
+import org.eclipse.osee.ats.util.widgets.dialog.TaskResolutionOptionRule;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.core.exception.OseeDataStoreException;
+import org.eclipse.osee.framework.core.exception.OseeStateException;
+import org.eclipse.osee.framework.core.model.Branch;
+import org.eclipse.osee.framework.core.model.type.ArtifactType;
+import org.eclipse.osee.framework.jdk.core.util.Collections;
+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.UserManager;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactFactory;
+import org.eclipse.osee.framework.skynet.core.artifact.IATSStateMachineArtifact;
+import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction;
+import org.eclipse.osee.framework.ui.plugin.util.Result;
+import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkPageDefinition;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class TaskArtifact extends StateMachineArtifact implements IATSStateMachineArtifact {
+
+ public static enum TaskStates {
+ InWork,
+ Completed,
+ Cancelled
+ };
+
+ public TaskArtifact(ArtifactFactory parentFactory, String guid, String humanReadableId, Branch branch, ArtifactType artifactType) throws OseeDataStoreException {
+ super(parentFactory, guid, humanReadableId, branch, artifactType);
+ }
+
+ public boolean isRelatedToParentWorkflowCurrentState() throws OseeCoreException {
+ return getWorldViewRelatedToState().equals(getParentSMA().getStateMgr().getCurrentStateName());
+ }
+
+ @Override
+ public void onInitializationComplete() throws OseeCoreException {
+ super.onInitializationComplete();
+ }
+
+ /**
+ * Allow parent SMA's assignees and all privileged users up Team tree
+ */
+ @Override
+ public Set<User> getPrivilegedUsers() throws OseeCoreException {
+ Set<User> users = new HashSet<User>();
+ StateMachineArtifact parentSma = getParentSMA();
+ if (parentSma.isTeamWorkflow()) {
+ users.addAll(((TeamWorkFlowArtifact) parentSma).getPrivilegedUsers());
+ }
+ users.addAll(parentSma.getStateMgr().getAssignees());
+ return users;
+ }
+
+ /**
+ * Can only un-cancel task when it's related to an active state
+ */
+ @Override
+ public boolean isUnCancellable() {
+ try {
+ StateMachineArtifact parentSMA = getParentSMA();
+ boolean unCancellable =
+ parentSMA.getStateMgr().getCurrentStateName().equals(
getSoleAttributeValue(AtsAttributeTypes.RelatedToState, ""));
- if (!unCancellable) {
- return false;
- }
- return super.isUnCancellable();
- } catch (Exception ex) {
- // Do Nothing
- }
- return false;
- }
-
- @Override
- public boolean isTaskable() {
- return false;
- }
-
- public boolean isUsingTaskResolutionOptions() throws OseeCoreException {
- return getTaskResolutionOptionDefintions().size() > 0;
- }
-
- public List<TaskResOptionDefinition> getTaskResolutionOptionDefintions() throws OseeCoreException {
- TeamWorkFlowArtifact team = getParentTeamWorkflow();
- if (team == null) {
- return TaskResolutionOptionRule.EMPTY_TASK_RESOLUTION_OPTIONS;
- }
- return TaskResolutionOptionRule.getTaskResolutionOptions(team.getWorkPageDefinition());
- }
-
- public TaskResOptionDefinition getTaskResolutionOptionDefinition(String optionName) throws OseeCoreException {
- for (TaskResOptionDefinition def : getTaskResolutionOptionDefintions()) {
- if (def.getName().equals(optionName)) {
- return def;
- }
- }
- return null;
- }
-
- public List<TaskResOptionDefinition> getTaskResolutionOptionDefintions(String stateName) throws OseeCoreException {
- TeamWorkFlowArtifact team = getParentTeamWorkflow();
- if (team == null) {
- return TaskResolutionOptionRule.EMPTY_TASK_RESOLUTION_OPTIONS;
- }
- return TaskResolutionOptionRule.getTaskResolutionOptions(team.getWorkPageDefinitionByName(stateName));
- }
-
- public TaskResOptionDefinition getTaskResolutionOptionDefinition(String stateName, String optionName) throws OseeCoreException {
- for (TaskResOptionDefinition def : getTaskResolutionOptionDefintions(stateName)) {
- if (def.getName().equals(optionName)) {
- return def;
- }
- }
- return null;
- }
-
- @Override
- public String getDescription() {
- try {
+ if (!unCancellable) {
+ return false;
+ }
+ return super.isUnCancellable();
+ } catch (Exception ex) {
+ // Do Nothing
+ }
+ return false;
+ }
+
+ @Override
+ public boolean isTaskable() {
+ return false;
+ }
+
+ public boolean isUsingTaskResolutionOptions() throws OseeCoreException {
+ return getTaskResolutionOptionDefintions().size() > 0;
+ }
+
+ public List<TaskResOptionDefinition> getTaskResolutionOptionDefintions() throws OseeCoreException {
+ TeamWorkFlowArtifact team = getParentTeamWorkflow();
+ if (team == null) {
+ return TaskResolutionOptionRule.EMPTY_TASK_RESOLUTION_OPTIONS;
+ }
+ return TaskResolutionOptionRule.getTaskResolutionOptions(team.getWorkPageDefinition());
+ }
+
+ public TaskResOptionDefinition getTaskResolutionOptionDefinition(String optionName) throws OseeCoreException {
+ for (TaskResOptionDefinition def : getTaskResolutionOptionDefintions()) {
+ if (def.getName().equals(optionName)) {
+ return def;
+ }
+ }
+ return null;
+ }
+
+ public List<TaskResOptionDefinition> getTaskResolutionOptionDefintions(String stateName) throws OseeCoreException {
+ TeamWorkFlowArtifact team = getParentTeamWorkflow();
+ if (team == null) {
+ return TaskResolutionOptionRule.EMPTY_TASK_RESOLUTION_OPTIONS;
+ }
+ return TaskResolutionOptionRule.getTaskResolutionOptions(team.getWorkPageDefinitionByName(stateName));
+ }
+
+ public TaskResOptionDefinition getTaskResolutionOptionDefinition(String stateName, String optionName) throws OseeCoreException {
+ for (TaskResOptionDefinition def : getTaskResolutionOptionDefintions(stateName)) {
+ if (def.getName().equals(optionName)) {
+ return def;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public String getDescription() {
+ try {
return getSoleAttributeValue(AtsAttributeTypes.Description, "");
- } catch (Exception ex) {
- return "Error: " + ex.getLocalizedMessage();
- }
- }
-
- @Override
- public String getWorldViewRelatedToState() throws OseeCoreException {
+ } catch (Exception ex) {
+ return "Error: " + ex.getLocalizedMessage();
+ }
+ }
+
+ @Override
+ public String getWorldViewRelatedToState() throws OseeCoreException {
return getSoleAttributeValue(AtsAttributeTypes.RelatedToState, "");
- }
-
- @Override
- public void atsDelete(Set<Artifact> deleteArts, Map<Artifact, Object> allRelated) throws OseeCoreException {
- super.atsDelete(deleteArts, allRelated);
- }
-
- @Override
- public String getWorldViewTeam() {
- return "";
- }
-
- @Override
- public String getWorldViewWorkPackage() throws OseeCoreException {
- String value = super.getWorldViewWorkPackage();
- if (Strings.isValid(value)) {
- return value;
- }
- return getParentSMA().getWorldViewWorkPackage();
- }
-
- @Override
- public Date getWorldViewEstimatedCompletionDate() throws OseeCoreException {
- Date value = super.getWorldViewEstimatedCompletionDate();
- if (value != null) {
- return value;
- }
- return getParentSMA().getWorldViewEstimatedCompletionDate();
- }
-
- @Override
- public Date getWorldViewEstimatedReleaseDate() throws OseeCoreException {
- Date value = super.getWorldViewEstimatedReleaseDate();
- if (value != null) {
- return value;
- }
- return getParentSMA().getWorldViewEstimatedReleaseDate();
- }
-
- public Boolean isInWork() throws OseeCoreException {
- return getStateMgr().getCurrentStateName().equals(TaskStates.InWork.name());
- }
-
- public void transitionToCompleted(double additionalHours, SkynetTransaction transaction, TransitionOption... transitionOption) throws OseeCoreException {
- if (getStateMgr().getCurrentStateName().equals(DefaultTeamState.Completed.name())) {
- return;
- }
- // Assign current user if unassigned
- try {
- if (getStateMgr().isUnAssigned()) {
- getStateMgr().setAssignee(UserManager.getUser());
- }
- getStateMgr().updateMetrics(additionalHours, 100, true);
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
- Result result = transition(DefaultTeamState.Completed.name(), (User) null, transaction, transitionOption);
- if (result.isFalse()) {
- result.popup();
- }
- }
-
- public void transitionToInWork(User toUser, int percentComplete, double additionalHours, SkynetTransaction transaction, TransitionOption... transitionOption) throws OseeCoreException {
- if (getStateMgr().getCurrentStateName().equals(TaskStates.InWork.name())) {
- return;
- }
- Result result = transition(TaskStates.InWork.name(), toUser, transaction, transitionOption);
- if (getStateMgr().getPercentComplete() != percentComplete || additionalHours > 0) {
- getStateMgr().updateMetrics(additionalHours, percentComplete, true);
- }
- if (Collections.getAggregate(transitionOption).contains(TransitionOption.Persist)) {
- saveSMA(transaction);
- }
- if (result.isFalse()) {
- result.popup();
- }
- }
-
- /**
- * Tasks must transition in/out of completed when percent changes between 100 and <100. This method will handle these
- * cases.
- *
- * @param percentComplete
- * @param transaction
- * @throws OseeCoreException
- */
- public void statusPercentChanged(double additionalHours, int percentComplete, SkynetTransaction transaction) throws OseeCoreException {
- if (percentComplete == 100 && !isCompleted()) {
- transitionToCompleted(additionalHours, transaction, TransitionOption.None);
- } else if (percentComplete != 100 && isCompleted()) {
- transitionToInWork(UserManager.getUser(), percentComplete, additionalHours, transaction,
- TransitionOption.Persist);
- }
- // Case where already completed and statusing, just add additional hours to InWork state
- else if (percentComplete == 100 && isCompleted()) {
- if (additionalHours > 0) {
- getStateMgr().updateMetrics(TaskStates.InWork.name(), additionalHours, percentComplete, true);
- }
- } else {
- getStateMgr().updateMetrics(additionalHours, percentComplete, true);
- }
- }
-
- public void parentWorkFlowTransitioned(WorkPageDefinition fromWorkPageDefinition, WorkPageDefinition toWorkPageDefinition, Collection<User> toAssignees, boolean persist, SkynetTransaction transaction, TransitionOption... transitionOption) throws OseeCoreException {
- if (toWorkPageDefinition.getPageName().equals(DefaultTeamState.Cancelled.name()) && isInWork()) {
- transitionToCancelled("Parent Cancelled", transaction, transitionOption);
- } else if (fromWorkPageDefinition.getPageName().equals(DefaultTeamState.Cancelled.name()) && isCancelled()) {
- transitionToInWork(UserManager.getUser(), 99, 0, transaction, transitionOption);
- }
- }
-
- @Override
- public String getWorldViewDescription() throws OseeCoreException {
+ }
+
+ @Override
+ public void atsDelete(Set<Artifact> deleteArts, Map<Artifact, Object> allRelated) throws OseeCoreException {
+ super.atsDelete(deleteArts, allRelated);
+ }
+
+ @Override
+ public String getWorldViewTeam() {
+ return "";
+ }
+
+ @Override
+ public String getWorldViewWorkPackage() throws OseeCoreException {
+ String value = super.getWorldViewWorkPackage();
+ if (Strings.isValid(value)) {
+ return value;
+ }
+ return getParentSMA().getWorldViewWorkPackage();
+ }
+
+ @Override
+ public Date getWorldViewEstimatedCompletionDate() throws OseeCoreException {
+ Date value = super.getWorldViewEstimatedCompletionDate();
+ if (value != null) {
+ return value;
+ }
+ return getParentSMA().getWorldViewEstimatedCompletionDate();
+ }
+
+ @Override
+ public Date getWorldViewEstimatedReleaseDate() throws OseeCoreException {
+ Date value = super.getWorldViewEstimatedReleaseDate();
+ if (value != null) {
+ return value;
+ }
+ return getParentSMA().getWorldViewEstimatedReleaseDate();
+ }
+
+ public Boolean isInWork() throws OseeCoreException {
+ return getStateMgr().getCurrentStateName().equals(TaskStates.InWork.name());
+ }
+
+ public void transitionToCompleted(double additionalHours, SkynetTransaction transaction, TransitionOption... transitionOption) throws OseeCoreException {
+ if (getStateMgr().getCurrentStateName().equals(DefaultTeamState.Completed.name())) {
+ return;
+ }
+ // Assign current user if unassigned
+ try {
+ if (getStateMgr().isUnAssigned()) {
+ getStateMgr().setAssignee(UserManager.getUser());
+ }
+ getStateMgr().updateMetrics(additionalHours, 100, true);
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ }
+ Result result = transition(DefaultTeamState.Completed.name(), (User) null, transaction, transitionOption);
+ if (result.isFalse()) {
+ result.popup();
+ }
+ }
+
+ public void transitionToInWork(User toUser, int percentComplete, double additionalHours, SkynetTransaction transaction, TransitionOption... transitionOption) throws OseeCoreException {
+ if (getStateMgr().getCurrentStateName().equals(TaskStates.InWork.name())) {
+ return;
+ }
+ Result result = transition(TaskStates.InWork.name(), toUser, transaction, transitionOption);
+ if (getStateMgr().getPercentComplete() != percentComplete || additionalHours > 0) {
+ getStateMgr().updateMetrics(additionalHours, percentComplete, true);
+ }
+ if (Collections.getAggregate(transitionOption).contains(TransitionOption.Persist)) {
+ saveSMA(transaction);
+ }
+ if (result.isFalse()) {
+ result.popup();
+ }
+ }
+
+ /**
+ * Tasks must transition in/out of completed when percent changes between 100 and <100. This method will handle these
+ * cases.
+ *
+ * @throws OseeCoreException
+ */
+ public void statusPercentChanged(double additionalHours, int percentComplete, SkynetTransaction transaction) throws OseeCoreException {
+ if (percentComplete == 100 && !isCompleted()) {
+ transitionToCompleted(additionalHours, transaction, TransitionOption.None);
+ } else if (percentComplete != 100 && isCompleted()) {
+ transitionToInWork(UserManager.getUser(), percentComplete, additionalHours, transaction,
+ TransitionOption.Persist);
+ }
+ // Case where already completed and statusing, just add additional hours to InWork state
+ else if (percentComplete == 100 && isCompleted()) {
+ if (additionalHours > 0) {
+ getStateMgr().updateMetrics(TaskStates.InWork.name(), additionalHours, percentComplete, true);
+ }
+ } else {
+ getStateMgr().updateMetrics(additionalHours, percentComplete, true);
+ }
+ }
+
+ public void parentWorkFlowTransitioned(WorkPageDefinition fromWorkPageDefinition, WorkPageDefinition toWorkPageDefinition, Collection<User> toAssignees, boolean persist, SkynetTransaction transaction, TransitionOption... transitionOption) throws OseeCoreException {
+ if (toWorkPageDefinition.getPageName().equals(DefaultTeamState.Cancelled.name()) && isInWork()) {
+ transitionToCancelled("Parent Cancelled", transaction, transitionOption);
+ } else if (fromWorkPageDefinition.getPageName().equals(DefaultTeamState.Cancelled.name()) && isCancelled()) {
+ transitionToInWork(UserManager.getUser(), 99, 0, transaction, transitionOption);
+ }
+ }
+
+ @Override
+ public String getWorldViewDescription() throws OseeCoreException {
return getSoleAttributeValue(AtsAttributeTypes.Description, "");
- }
-
- @Override
- public String getWorldViewNumberOfTasks() {
- return "";
- }
-
- @Override
- public Date getWorldViewReleaseDate() throws OseeCoreException {
- if (getParentSMA().isTeamWorkflow()) {
- return ((TeamWorkFlowArtifact) getParentSMA()).getWorldViewReleaseDate();
- }
+ }
+
+ @Override
+ public String getWorldViewNumberOfTasks() {
+ return "";
+ }
+
+ @Override
+ public Date getWorldViewReleaseDate() throws OseeCoreException {
+ if (getParentSMA().isTeamWorkflow()) {
+ return ((TeamWorkFlowArtifact) getParentSMA()).getWorldViewReleaseDate();
+ }
return getSoleAttributeValue(AtsAttributeTypes.ReleaseDate);
- }
-
- @Override
- public VersionArtifact getWorldViewTargetedVersion() throws OseeCoreException {
- return getParentSMA().getWorldViewTargetedVersion();
- }
-
- @Override
- public double getManHrsPerDayPreference() throws OseeCoreException {
- return getParentSMA().getManHrsPerDayPreference();
- }
-
- @Override
- public double getWorldViewRemainHours() throws OseeCoreException {
- if (isCompleted() || isCancelled()) {
- return 0;
- }
- double est = getWorldViewEstimatedHours();
- if (getWorldViewStatePercentComplete() == 0) {
- return getWorldViewEstimatedHours();
- }
- double percent = getStateMgr().getPercentComplete(TaskStates.InWork.name());
- if (percent == 0) {
- return getWorldViewEstimatedHours();
- }
- double remain = getWorldViewEstimatedHours() - est * percent / 100.0;
- return remain;
- }
-
- @Override
- public StateMachineArtifact getParentSMA() throws OseeCoreException {
- if (parentSma != null) {
- return parentSma;
- }
- Collection<StateMachineArtifact> smas =
- getRelatedArtifacts(AtsRelationTypes.SmaToTask_Sma, StateMachineArtifact.class);
- if (smas.isEmpty()) {
- throw new OseeStateException("Task has no parent - " + getHumanReadableId());
- }
- parentSma = smas.iterator().next();
- return parentSma;
- }
-
- @Override
- public ActionArtifact getParentActionArtifact() throws OseeCoreException {
- if (parentAction != null) {
- return parentAction;
- }
- parentAction = getParentTeamWorkflow().getParentActionArtifact();
- return parentAction;
- }
-
- @Override
- public TeamWorkFlowArtifact getParentTeamWorkflow() throws OseeCoreException {
- if (parentTeamArt != null) {
- return parentTeamArt;
- }
- StateMachineArtifact sma = getParentSMA();
- if (sma.isTeamWorkflow()) {
- parentTeamArt = (TeamWorkFlowArtifact) sma;
- }
- return parentTeamArt;
- }
-
- @Override
- public Collection<User> getImplementers() throws OseeCoreException {
- return getImplementersByState(TaskStates.InWork.name());
- }
-
- @Override
- public Date getWorldViewDeadlineDate() {
- return null;
- }
-
- @Override
- public String getWorldViewDeadlineDateStr() {
- return "";
- }
-
- @Override
- public double getWorldViewWeeklyBenefit() {
- return 0;
- }
-
- @Override
- public Result isWorldViewAnnualCostAvoidanceValid() {
- return Result.TrueResult;
- }
-
- @Override
- public String getWorldViewLegacyPCR() throws OseeCoreException {
- StateMachineArtifact sma = getParentSMA();
- if (sma != null) {
- return sma.getWorldViewLegacyPCR();
- }
- return "";
- }
-
- @Override
- public String getHyperTargetVersion() {
- return null;
- }
-
- @Override
- public String getWorldViewSWEnhancement() throws OseeCoreException {
- StateMachineArtifact sma = getParentSMA();
- if (sma != null) {
- return sma.getWorldViewSWEnhancement();
- }
- return "";
- }
-
- @Override
- public String getWorldViewParentID() throws OseeCoreException {
- return getParentTeamWorkflow().getHumanReadableId();
- }
-
- @Override
- public boolean hasAtsWorldChildren() {
- return false;
- }
-
- @Override
- public String getPcrId() throws OseeCoreException {
- return getParentTeamWorkflow().getPcrId();
- }
-}
+ }
+
+ @Override
+ public VersionArtifact getWorldViewTargetedVersion() throws OseeCoreException {
+ return getParentSMA().getWorldViewTargetedVersion();
+ }
+
+ @Override
+ public double getManHrsPerDayPreference() throws OseeCoreException {
+ return getParentSMA().getManHrsPerDayPreference();
+ }
+
+ @Override
+ public double getWorldViewRemainHours() throws OseeCoreException {
+ if (isCompleted() || isCancelled()) {
+ return 0;
+ }
+ double est = getWorldViewEstimatedHours();
+ if (getWorldViewStatePercentComplete() == 0) {
+ return getWorldViewEstimatedHours();
+ }
+ double percent = getStateMgr().getPercentComplete(TaskStates.InWork.name());
+ if (percent == 0) {
+ return getWorldViewEstimatedHours();
+ }
+ double remain = getWorldViewEstimatedHours() - est * percent / 100.0;
+ return remain;
+ }
+
+ @Override
+ public StateMachineArtifact getParentSMA() throws OseeCoreException {
+ if (parentSma != null) {
+ return parentSma;
+ }
+ Collection<StateMachineArtifact> smas =
+ getRelatedArtifacts(AtsRelationTypes.SmaToTask_Sma, StateMachineArtifact.class);
+ if (smas.isEmpty()) {
+ throw new OseeStateException("Task has no parent - " + getHumanReadableId());
+ }
+ parentSma = smas.iterator().next();
+ return parentSma;
+ }
+
+ @Override
+ public ActionArtifact getParentActionArtifact() throws OseeCoreException {
+ if (parentAction != null) {
+ return parentAction;
+ }
+ parentAction = getParentTeamWorkflow().getParentActionArtifact();
+ return parentAction;
+ }
+
+ @Override
+ public TeamWorkFlowArtifact getParentTeamWorkflow() throws OseeCoreException {
+ if (parentTeamArt != null) {
+ return parentTeamArt;
+ }
+ StateMachineArtifact sma = getParentSMA();
+ if (sma.isTeamWorkflow()) {
+ parentTeamArt = (TeamWorkFlowArtifact) sma;
+ }
+ return parentTeamArt;
+ }
+
+ @Override
+ public Collection<User> getImplementers() throws OseeCoreException {
+ return getImplementersByState(TaskStates.InWork.name());
+ }
+
+ @Override
+ public Date getWorldViewDeadlineDate() {
+ return null;
+ }
+
+ @Override
+ public String getWorldViewDeadlineDateStr() {
+ return "";
+ }
+
+ @Override
+ public double getWorldViewWeeklyBenefit() {
+ return 0;
+ }
+
+ @Override
+ public Result isWorldViewAnnualCostAvoidanceValid() {
+ return Result.TrueResult;
+ }
+
+ @Override
+ public String getWorldViewLegacyPCR() throws OseeCoreException {
+ StateMachineArtifact sma = getParentSMA();
+ if (sma != null) {
+ return sma.getWorldViewLegacyPCR();
+ }
+ return "";
+ }
+
+ @Override
+ public String getHyperTargetVersion() {
+ return null;
+ }
+
+ @Override
+ public String getWorldViewSWEnhancement() throws OseeCoreException {
+ StateMachineArtifact sma = getParentSMA();
+ if (sma != null) {
+ return sma.getWorldViewSWEnhancement();
+ }
+ return "";
+ }
+
+ @Override
+ public String getWorldViewParentID() throws OseeCoreException {
+ return getParentTeamWorkflow().getHumanReadableId();
+ }
+
+ @Override
+ public boolean hasAtsWorldChildren() {
+ return false;
+ }
+
+ @Override
+ public String getPcrId() throws OseeCoreException {
+ return getParentTeamWorkflow().getPcrId();
+ }
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/TaskableStateMachineArtifact.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/TaskableStateMachineArtifact.java
index 73310d05b99..533f4179e2a 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/TaskableStateMachineArtifact.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/TaskableStateMachineArtifact.java
@@ -1,343 +1,343 @@
-/*******************************************************************************
- * 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.artifact;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Date;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.logging.Level;
-import org.eclipse.osee.ats.artifact.ATSLog.LogType;
-import org.eclipse.osee.ats.artifact.TaskArtifact.TaskStates;
-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.AtsRelationTypes;
-import org.eclipse.osee.ats.util.AtsUtil;
-import org.eclipse.osee.framework.core.exception.OseeCoreException;
-import org.eclipse.osee.framework.core.exception.OseeDataStoreException;
-import org.eclipse.osee.framework.core.model.Branch;
-import org.eclipse.osee.framework.core.model.type.ArtifactType;
-import org.eclipse.osee.framework.logging.OseeLevel;
-import org.eclipse.osee.framework.logging.OseeLog;
-import org.eclipse.osee.framework.skynet.core.User;
-import org.eclipse.osee.framework.skynet.core.UserManager;
-import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
-import org.eclipse.osee.framework.skynet.core.artifact.ArtifactFactory;
-import org.eclipse.osee.framework.skynet.core.artifact.ArtifactTypeManager;
-import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction;
-import org.eclipse.osee.framework.ui.plugin.util.Result;
-import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkPageDefinition;
-
-/**
- * @author Donald G. Dunne
- */
-public abstract class TaskableStateMachineArtifact extends StateMachineArtifact {
-
- public TaskableStateMachineArtifact(ArtifactFactory parentFactory, String guid, String humanReadableId, Branch branch, ArtifactType artifactType) throws OseeDataStoreException {
- super(parentFactory, guid, humanReadableId, branch, artifactType);
- registerAtsWorldRelation(AtsRelationTypes.SmaToTask_Task);
- }
-
- @SuppressWarnings("unused")
- @Override
- public Set<User> getPrivilegedUsers() throws OseeCoreException {
- return null;
- }
-
- @Override
- public void getSmaArtifactsOneLevel(StateMachineArtifact smaArtifact, Set<Artifact> artifacts) throws OseeCoreException {
- super.getSmaArtifactsOneLevel(smaArtifact, artifacts);
- artifacts.addAll(getTaskArtifacts());
- }
-
- @SuppressWarnings("unused")
- @Override
- public Date getWorldViewReleaseDate() throws OseeCoreException {
- return null;
- }
-
- @Override
- public String getHyperTargetVersion() {
- return null;
- }
-
- @SuppressWarnings("unused")
- @Override
- public String getWorldViewParentID() throws OseeCoreException {
- return null;
- }
-
- @Override
- public VersionArtifact getWorldViewTargetedVersion() throws OseeCoreException {
- TeamWorkFlowArtifact teamArt = getParentTeamWorkflow();
- if (teamArt == null) {
- return null;
- }
- return teamArt.getWorldViewTargetedVersion();
- }
-
- @Override
- public boolean showTaskTab() throws OseeCoreException {
- return isTaskable() || isCompleted() || isCancelled();
- }
-
- @Override
- public void atsDelete(Set<Artifact> deleteArts, Map<Artifact, Object> allRelated) throws OseeCoreException {
- super.atsDelete(deleteArts, allRelated);
- for (TaskArtifact taskArt : getTaskArtifacts()) {
- taskArt.atsDelete(deleteArts, allRelated);
- }
- }
-
- @Override
- public void transitioned(WorkPageDefinition fromPage, WorkPageDefinition toPage, Collection<User> toAssignees, boolean persist, SkynetTransaction transaction) throws OseeCoreException {
- super.transitioned(fromPage, toPage, toAssignees, persist, transaction);
- for (TaskArtifact taskArt : getTaskArtifacts()) {
- taskArt.parentWorkFlowTransitioned(fromPage, toPage, toAssignees, persist, transaction);
- }
- }
-
- @Override
- public String getWorldViewNumberOfTasksRemaining() throws OseeCoreException {
- if (getTaskArtifacts().isEmpty()) {
- return "";
- }
- return String.valueOf(getNumTasksInWork());
- }
-
- public String getStatus(String stateName) throws OseeCoreException {
- int completed = 0, cancelled = 0, inWork = 0;
- for (TaskArtifact taskArt : getTaskArtifacts(stateName)) {
- if (taskArt.isCompleted()) {
- completed++;
- } else if (taskArt.isCancelled()) {
- cancelled++;
- } else {
- inWork++;
- }
- }
- return String.format("Total: %d - InWork: %d - Completed: %d - Cancelled: %d",
- getTaskArtifacts(stateName).size(), inWork, completed, cancelled);
- }
-
- public Collection<TaskArtifact> getTaskArtifacts() throws OseeCoreException {
- return AtsCacheManager.getTaskArtifacts(this);
- }
-
- public Collection<TaskArtifact> getTaskArtifactsSorted() throws OseeCoreException {
- return AtsCacheManager.getTaskArtifacts(this);
- }
-
- public Collection<TaskArtifact> getTaskArtifactsFromCurrentState() throws OseeCoreException {
- return getTaskArtifacts(getStateMgr().getCurrentStateName());
- }
-
- public Collection<TaskArtifact> getTaskArtifacts(String stateName) throws OseeCoreException {
- List<TaskArtifact> arts = new ArrayList<TaskArtifact>();
- for (TaskArtifact taskArt : getTaskArtifacts()) {
+/*******************************************************************************
+ * 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.artifact;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.logging.Level;
+import org.eclipse.osee.ats.artifact.ATSLog.LogType;
+import org.eclipse.osee.ats.artifact.TaskArtifact.TaskStates;
+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.AtsRelationTypes;
+import org.eclipse.osee.ats.util.AtsUtil;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.core.exception.OseeDataStoreException;
+import org.eclipse.osee.framework.core.model.Branch;
+import org.eclipse.osee.framework.core.model.type.ArtifactType;
+import org.eclipse.osee.framework.logging.OseeLevel;
+import org.eclipse.osee.framework.logging.OseeLog;
+import org.eclipse.osee.framework.skynet.core.User;
+import org.eclipse.osee.framework.skynet.core.UserManager;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactFactory;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactTypeManager;
+import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction;
+import org.eclipse.osee.framework.ui.plugin.util.Result;
+import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkPageDefinition;
+
+/**
+ * @author Donald G. Dunne
+ */
+public abstract class TaskableStateMachineArtifact extends StateMachineArtifact {
+
+ public TaskableStateMachineArtifact(ArtifactFactory parentFactory, String guid, String humanReadableId, Branch branch, ArtifactType artifactType) throws OseeDataStoreException {
+ super(parentFactory, guid, humanReadableId, branch, artifactType);
+ registerAtsWorldRelation(AtsRelationTypes.SmaToTask_Task);
+ }
+
+ @SuppressWarnings("unused")
+ @Override
+ public Set<User> getPrivilegedUsers() throws OseeCoreException {
+ return null;
+ }
+
+ @Override
+ public void getSmaArtifactsOneLevel(StateMachineArtifact smaArtifact, Set<Artifact> artifacts) throws OseeCoreException {
+ super.getSmaArtifactsOneLevel(smaArtifact, artifacts);
+ artifacts.addAll(getTaskArtifacts());
+ }
+
+ @SuppressWarnings("unused")
+ @Override
+ public Date getWorldViewReleaseDate() throws OseeCoreException {
+ return null;
+ }
+
+ @Override
+ public String getHyperTargetVersion() {
+ return null;
+ }
+
+ @SuppressWarnings("unused")
+ @Override
+ public String getWorldViewParentID() throws OseeCoreException {
+ return null;
+ }
+
+ @Override
+ public VersionArtifact getWorldViewTargetedVersion() throws OseeCoreException {
+ TeamWorkFlowArtifact teamArt = getParentTeamWorkflow();
+ if (teamArt == null) {
+ return null;
+ }
+ return teamArt.getWorldViewTargetedVersion();
+ }
+
+ @Override
+ public boolean showTaskTab() throws OseeCoreException {
+ return isTaskable() || isCompleted() || isCancelled();
+ }
+
+ @Override
+ public void atsDelete(Set<Artifact> deleteArts, Map<Artifact, Object> allRelated) throws OseeCoreException {
+ super.atsDelete(deleteArts, allRelated);
+ for (TaskArtifact taskArt : getTaskArtifacts()) {
+ taskArt.atsDelete(deleteArts, allRelated);
+ }
+ }
+
+ @Override
+ public void transitioned(WorkPageDefinition fromPage, WorkPageDefinition toPage, Collection<User> toAssignees, boolean persist, SkynetTransaction transaction) throws OseeCoreException {
+ super.transitioned(fromPage, toPage, toAssignees, persist, transaction);
+ for (TaskArtifact taskArt : getTaskArtifacts()) {
+ taskArt.parentWorkFlowTransitioned(fromPage, toPage, toAssignees, persist, transaction);
+ }
+ }
+
+ @Override
+ public String getWorldViewNumberOfTasksRemaining() throws OseeCoreException {
+ if (getTaskArtifacts().isEmpty()) {
+ return "";
+ }
+ return String.valueOf(getNumTasksInWork());
+ }
+
+ public String getStatus(String stateName) throws OseeCoreException {
+ int completed = 0, cancelled = 0, inWork = 0;
+ for (TaskArtifact taskArt : getTaskArtifacts(stateName)) {
+ if (taskArt.isCompleted()) {
+ completed++;
+ } else if (taskArt.isCancelled()) {
+ cancelled++;
+ } else {
+ inWork++;
+ }
+ }
+ return String.format("Total: %d - InWork: %d - Completed: %d - Cancelled: %d",
+ getTaskArtifacts(stateName).size(), inWork, completed, cancelled);
+ }
+
+ public Collection<TaskArtifact> getTaskArtifacts() throws OseeCoreException {
+ return AtsCacheManager.getTaskArtifacts(this);
+ }
+
+ public Collection<TaskArtifact> getTaskArtifactsSorted() throws OseeCoreException {
+ return AtsCacheManager.getTaskArtifacts(this);
+ }
+
+ public Collection<TaskArtifact> getTaskArtifactsFromCurrentState() throws OseeCoreException {
+ return getTaskArtifacts(getStateMgr().getCurrentStateName());
+ }
+
+ public Collection<TaskArtifact> getTaskArtifacts(String stateName) throws OseeCoreException {
+ List<TaskArtifact> arts = new ArrayList<TaskArtifact>();
+ for (TaskArtifact taskArt : getTaskArtifacts()) {
if (taskArt.getSoleAttributeValue(AtsAttributeTypes.RelatedToState, "").equals(stateName)) {
- arts.add(taskArt);
- }
- }
- return arts;
- }
-
- public boolean hasTaskArtifacts() {
- try {
- return getRelatedArtifactsCount(AtsRelationTypes.SmaToTask_Task) > 0;
- } catch (OseeCoreException ex) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
- return false;
- }
- }
-
- public TaskArtifact createNewTask(String title) throws OseeCoreException {
- return createNewTask(Arrays.asList(UserManager.getUser()), title);
- }
-
- public TaskArtifact createNewTask(User assignee, String title) throws OseeCoreException {
- return createNewTask(Arrays.asList(assignee), title);
- }
-
- public TaskArtifact createNewTask(Collection<User> assignees, String title) throws OseeCoreException {
- TaskArtifact taskArt = null;
- taskArt = (TaskArtifact) ArtifactTypeManager.addArtifact(AtsArtifactTypes.Task, AtsUtil.getAtsBranch(), title);
- taskArt.getLog().addLog(LogType.Originated, "", "");
-
- // Initialize state machine
- taskArt.getStateMgr().initializeStateMachine(TaskStates.InWork.name(), assignees);
- taskArt.getLog().addLog(LogType.StateEntered, "InWork", "");
-
- // Set parent state task is related to
+ arts.add(taskArt);
+ }
+ }
+ return arts;
+ }
+
+ public boolean hasTaskArtifacts() {
+ try {
+ return getRelatedArtifactsCount(AtsRelationTypes.SmaToTask_Task) > 0;
+ } catch (OseeCoreException ex) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
+ return false;
+ }
+ }
+
+ public TaskArtifact createNewTask(String title) throws OseeCoreException {
+ return createNewTask(Arrays.asList(UserManager.getUser()), title);
+ }
+
+ public TaskArtifact createNewTask(User assignee, String title) throws OseeCoreException {
+ return createNewTask(Arrays.asList(assignee), title);
+ }
+
+ public TaskArtifact createNewTask(Collection<User> assignees, String title) throws OseeCoreException {
+ TaskArtifact taskArt = null;
+ taskArt = (TaskArtifact) ArtifactTypeManager.addArtifact(AtsArtifactTypes.Task, AtsUtil.getAtsBranch(), title);
+ taskArt.getLog().addLog(LogType.Originated, "", "");
+
+ // Initialize state machine
+ taskArt.getStateMgr().initializeStateMachine(TaskStates.InWork.name(), assignees);
+ taskArt.getLog().addLog(LogType.StateEntered, "InWork", "");
+
+ // Set parent state task is related to
taskArt.setSoleAttributeValue(AtsAttributeTypes.RelatedToState, getStateMgr().getCurrentStateName());
-
- addRelation(AtsRelationTypes.SmaToTask_Task, taskArt);
-
- return taskArt;
- }
-
- public Result areTasksComplete() {
- try {
- for (TaskArtifact taskArt : getTaskArtifacts()) {
- if (taskArt.isInWork()) {
- return new Result(false, "Task " + taskArt.getGuid() + " Not Complete");
- }
- }
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- return new Result(false, "Exception " + ex.getLocalizedMessage());
- }
- return Result.TrueResult;
- }
-
- public Result areTasksComplete(String stateName) {
- try {
- for (TaskArtifact taskArt : getTaskArtifacts(stateName)) {
- if (taskArt.isInWork()) {
- return new Result(false, "Task " + taskArt.getGuid() + " Not Complete");
- }
- }
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- return new Result(false, "Exception " + ex.getLocalizedMessage());
- }
- return Result.TrueResult;
- }
-
- public int getNumTasksInWork() {
- int num = 0;
- try {
- for (TaskArtifact taskArt : getTaskArtifacts()) {
- if (taskArt.isInWork()) {
- num++;
- }
- }
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
- return num;
- }
-
- /**
- * Return Estimated Task Hours of "Related to State" stateName
- *
- * @param relatedToStateName state name of parent workflow's state
- * @return Returns the Estimated Hours
- */
- @Override
- public double getEstimatedHoursFromTasks(String relatedToStateName) throws OseeCoreException {
- double hours = 0;
- for (TaskArtifact taskArt : getTaskArtifacts(relatedToStateName)) {
- hours += taskArt.getEstimatedHoursTotal();
- }
- return hours;
- }
-
- /**
- * Return Estimated Hours for all tasks
- *
- * @return hours
- * @throws Exception
- */
- @Override
- public double getEstimatedHoursFromTasks() throws OseeCoreException {
- double hours = 0;
- for (TaskArtifact taskArt : getTaskArtifacts()) {
- hours += taskArt.getEstimatedHoursFromArtifact();
- }
- return hours;
-
- }
-
- /**
- * Return Remain Task Hours of "Related to State" stateName
- *
- * @param relatedToStateName state name of parent workflow's state
- * @return Returns the Remain Hours
- */
- public double getRemainHoursFromTasks(String relatedToStateName) throws OseeCoreException {
- double hours = 0;
- for (TaskArtifact taskArt : getTaskArtifacts(relatedToStateName)) {
- hours += taskArt.getRemainHoursFromArtifact();
- }
- return hours;
- }
-
- /**
- * Return Remain Hours for all tasks
- *
- * @return hours
- * @throws Exception
- */
- public double getRemainHoursFromTasks() throws OseeCoreException {
- double hours = 0;
- for (TaskArtifact taskArt : getTaskArtifacts()) {
- hours += taskArt.getRemainHoursFromArtifact();
- }
- return hours;
-
- }
-
- /**
- * Return Hours Spent for Tasks of "Related to State" stateName
- *
- * @param relatedToStateName state name of parent workflow's state
- * @return Returns the Hours Spent
- */
- public double getHoursSpentFromTasks(String relatedToStateName) throws OseeCoreException {
- double spent = 0;
- for (TaskArtifact taskArt : getTaskArtifacts(relatedToStateName)) {
- spent += taskArt.getHoursSpentSMATotal();
- }
- return spent;
- }
-
- /**
- * Return Total Percent Complete / # Tasks for "Related to State" stateName
- *
- * @param relatedToStateName state name of parent workflow's state
- * @return Returns the Percent Complete.
- */
- public int getPercentCompleteFromTasks(String relatedToStateName) throws OseeCoreException {
- int spent = 0;
- Collection<TaskArtifact> taskArts = getTaskArtifacts(relatedToStateName);
- for (TaskArtifact taskArt : taskArts) {
- spent += taskArt.getPercentCompleteSMATotal();
- }
- if (spent == 0) {
- return 0;
- }
- return spent / taskArts.size();
- }
-
- public Collection<TaskArtifact> createTasks(List<String> titles, List<User> assignees, SkynetTransaction transaction) throws OseeCoreException {
- List<TaskArtifact> tasks = new ArrayList<TaskArtifact>();
- for (String title : titles) {
- TaskArtifact taskArt = createNewTask(title);
- if (assignees != null && assignees.size() > 0) {
- Set<User> users = new HashSet<User>();
- for (User art : assignees) {
- users.add(art);
- }
- taskArt.getStateMgr().setAssignees(users);
- }
- tasks.add(taskArt);
- taskArt.persist(transaction);
- }
- return tasks;
- }
-
+
+ addRelation(AtsRelationTypes.SmaToTask_Task, taskArt);
+
+ return taskArt;
+ }
+
+ public Result areTasksComplete() {
+ try {
+ for (TaskArtifact taskArt : getTaskArtifacts()) {
+ if (taskArt.isInWork()) {
+ return new Result(false, "Task " + taskArt.getGuid() + " Not Complete");
+ }
+ }
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ return new Result(false, "Exception " + ex.getLocalizedMessage());
+ }
+ return Result.TrueResult;
+ }
+
+ public Result areTasksComplete(String stateName) {
+ try {
+ for (TaskArtifact taskArt : getTaskArtifacts(stateName)) {
+ if (taskArt.isInWork()) {
+ return new Result(false, "Task " + taskArt.getGuid() + " Not Complete");
+ }
+ }
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ return new Result(false, "Exception " + ex.getLocalizedMessage());
+ }
+ return Result.TrueResult;
+ }
+
+ public int getNumTasksInWork() {
+ int num = 0;
+ try {
+ for (TaskArtifact taskArt : getTaskArtifacts()) {
+ if (taskArt.isInWork()) {
+ num++;
+ }
+ }
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ }
+ return num;
+ }
+
+ /**
+ * Return Estimated Task Hours of "Related to State" stateName
+ *
+ * @param relatedToStateName state name of parent workflow's state
+ * @return Returns the Estimated Hours
+ */
+ @Override
+ public double getEstimatedHoursFromTasks(String relatedToStateName) throws OseeCoreException {
+ double hours = 0;
+ for (TaskArtifact taskArt : getTaskArtifacts(relatedToStateName)) {
+ hours += taskArt.getEstimatedHoursTotal();
+ }
+ return hours;
+ }
+
+ /**
+ * Return Estimated Hours for all tasks
+ *
+ * @return hours
+ * @throws Exception
+ */
+ @Override
+ public double getEstimatedHoursFromTasks() throws OseeCoreException {
+ double hours = 0;
+ for (TaskArtifact taskArt : getTaskArtifacts()) {
+ hours += taskArt.getEstimatedHoursFromArtifact();
+ }
+ return hours;
+
+ }
+
+ /**
+ * Return Remain Task Hours of "Related to State" stateName
+ *
+ * @param relatedToStateName state name of parent workflow's state
+ * @return Returns the Remain Hours
+ */
+ public double getRemainHoursFromTasks(String relatedToStateName) throws OseeCoreException {
+ double hours = 0;
+ for (TaskArtifact taskArt : getTaskArtifacts(relatedToStateName)) {
+ hours += taskArt.getRemainHoursFromArtifact();
+ }
+ return hours;
+ }
+
+ /**
+ * Return Remain Hours for all tasks
+ *
+ * @return hours
+ * @throws Exception
+ */
+ public double getRemainHoursFromTasks() throws OseeCoreException {
+ double hours = 0;
+ for (TaskArtifact taskArt : getTaskArtifacts()) {
+ hours += taskArt.getRemainHoursFromArtifact();
+ }
+ return hours;
+
+ }
+
+ /**
+ * Return Hours Spent for Tasks of "Related to State" stateName
+ *
+ * @param relatedToStateName state name of parent workflow's state
+ * @return Returns the Hours Spent
+ */
+ public double getHoursSpentFromTasks(String relatedToStateName) throws OseeCoreException {
+ double spent = 0;
+ for (TaskArtifact taskArt : getTaskArtifacts(relatedToStateName)) {
+ spent += taskArt.getHoursSpentSMATotal();
+ }
+ return spent;
+ }
+
+ /**
+ * Return Total Percent Complete / # Tasks for "Related to State" stateName
+ *
+ * @param relatedToStateName state name of parent workflow's state
+ * @return Returns the Percent Complete.
+ */
+ public int getPercentCompleteFromTasks(String relatedToStateName) throws OseeCoreException {
+ int spent = 0;
+ Collection<TaskArtifact> taskArts = getTaskArtifacts(relatedToStateName);
+ for (TaskArtifact taskArt : taskArts) {
+ spent += taskArt.getPercentCompleteSMATotal();
+ }
+ if (spent == 0) {
+ return 0;
+ }
+ return spent / taskArts.size();
+ }
+
+ public Collection<TaskArtifact> createTasks(List<String> titles, List<User> assignees, SkynetTransaction transaction) throws OseeCoreException {
+ List<TaskArtifact> tasks = new ArrayList<TaskArtifact>();
+ for (String title : titles) {
+ TaskArtifact taskArt = createNewTask(title);
+ if (assignees != null && assignees.size() > 0) {
+ Set<User> users = new HashSet<User>();
+ for (User art : assignees) {
+ users.add(art);
+ }
+ taskArt.getStateMgr().setAssignees(users);
+ }
+ tasks.add(taskArt);
+ taskArt.persist(transaction);
+ }
+ return tasks;
+ }
+
} \ No newline at end of file
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 3f092fc977b..ef6b661a72c 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
@@ -1,520 +1,519 @@
-/*******************************************************************************
- * 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.artifact;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-import java.util.logging.Level;
-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.workflow.item.AtsWorkDefinitions.RuleWorkItemId;
-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.exception.OseeDataStoreException;
-import org.eclipse.osee.framework.core.model.Branch;
-import org.eclipse.osee.framework.core.model.type.ArtifactType;
-import org.eclipse.osee.framework.jdk.core.util.Collections;
-import org.eclipse.osee.framework.jdk.core.util.GUID;
-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.skynet.core.artifact.ArtifactFactory;
-import org.eclipse.osee.framework.skynet.core.artifact.ArtifactTypeManager;
-import org.eclipse.osee.framework.skynet.core.artifact.BranchManager;
-import org.eclipse.osee.framework.skynet.core.utility.Artifacts;
-import org.eclipse.osee.framework.ui.plugin.util.Result;
-import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkFlowDefinition;
-import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkItemDefinitionFactory;
-import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkRuleDefinition;
-
-/**
- * @author Donald G. Dunne
- */
-public class TeamDefinitionArtifact extends Artifact implements ICommitConfigArtifact {
-
- public static enum TeamDefinitionOptions {
- TeamUsesVersions,
- RequireTargetedVersion
- };
-
- public TeamDefinitionArtifact(ArtifactFactory parentFactory, String guid, String humanReadableId, Branch branch, ArtifactType artifactType) throws OseeDataStoreException {
- super(parentFactory, guid, humanReadableId, branch, artifactType);
- }
-
- @Override
- public Result isCreateBranchAllowed() throws OseeCoreException {
+/*******************************************************************************
+ * 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.artifact;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.logging.Level;
+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.workflow.item.AtsWorkDefinitions.RuleWorkItemId;
+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.exception.OseeDataStoreException;
+import org.eclipse.osee.framework.core.model.Branch;
+import org.eclipse.osee.framework.core.model.type.ArtifactType;
+import org.eclipse.osee.framework.jdk.core.util.Collections;
+import org.eclipse.osee.framework.jdk.core.util.GUID;
+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.skynet.core.artifact.ArtifactFactory;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactTypeManager;
+import org.eclipse.osee.framework.skynet.core.artifact.BranchManager;
+import org.eclipse.osee.framework.skynet.core.utility.Artifacts;
+import org.eclipse.osee.framework.ui.plugin.util.Result;
+import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkFlowDefinition;
+import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkItemDefinitionFactory;
+import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkRuleDefinition;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class TeamDefinitionArtifact extends Artifact implements ICommitConfigArtifact {
+
+ public static enum TeamDefinitionOptions {
+ TeamUsesVersions,
+ RequireTargetedVersion
+ };
+
+ public TeamDefinitionArtifact(ArtifactFactory parentFactory, String guid, String humanReadableId, Branch branch, ArtifactType artifactType) throws OseeDataStoreException {
+ super(parentFactory, guid, humanReadableId, branch, artifactType);
+ }
+
+ @Override
+ public Result isCreateBranchAllowed() throws OseeCoreException {
if (getSoleAttributeValue(AtsAttributeTypes.AllowCreateBranch, false) == false) {
- return new Result(false, "Branch creation disabled for Team Definition [" + this + "]");
- }
- if (getParentBranch() == null) {
- return new Result(false, "Parent Branch not configured for Team Definition [" + this + "]");
- }
- return Result.TrueResult;
- }
-
- @Override
- public Result isCommitBranchAllowed() throws OseeCoreException {
+ return new Result(false, "Branch creation disabled for Team Definition [" + this + "]");
+ }
+ if (getParentBranch() == null) {
+ return new Result(false, "Parent Branch not configured for Team Definition [" + this + "]");
+ }
+ return Result.TrueResult;
+ }
+
+ @Override
+ public Result isCommitBranchAllowed() throws OseeCoreException {
if (getSoleAttributeValue(AtsAttributeTypes.AllowCommitBranch, false) == false) {
- return new Result(false, "Team Definition [" + this + "] not configured to allow branch commit.");
- }
- if (getParentBranch() == null) {
- return new Result(false, "Parent Branch not configured for Team Definition [" + this + "]");
- }
- return Result.TrueResult;
- }
-
- public void initialize(String fullname, String description, Collection<User> leads, Collection<User> members, Collection<ActionableItemArtifact> actionableItems, TeamDefinitionOptions... teamDefinitionOptions) throws OseeCoreException {
- List<Object> teamDefOptions = Collections.getAggregate((Object[]) teamDefinitionOptions);
-
+ return new Result(false, "Team Definition [" + this + "] not configured to allow branch commit.");
+ }
+ if (getParentBranch() == null) {
+ return new Result(false, "Parent Branch not configured for Team Definition [" + this + "]");
+ }
+ return Result.TrueResult;
+ }
+
+ public void initialize(String fullname, String description, Collection<User> leads, Collection<User> members, Collection<ActionableItemArtifact> actionableItems, TeamDefinitionOptions... teamDefinitionOptions) throws OseeCoreException {
+ List<Object> teamDefOptions = Collections.getAggregate((Object[]) teamDefinitionOptions);
+
setSoleAttributeValue(AtsAttributeTypes.Description, description);
setSoleAttributeValue(AtsAttributeTypes.FullName, fullname);
- for (User user : leads) {
- addRelation(AtsRelationTypes.TeamLead_Lead, user);
- // All leads are members
- addRelation(AtsRelationTypes.TeamMember_Member, user);
- }
- for (User user : members) {
- addRelation(AtsRelationTypes.TeamMember_Member, user);
- }
-
- if (teamDefOptions.contains(TeamDefinitionOptions.TeamUsesVersions)) {
+ for (User user : leads) {
+ addRelation(AtsRelationTypes.TeamLead_Lead, user);
+ // All leads are members
+ addRelation(AtsRelationTypes.TeamMember_Member, user);
+ }
+ for (User user : members) {
+ addRelation(AtsRelationTypes.TeamMember_Member, user);
+ }
+
+ if (teamDefOptions.contains(TeamDefinitionOptions.TeamUsesVersions)) {
setSoleAttributeValue(AtsAttributeTypes.TeamUsesVersions, true);
- }
- if (teamDefOptions.contains(TeamDefinitionOptions.RequireTargetedVersion)) {
- addWorkRule(RuleWorkItemId.atsRequireTargetedVersion.name());
- }
-
- // Relate to actionable items
- for (ActionableItemArtifact aia : actionableItems) {
- addRelation(AtsRelationTypes.TeamActionableItem_ActionableItem, aia);
- }
- }
-
- public static List<TeamDefinitionArtifact> getTopLevelTeamDefinitions(Active active) throws OseeCoreException {
- TeamDefinitionArtifact topTeamDef = getTopTeamDefinition();
- if (topTeamDef == null) {
- return java.util.Collections.emptyList();
- }
- return Collections.castAll(AtsUtil.getActive(
- Artifacts.getChildrenOfTypeSet(topTeamDef, TeamDefinitionArtifact.class, false), active,
- TeamDefinitionArtifact.class));
- }
-
- @Override
- public Branch getParentBranch() throws OseeCoreException {
- try {
+ }
+ if (teamDefOptions.contains(TeamDefinitionOptions.RequireTargetedVersion)) {
+ addWorkRule(RuleWorkItemId.atsRequireTargetedVersion.name());
+ }
+
+ // Relate to actionable items
+ for (ActionableItemArtifact aia : actionableItems) {
+ addRelation(AtsRelationTypes.TeamActionableItem_ActionableItem, aia);
+ }
+ }
+
+ public static List<TeamDefinitionArtifact> getTopLevelTeamDefinitions(Active active) throws OseeCoreException {
+ TeamDefinitionArtifact topTeamDef = getTopTeamDefinition();
+ if (topTeamDef == null) {
+ return java.util.Collections.emptyList();
+ }
+ return Collections.castAll(AtsUtil.getActive(
+ Artifacts.getChildrenOfTypeSet(topTeamDef, TeamDefinitionArtifact.class, false), active,
+ TeamDefinitionArtifact.class));
+ }
+
+ @Override
+ public Branch getParentBranch() throws OseeCoreException {
+ try {
String guid = getSoleAttributeValue(AtsAttributeTypes.BaselineBranchGuid, "");
- if (GUID.isValid(guid)) {
- return BranchManager.getBranchByGuid(guid);
- }
- } catch (BranchDoesNotExist ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
- return null;
- }
-
- /**
- * This method will walk up the TeamDefinition tree until a def is found that configured with versions. This allows
- * multiple TeamDefinitions to be versioned/released together by having the parent hold the versions. It is not
- * required that a product configured in ATS uses the versions option. If no parent with versions is found, null is
- * returned. If boolean "Team Uses Versions" is false, just return cause this team doesn't use versions
- *
- * @return parent TeamDefinition that holds the version definitions
- */
- public TeamDefinitionArtifact getTeamDefinitionHoldingVersions() throws OseeCoreException {
- if (!isTeamUsesVersions()) {
- return null;
- }
- if (getVersionsArtifacts().size() > 0) {
- return this;
- }
- if (getParent() instanceof TeamDefinitionArtifact) {
- TeamDefinitionArtifact parentTda = (TeamDefinitionArtifact) getParent();
- if (parentTda != null) {
- return parentTda.getTeamDefinitionHoldingVersions();
- }
- }
- return null;
- }
-
- /**
- * This method will walk up the TeamDefinition tree until a def is found that configured with work flow.
- *
- * @return parent TeamDefinition that holds the work flow id attribute
- */
- public TeamDefinitionArtifact getTeamDefinitionHoldingWorkFlow() throws OseeCoreException {
- for (Artifact artifact : getRelatedArtifacts(CoreRelationTypes.WorkItem__Child, Artifact.class)) {
- if (artifact.isOfType(CoreArtifactTypes.WorkFlowDefinition)) {
- return this;
- }
- }
- if (getParent() instanceof TeamDefinitionArtifact) {
- TeamDefinitionArtifact parentTda = (TeamDefinitionArtifact) getParent();
- if (parentTda != null) {
- return parentTda.getTeamDefinitionHoldingWorkFlow();
- }
- }
- return null;
- }
-
- public VersionArtifact getNextReleaseVersion() throws OseeCoreException {
- for (VersionArtifact verArt : getRelatedArtifacts(AtsRelationTypes.TeamDefinitionToVersion_Version,
- VersionArtifact.class)) {
+ if (GUID.isValid(guid)) {
+ return BranchManager.getBranchByGuid(guid);
+ }
+ } catch (BranchDoesNotExist ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ }
+ return null;
+ }
+
+ /**
+ * This method will walk up the TeamDefinition tree until a def is found that configured with versions. This allows
+ * multiple TeamDefinitions to be versioned/released together by having the parent hold the versions. It is not
+ * required that a product configured in ATS uses the versions option. If no parent with versions is found, null is
+ * returned. If boolean "Team Uses Versions" is false, just return cause this team doesn't use versions
+ *
+ * @return parent TeamDefinition that holds the version definitions
+ */
+ public TeamDefinitionArtifact getTeamDefinitionHoldingVersions() throws OseeCoreException {
+ if (!isTeamUsesVersions()) {
+ return null;
+ }
+ if (getVersionsArtifacts().size() > 0) {
+ return this;
+ }
+ if (getParent() instanceof TeamDefinitionArtifact) {
+ TeamDefinitionArtifact parentTda = (TeamDefinitionArtifact) getParent();
+ if (parentTda != null) {
+ return parentTda.getTeamDefinitionHoldingVersions();
+ }
+ }
+ return null;
+ }
+
+ /**
+ * This method will walk up the TeamDefinition tree until a def is found that configured with work flow.
+ *
+ * @return parent TeamDefinition that holds the work flow id attribute
+ */
+ public TeamDefinitionArtifact getTeamDefinitionHoldingWorkFlow() throws OseeCoreException {
+ for (Artifact artifact : getRelatedArtifacts(CoreRelationTypes.WorkItem__Child, Artifact.class)) {
+ if (artifact.isOfType(CoreArtifactTypes.WorkFlowDefinition)) {
+ return this;
+ }
+ }
+ if (getParent() instanceof TeamDefinitionArtifact) {
+ TeamDefinitionArtifact parentTda = (TeamDefinitionArtifact) getParent();
+ if (parentTda != null) {
+ return parentTda.getTeamDefinitionHoldingWorkFlow();
+ }
+ }
+ return null;
+ }
+
+ public VersionArtifact getNextReleaseVersion() throws OseeCoreException {
+ for (VersionArtifact verArt : getRelatedArtifacts(AtsRelationTypes.TeamDefinitionToVersion_Version,
+ VersionArtifact.class)) {
if (verArt.getSoleAttributeValue(AtsAttributeTypes.NextVersion, false)) {
- return verArt;
- }
- }
- return null;
- }
-
- public Collection<VersionArtifact> getVersionsFromTeamDefHoldingVersions(VersionReleaseType releaseType) throws OseeCoreException {
- TeamDefinitionArtifact teamDef = getTeamDefinitionHoldingVersions();
- if (teamDef == null) {
- return new ArrayList<VersionArtifact>();
- }
- return teamDef.getVersionsArtifacts(releaseType);
- }
-
- public static List<TeamDefinitionArtifact> getTeamDefinitions(Active active) throws OseeCoreException {
- return Collections.castAll(AtsCacheManager.getArtifactsByActive(
- ArtifactTypeManager.getType(AtsArtifactTypes.TeamDefinition), active));
- }
-
- public static List<TeamDefinitionArtifact> getTeamTopLevelDefinitions(Active active) throws OseeCoreException {
- TeamDefinitionArtifact topTeamDef = getTopTeamDefinition();
- if (topTeamDef == null) {
- return java.util.Collections.emptyList();
- }
- return Collections.castAll(AtsUtil.getActive(
- Artifacts.getChildrenOfTypeSet(topTeamDef, TeamDefinitionArtifact.class, false), active,
- TeamDefinitionArtifact.class));
- }
-
- public static TeamDefinitionArtifact getTopTeamDefinition() throws OseeCoreException {
- return (TeamDefinitionArtifact) AtsFolderUtil.getFolder(AtsFolder.Teams);
- }
-
- public static Set<TeamDefinitionArtifact> getTeamReleaseableDefinitions(Active active) throws OseeCoreException {
- Set<TeamDefinitionArtifact> teamDefs = new HashSet<TeamDefinitionArtifact>();
- for (TeamDefinitionArtifact teamDef : getTeamDefinitions(active)) {
- if (teamDef.getVersionsArtifacts().size() > 0) {
- teamDefs.add(teamDef);
- }
- }
- return teamDefs;
- }
-
- public static Collection<TeamDefinitionArtifact> getImpactedTeamDefs(Collection<ActionableItemArtifact> aias) throws OseeCoreException {
- Set<TeamDefinitionArtifact> resultTeams = new HashSet<TeamDefinitionArtifact>();
- for (ActionableItemArtifact aia : aias) {
- resultTeams.addAll(getImpactedTeamDefInherited(aia));
- }
- return resultTeams;
- }
-
- private static List<TeamDefinitionArtifact> getImpactedTeamDefInherited(ActionableItemArtifact aia) throws OseeCoreException {
- if (aia.getRelatedArtifacts(AtsRelationTypes.TeamActionableItem_Team).size() > 0) {
- return aia.getRelatedArtifacts(AtsRelationTypes.TeamActionableItem_Team, TeamDefinitionArtifact.class);
- }
- Artifact parentArt = aia.getParent();
- if (parentArt instanceof ActionableItemArtifact) {
- return getImpactedTeamDefInherited((ActionableItemArtifact) parentArt);
- }
- return java.util.Collections.emptyList();
- }
-
- public static Set<TeamDefinitionArtifact> getTeamsFromItemAndChildren(ActionableItemArtifact aia) throws OseeCoreException {
- Set<TeamDefinitionArtifact> aiaTeams = new HashSet<TeamDefinitionArtifact>();
- getTeamFromItemAndChildren(aia, aiaTeams);
- return aiaTeams;
- }
-
- public static Set<TeamDefinitionArtifact> getTeamsFromItemAndChildren(TeamDefinitionArtifact teamDef) throws OseeCoreException {
- Set<TeamDefinitionArtifact> teamDefs = new HashSet<TeamDefinitionArtifact>();
- teamDefs.add(teamDef);
- for (Artifact art : teamDef.getChildren()) {
- if (art instanceof TeamDefinitionArtifact) {
- teamDefs.addAll(getTeamsFromItemAndChildren((TeamDefinitionArtifact) art));
- }
- }
- return teamDefs;
- }
-
- private static void getTeamFromItemAndChildren(ActionableItemArtifact aia, Set<TeamDefinitionArtifact> aiaTeams) throws OseeCoreException {
- if (aia.getRelatedArtifacts(AtsRelationTypes.TeamActionableItem_Team).size() > 0) {
- aiaTeams.addAll(aia.getRelatedArtifacts(AtsRelationTypes.TeamActionableItem_Team, TeamDefinitionArtifact.class));
- }
- for (Artifact childArt : aia.getChildren()) {
- if (childArt instanceof ActionableItemArtifact) {
- getTeamFromItemAndChildren((ActionableItemArtifact) childArt, aiaTeams);
- }
- }
- }
-
- public double getManDayHrsFromItemAndChildren() {
- return getHoursPerWorkDayFromItemAndChildren(this);
- }
-
- public WorkFlowDefinition getWorkFlowDefinition() throws OseeCoreException {
- Artifact teamDef = getTeamDefinitionHoldingWorkFlow();
- if (teamDef == null) {
- return null;
- }
- Artifact workFlowArt = null;
- for (Artifact artifact : teamDef.getRelatedArtifacts(CoreRelationTypes.WorkItem__Child, Artifact.class)) {
- if (artifact.isOfType(CoreArtifactTypes.WorkFlowDefinition)) {
- if (workFlowArt != null) {
- OseeLog.log(
- AtsPlugin.class,
- Level.SEVERE,
- "Multiple workflows found where only one expected for Team Definition " + getHumanReadableId() + " - " + getName());
- }
- workFlowArt = artifact;
- }
- }
- if (workFlowArt == null) {
- return null;
- }
- return (WorkFlowDefinition) WorkItemDefinitionFactory.getWorkItemDefinition(workFlowArt.getName());
- }
-
- /**
- * Return rules associated with team definition . Use StateMachineArtifact.getWorkRulesStartsWith to acquire these
- * and work page rules and workflow rules.
- */
- public Collection<WorkRuleDefinition> getWorkRulesStartsWith(String ruleId) throws OseeCoreException {
- Set<WorkRuleDefinition> workRules = new HashSet<WorkRuleDefinition>();
- if (!Strings.isValid(ruleId)) {
- return workRules;
- }
- // Get work rules from team definition
- for (WorkRuleDefinition workRuleDefinition : getWorkRules()) {
- if (!workRuleDefinition.getId().equals("") && workRuleDefinition.getId().startsWith(ruleId)) {
- workRules.add(workRuleDefinition);
- }
- }
-
- return workRules;
- }
-
- public Collection<WorkRuleDefinition> getWorkRules() throws OseeCoreException {
- Set<WorkRuleDefinition> workRules = new HashSet<WorkRuleDefinition>();
- // Get work rules from team definition
- for (Artifact art : getRelatedArtifacts(CoreRelationTypes.WorkItem__Child)) {
- if (art.isOfType(CoreArtifactTypes.WorkRuleDefinition)) {
+ return verArt;
+ }
+ }
+ return null;
+ }
+
+ public Collection<VersionArtifact> getVersionsFromTeamDefHoldingVersions(VersionReleaseType releaseType) throws OseeCoreException {
+ TeamDefinitionArtifact teamDef = getTeamDefinitionHoldingVersions();
+ if (teamDef == null) {
+ return new ArrayList<VersionArtifact>();
+ }
+ return teamDef.getVersionsArtifacts(releaseType);
+ }
+
+ public static List<TeamDefinitionArtifact> getTeamDefinitions(Active active) throws OseeCoreException {
+ return Collections.castAll(AtsCacheManager.getArtifactsByActive(
+ ArtifactTypeManager.getType(AtsArtifactTypes.TeamDefinition), active));
+ }
+
+ public static List<TeamDefinitionArtifact> getTeamTopLevelDefinitions(Active active) throws OseeCoreException {
+ TeamDefinitionArtifact topTeamDef = getTopTeamDefinition();
+ if (topTeamDef == null) {
+ return java.util.Collections.emptyList();
+ }
+ return Collections.castAll(AtsUtil.getActive(
+ Artifacts.getChildrenOfTypeSet(topTeamDef, TeamDefinitionArtifact.class, false), active,
+ TeamDefinitionArtifact.class));
+ }
+
+ public static TeamDefinitionArtifact getTopTeamDefinition() throws OseeCoreException {
+ return (TeamDefinitionArtifact) AtsFolderUtil.getFolder(AtsFolder.Teams);
+ }
+
+ public static Set<TeamDefinitionArtifact> getTeamReleaseableDefinitions(Active active) throws OseeCoreException {
+ Set<TeamDefinitionArtifact> teamDefs = new HashSet<TeamDefinitionArtifact>();
+ for (TeamDefinitionArtifact teamDef : getTeamDefinitions(active)) {
+ if (teamDef.getVersionsArtifacts().size() > 0) {
+ teamDefs.add(teamDef);
+ }
+ }
+ return teamDefs;
+ }
+
+ public static Collection<TeamDefinitionArtifact> getImpactedTeamDefs(Collection<ActionableItemArtifact> aias) throws OseeCoreException {
+ Set<TeamDefinitionArtifact> resultTeams = new HashSet<TeamDefinitionArtifact>();
+ for (ActionableItemArtifact aia : aias) {
+ resultTeams.addAll(getImpactedTeamDefInherited(aia));
+ }
+ return resultTeams;
+ }
+
+ private static List<TeamDefinitionArtifact> getImpactedTeamDefInherited(ActionableItemArtifact aia) throws OseeCoreException {
+ if (aia.getRelatedArtifacts(AtsRelationTypes.TeamActionableItem_Team).size() > 0) {
+ return aia.getRelatedArtifacts(AtsRelationTypes.TeamActionableItem_Team, TeamDefinitionArtifact.class);
+ }
+ Artifact parentArt = aia.getParent();
+ if (parentArt instanceof ActionableItemArtifact) {
+ return getImpactedTeamDefInherited((ActionableItemArtifact) parentArt);
+ }
+ return java.util.Collections.emptyList();
+ }
+
+ public static Set<TeamDefinitionArtifact> getTeamsFromItemAndChildren(ActionableItemArtifact aia) throws OseeCoreException {
+ Set<TeamDefinitionArtifact> aiaTeams = new HashSet<TeamDefinitionArtifact>();
+ getTeamFromItemAndChildren(aia, aiaTeams);
+ return aiaTeams;
+ }
+
+ public static Set<TeamDefinitionArtifact> getTeamsFromItemAndChildren(TeamDefinitionArtifact teamDef) throws OseeCoreException {
+ Set<TeamDefinitionArtifact> teamDefs = new HashSet<TeamDefinitionArtifact>();
+ teamDefs.add(teamDef);
+ for (Artifact art : teamDef.getChildren()) {
+ if (art instanceof TeamDefinitionArtifact) {
+ teamDefs.addAll(getTeamsFromItemAndChildren((TeamDefinitionArtifact) art));
+ }
+ }
+ return teamDefs;
+ }
+
+ private static void getTeamFromItemAndChildren(ActionableItemArtifact aia, Set<TeamDefinitionArtifact> aiaTeams) throws OseeCoreException {
+ if (aia.getRelatedArtifacts(AtsRelationTypes.TeamActionableItem_Team).size() > 0) {
+ aiaTeams.addAll(aia.getRelatedArtifacts(AtsRelationTypes.TeamActionableItem_Team, TeamDefinitionArtifact.class));
+ }
+ for (Artifact childArt : aia.getChildren()) {
+ if (childArt instanceof ActionableItemArtifact) {
+ getTeamFromItemAndChildren((ActionableItemArtifact) childArt, aiaTeams);
+ }
+ }
+ }
+
+ public double getManDayHrsFromItemAndChildren() {
+ return getHoursPerWorkDayFromItemAndChildren(this);
+ }
+
+ public WorkFlowDefinition getWorkFlowDefinition() throws OseeCoreException {
+ Artifact teamDef = getTeamDefinitionHoldingWorkFlow();
+ if (teamDef == null) {
+ return null;
+ }
+ Artifact workFlowArt = null;
+ for (Artifact artifact : teamDef.getRelatedArtifacts(CoreRelationTypes.WorkItem__Child, Artifact.class)) {
+ if (artifact.isOfType(CoreArtifactTypes.WorkFlowDefinition)) {
+ if (workFlowArt != null) {
+ OseeLog.log(
+ AtsPlugin.class,
+ Level.SEVERE,
+ "Multiple workflows found where only one expected for Team Definition " + getHumanReadableId() + " - " + getName());
+ }
+ workFlowArt = artifact;
+ }
+ }
+ if (workFlowArt == null) {
+ return null;
+ }
+ return (WorkFlowDefinition) WorkItemDefinitionFactory.getWorkItemDefinition(workFlowArt.getName());
+ }
+
+ /**
+ * Return rules associated with team definition . Use StateMachineArtifact.getWorkRulesStartsWith to acquire these
+ * and work page rules and workflow rules.
+ */
+ public Collection<WorkRuleDefinition> getWorkRulesStartsWith(String ruleId) throws OseeCoreException {
+ Set<WorkRuleDefinition> workRules = new HashSet<WorkRuleDefinition>();
+ if (!Strings.isValid(ruleId)) {
+ return workRules;
+ }
+ // Get work rules from team definition
+ for (WorkRuleDefinition workRuleDefinition : getWorkRules()) {
+ if (!workRuleDefinition.getId().equals("") && workRuleDefinition.getId().startsWith(ruleId)) {
+ workRules.add(workRuleDefinition);
+ }
+ }
+
+ return workRules;
+ }
+
+ public Collection<WorkRuleDefinition> getWorkRules() throws OseeCoreException {
+ Set<WorkRuleDefinition> workRules = new HashSet<WorkRuleDefinition>();
+ // Get work rules from team definition
+ for (Artifact art : getRelatedArtifacts(CoreRelationTypes.WorkItem__Child)) {
+ if (art.isOfType(CoreArtifactTypes.WorkRuleDefinition)) {
String id = art.getSoleAttributeValue(CoreAttributeTypes.WorkId, "");
- if (Strings.isValid(id)) {
- workRules.add((WorkRuleDefinition) WorkItemDefinitionFactory.getWorkItemDefinition(id));
- }
- }
- }
-
- return workRules;
- }
-
- /**
- * If hours per work day attribute is set, use it, otherwise, walk up the Team Definition tree. Value used in
- * calculations.
- */
- public double getHoursPerWorkDayFromItemAndChildren(TeamDefinitionArtifact teamDef) {
- try {
+ if (Strings.isValid(id)) {
+ workRules.add((WorkRuleDefinition) WorkItemDefinitionFactory.getWorkItemDefinition(id));
+ }
+ }
+ }
+
+ return workRules;
+ }
+
+ /**
+ * If hours per work day attribute is set, use it, otherwise, walk up the Team Definition tree. Value used in
+ * calculations.
+ */
+ public double getHoursPerWorkDayFromItemAndChildren(TeamDefinitionArtifact teamDef) {
+ try {
Double manDaysHrs = teamDef.getSoleAttributeValue(AtsAttributeTypes.HoursPerWorkDay, 0.0);
- if (manDaysHrs != null && manDaysHrs != 0) {
- return manDaysHrs;
- }
- if (teamDef.getParent() != null && teamDef.getParent() instanceof TeamDefinitionArtifact) {
- return teamDef.getHoursPerWorkDayFromItemAndChildren((TeamDefinitionArtifact) teamDef.getParent());
- }
- return StateMachineArtifact.DEFAULT_HOURS_PER_WORK_DAY;
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
- return 0.0;
- }
-
- /**
- * Return ONLY leads configured for this TeamDefinitionArtifact. Depending on the use, like creating new actions, the
- * assignees (or Leads) are determined first from users configured as leads of individual actionable items and only
- * if that returns no leads, THEN default to using the leads configured for the TeamDefinition. In these cases, use
- * getLeads(Collection<ActionableItemArtifact>) instead.
- *
- * @return users configured as leads for this TeamDefinitionArtifact
- * @throws OseeCoreException
- */
- public Collection<User> getLeads() throws OseeCoreException {
- return getRelatedArtifacts(AtsRelationTypes.TeamLead_Lead, User.class);
- }
-
- public Collection<User> getPrivilegedMembers() throws OseeCoreException {
- return getRelatedArtifacts(AtsRelationTypes.PrivilegedMember_Member, User.class);
- }
-
- /**
- * Returns leads configured first by ActionableItems and only if this is an empty set, THEN defaults to those
- * configured by TeamDefinitions. Use getLeads() to only get the leads configured for this TeamDefinitionArtifact.
- *
- * @param actionableItems
- * @return users configured as leads by ActionableItems, then by TeamDefinition
- */
- public Collection<User> getLeads(Collection<ActionableItemArtifact> actionableItems) throws OseeCoreException {
- Set<User> leads = new HashSet<User>();
- for (ActionableItemArtifact aia : actionableItems) {
- if (aia.getImpactedTeamDefs().contains(this)) {
- // If leads are specified for this aia, add them
- if (aia.getLeads().size() > 0) {
- leads.addAll(aia.getLeads());
- } else {
- for (TeamDefinitionArtifact teamDef : aia.getImpactedTeamDefs()) {
- leads.addAll(teamDef.getLeads());
- }
- }
- }
- }
- if (leads.isEmpty()) {
- leads.addAll(getLeads());
- }
- return leads;
- }
-
- @SuppressWarnings("unchecked")
- public Collection<User> getMembersAndLeads() throws OseeCoreException {
- return Collections.setUnion(getMembers(), getLeads());
- }
-
- public Collection<User> getMembers() throws OseeCoreException {
- return getRelatedArtifacts(AtsRelationTypes.TeamMember_Member, User.class);
- }
-
- public VersionArtifact getVersionArtifact(String name, boolean create) throws OseeCoreException {
- for (VersionArtifact verArt : getVersionsArtifacts()) {
- if (verArt.getName().equals(name)) {
- return verArt;
- }
- }
- if (create) {
- return createVersion(name);
- }
- return null;
- }
-
- public VersionArtifact createVersion(String name) throws OseeCoreException {
- VersionArtifact versionArt =
- (VersionArtifact) ArtifactTypeManager.addArtifact(AtsArtifactTypes.Version, AtsUtil.getAtsBranch(), name);
- addRelation(AtsRelationTypes.TeamDefinitionToVersion_Version, versionArt);
- return versionArt;
- }
-
- public Collection<VersionArtifact> getVersionsArtifacts() throws OseeCoreException {
- return getRelatedArtifacts(AtsRelationTypes.TeamDefinitionToVersion_Version, VersionArtifact.class);
- }
-
- public Collection<VersionArtifact> getVersionsArtifacts(VersionReleaseType releaseType) throws OseeCoreException {
- ArrayList<VersionArtifact> versions = new ArrayList<VersionArtifact>();
- for (VersionArtifact version : getVersionsArtifacts()) {
- if (version.isReleased()) {
- if (releaseType == VersionReleaseType.Released || releaseType == VersionReleaseType.Both) {
- versions.add(version);
- }
- } else if (version.isVersionLocked()) {
- if (releaseType == VersionReleaseType.VersionLocked || releaseType == VersionReleaseType.Both) {
- versions.add(version);
- }
- } else {
- if (releaseType == VersionReleaseType.UnReleased || releaseType == VersionReleaseType.Both) {
- versions.add(version);
- }
- }
- }
- return versions;
- }
-
- public boolean isTeamUsesVersions() throws OseeCoreException {
+ if (manDaysHrs != null && manDaysHrs != 0) {
+ return manDaysHrs;
+ }
+ if (teamDef.getParent() != null && teamDef.getParent() instanceof TeamDefinitionArtifact) {
+ return teamDef.getHoursPerWorkDayFromItemAndChildren((TeamDefinitionArtifact) teamDef.getParent());
+ }
+ return StateMachineArtifact.DEFAULT_HOURS_PER_WORK_DAY;
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ }
+ return 0.0;
+ }
+
+ /**
+ * Return ONLY leads configured for this TeamDefinitionArtifact. Depending on the use, like creating new actions, the
+ * assignees (or Leads) are determined first from users configured as leads of individual actionable items and only
+ * if that returns no leads, THEN default to using the leads configured for the TeamDefinition. In these cases, use
+ * getLeads(Collection<ActionableItemArtifact>) instead.
+ *
+ * @return users configured as leads for this TeamDefinitionArtifact
+ * @throws OseeCoreException
+ */
+ public Collection<User> getLeads() throws OseeCoreException {
+ return getRelatedArtifacts(AtsRelationTypes.TeamLead_Lead, User.class);
+ }
+
+ public Collection<User> getPrivilegedMembers() throws OseeCoreException {
+ return getRelatedArtifacts(AtsRelationTypes.PrivilegedMember_Member, User.class);
+ }
+
+ /**
+ * Returns leads configured first by ActionableItems and only if this is an empty set, THEN defaults to those
+ * configured by TeamDefinitions. Use getLeads() to only get the leads configured for this TeamDefinitionArtifact.
+ *
+ * @return users configured as leads by ActionableItems, then by TeamDefinition
+ */
+ public Collection<User> getLeads(Collection<ActionableItemArtifact> actionableItems) throws OseeCoreException {
+ Set<User> leads = new HashSet<User>();
+ for (ActionableItemArtifact aia : actionableItems) {
+ if (aia.getImpactedTeamDefs().contains(this)) {
+ // If leads are specified for this aia, add them
+ if (aia.getLeads().size() > 0) {
+ leads.addAll(aia.getLeads());
+ } else {
+ for (TeamDefinitionArtifact teamDef : aia.getImpactedTeamDefs()) {
+ leads.addAll(teamDef.getLeads());
+ }
+ }
+ }
+ }
+ if (leads.isEmpty()) {
+ leads.addAll(getLeads());
+ }
+ return leads;
+ }
+
+ @SuppressWarnings("unchecked")
+ public Collection<User> getMembersAndLeads() throws OseeCoreException {
+ return Collections.setUnion(getMembers(), getLeads());
+ }
+
+ public Collection<User> getMembers() throws OseeCoreException {
+ return getRelatedArtifacts(AtsRelationTypes.TeamMember_Member, User.class);
+ }
+
+ public VersionArtifact getVersionArtifact(String name, boolean create) throws OseeCoreException {
+ for (VersionArtifact verArt : getVersionsArtifacts()) {
+ if (verArt.getName().equals(name)) {
+ return verArt;
+ }
+ }
+ if (create) {
+ return createVersion(name);
+ }
+ return null;
+ }
+
+ public VersionArtifact createVersion(String name) throws OseeCoreException {
+ VersionArtifact versionArt =
+ (VersionArtifact) ArtifactTypeManager.addArtifact(AtsArtifactTypes.Version, AtsUtil.getAtsBranch(), name);
+ addRelation(AtsRelationTypes.TeamDefinitionToVersion_Version, versionArt);
+ return versionArt;
+ }
+
+ public Collection<VersionArtifact> getVersionsArtifacts() throws OseeCoreException {
+ return getRelatedArtifacts(AtsRelationTypes.TeamDefinitionToVersion_Version, VersionArtifact.class);
+ }
+
+ public Collection<VersionArtifact> getVersionsArtifacts(VersionReleaseType releaseType) throws OseeCoreException {
+ ArrayList<VersionArtifact> versions = new ArrayList<VersionArtifact>();
+ for (VersionArtifact version : getVersionsArtifacts()) {
+ if (version.isReleased()) {
+ if (releaseType == VersionReleaseType.Released || releaseType == VersionReleaseType.Both) {
+ versions.add(version);
+ }
+ } else if (version.isVersionLocked()) {
+ if (releaseType == VersionReleaseType.VersionLocked || releaseType == VersionReleaseType.Both) {
+ versions.add(version);
+ }
+ } else {
+ if (releaseType == VersionReleaseType.UnReleased || releaseType == VersionReleaseType.Both) {
+ versions.add(version);
+ }
+ }
+ }
+ return versions;
+ }
+
+ public boolean isTeamUsesVersions() throws OseeCoreException {
return getSoleAttributeValue(AtsAttributeTypes.TeamUsesVersions, false);
- }
-
- public boolean isActionable() throws OseeCoreException {
+ }
+
+ public boolean isActionable() throws OseeCoreException {
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 \"" + ruleId + "\" does not exist.");
- } else {
- addRelation(CoreRelationTypes.WorkItem__Child, artifact);
- }
- }
- }
-
- public boolean hasWorkRule(String ruleId) throws OseeCoreException {
- for (Artifact art : getRelatedArtifacts(CoreRelationTypes.WorkItem__Child)) {
- if (art.getName().equals(ruleId)) {
- return true;
- }
- }
- return false;
- }
-
- /**
- * Returns the branch associated with this team. If this team does not have a branch associated then the parent team
- * will be asked, this results in a recursive look at parent teams until a parent artifact has a related branch or
- * the parent of a team is not a team. <br/>
- * <br/>
- * If no branch is associated then null will be returned.
- */
- public Branch getTeamBranch() throws OseeCoreException {
+ }
+
+ public void addWorkRule(String ruleId) throws OseeCoreException {
+ if (!hasWorkRule(ruleId)) {
+ Artifact artifact = WorkItemDefinitionFactory.getWorkItemDefinitionArtifact(ruleId);
+ if (artifact == null) {
+ throw new OseeArgumentException("Rule \"" + ruleId + "\" does not exist.");
+ } else {
+ addRelation(CoreRelationTypes.WorkItem__Child, artifact);
+ }
+ }
+ }
+
+ public boolean hasWorkRule(String ruleId) throws OseeCoreException {
+ for (Artifact art : getRelatedArtifacts(CoreRelationTypes.WorkItem__Child)) {
+ if (art.getName().equals(ruleId)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Returns the branch associated with this team. If this team does not have a branch associated then the parent team
+ * will be asked, this results in a recursive look at parent teams until a parent artifact has a related branch or
+ * the parent of a team is not a team. <br/>
+ * <br/>
+ * If no branch is associated then null will be returned.
+ */
+ public Branch getTeamBranch() throws OseeCoreException {
String guid = getSoleAttributeValue(AtsAttributeTypes.BaselineBranchGuid, null);
- if (GUID.isValid(guid)) {
- return BranchManager.getBranchByGuid(guid);
- } else {
- Artifact parent = getParent();
- if (parent instanceof TeamDefinitionArtifact) {
- return ((TeamDefinitionArtifact) parent).getTeamBranch();
- }
- }
- return null;
- }
-
- public static Set<TeamDefinitionArtifact> getTeamDefinitions(Collection<String> teamDefNames) throws OseeCoreException {
- Set<TeamDefinitionArtifact> teamDefs = new HashSet<TeamDefinitionArtifact>();
- for (String teamDefName : teamDefNames) {
- for (Artifact artifact : AtsCacheManager.getArtifactsByName(
- ArtifactTypeManager.getType(AtsArtifactTypes.TeamDefinition), teamDefName)) {
- teamDefs.add((TeamDefinitionArtifact) artifact);
- }
- }
- return teamDefs;
- }
-
- @Override
- public String getFullDisplayName() {
- return getName();
- }
-
-}
+ if (GUID.isValid(guid)) {
+ return BranchManager.getBranchByGuid(guid);
+ } else {
+ Artifact parent = getParent();
+ if (parent instanceof TeamDefinitionArtifact) {
+ return ((TeamDefinitionArtifact) parent).getTeamBranch();
+ }
+ }
+ return null;
+ }
+
+ public static Set<TeamDefinitionArtifact> getTeamDefinitions(Collection<String> teamDefNames) throws OseeCoreException {
+ Set<TeamDefinitionArtifact> teamDefs = new HashSet<TeamDefinitionArtifact>();
+ for (String teamDefName : teamDefNames) {
+ for (Artifact artifact : AtsCacheManager.getArtifactsByName(
+ ArtifactTypeManager.getType(AtsArtifactTypes.TeamDefinition), teamDefName)) {
+ teamDefs.add((TeamDefinitionArtifact) artifact);
+ }
+ }
+ return teamDefs;
+ }
+
+ @Override
+ public String getFullDisplayName() {
+ return getName();
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/TeamWorkFlowArtifact.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/TeamWorkFlowArtifact.java
index 03f7ad8531b..da037d8aeed 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/TeamWorkFlowArtifact.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/TeamWorkFlowArtifact.java
@@ -1,598 +1,598 @@
-/*******************************************************************************
- * 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.artifact;
-
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Date;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-import java.util.logging.Level;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.nebula.widgets.xviewer.XViewerCells;
-import org.eclipse.osee.ats.config.AtsCacheManager;
-import org.eclipse.osee.ats.internal.AtsPlugin;
-import org.eclipse.osee.ats.util.AtsBranchManager;
-import org.eclipse.osee.ats.util.AtsPriority.PriorityType;
-import org.eclipse.osee.ats.util.AtsRelationTypes;
-import org.eclipse.osee.ats.util.AtsUtil;
-import org.eclipse.osee.ats.util.widgets.ReviewManager;
-import org.eclipse.osee.ats.util.widgets.XActionableItemsDam;
-import org.eclipse.osee.ats.util.widgets.dialog.AICheckTreeDialog;
-import org.eclipse.osee.ats.workflow.item.AtsWorkDefinitions.RuleWorkItemId;
-import org.eclipse.osee.framework.core.enums.Active;
-import org.eclipse.osee.framework.core.exception.OseeArgumentException;
-import org.eclipse.osee.framework.core.exception.OseeCoreException;
-import org.eclipse.osee.framework.core.exception.OseeDataStoreException;
-import org.eclipse.osee.framework.core.exception.OseeStateException;
-import org.eclipse.osee.framework.core.model.Branch;
-import org.eclipse.osee.framework.core.model.type.ArtifactType;
-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.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.ArtifactFactory;
-import org.eclipse.osee.framework.skynet.core.artifact.IATSStateMachineArtifact;
-import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction;
-import org.eclipse.osee.framework.skynet.core.utility.Artifacts;
-import org.eclipse.osee.framework.ui.plugin.util.Result;
-import org.eclipse.osee.framework.ui.skynet.util.ChangeType;
-import org.eclipse.osee.framework.ui.skynet.widgets.IBranchArtifact;
-import org.eclipse.osee.framework.ui.skynet.widgets.XDate;
-import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkPageDefinition;
-import org.eclipse.osee.framework.ui.swt.Displays;
-
-/**
- * @author Donald G. Dunne
- */
-public class TeamWorkFlowArtifact extends TaskableStateMachineArtifact implements IBranchArtifact, IATSStateMachineArtifact {
-
- private XActionableItemsDam actionableItemsDam;
- private boolean targetedErrorLogged = false;
- private final AtsBranchManager branchMgr;
- public static enum DefaultTeamState {
- Endorse,
- Analyze,
- Authorize,
- Implement,
- Completed,
- Cancelled
- }
-
- public TeamWorkFlowArtifact(ArtifactFactory parentFactory, String guid, String humanReadableId, Branch branch, ArtifactType artifactType) throws OseeDataStoreException {
- super(parentFactory, guid, humanReadableId, branch, artifactType);
- registerAtsWorldRelation(AtsRelationTypes.TeamWorkflowToReview_Review);
- branchMgr = new AtsBranchManager(this);
- }
-
- @Override
- public void getSmaArtifactsOneLevel(StateMachineArtifact smaArtifact, Set<Artifact> artifacts) throws OseeCoreException {
- super.getSmaArtifactsOneLevel(smaArtifact, artifacts);
- try {
- if (getTargetedForVersion() != null) {
- artifacts.add(getTargetedForVersion());
- }
- artifacts.addAll(ReviewManager.getReviews(this));
- } catch (OseeCoreException ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
- }
-
- @Override
- public String getArtifactSuperTypeName() {
- return "Team Workflow";
- }
-
- @Override
- public void saveSMA(SkynetTransaction transaction) {
- super.saveSMA(transaction);
- try {
- getParentActionArtifact().resetAttributesOffChildren(transaction);
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, "Can't reset Action parent of children", ex);
- }
- }
-
- @Override
- public String getDescription() {
- try {
- return getSoleAttributeValue(AtsAttributeTypes.Description, "");
- } catch (Exception ex) {
- return "Error: " + ex.getLocalizedMessage();
- }
- }
-
- @Override
- public boolean isValidationRequired() throws OseeCoreException {
- return getSoleAttributeValue(AtsAttributeTypes.ValidationRequired, false);
- }
-
- @Override
- public int getWorldViewPercentRework() throws OseeCoreException {
- return getSoleAttributeValue(AtsAttributeTypes.PercentRework, 0);
- }
-
- @Override
- public Set<User> getPrivilegedUsers() {
- Set<User> users = new HashSet<User>();
- try {
- addPriviledgedUsersUpTeamDefinitionTree(getTeamDefinition(), users);
-
- WorkPageDefinition workPageDefinition = getWorkPageDefinition();
-
- // Add user if allowing privileged edit to all users
- if (!users.contains(UserManager.getUser()) && (workPageDefinition.hasWorkRule(RuleWorkItemId.atsAllowPriviledgedEditToAll.name()) || getTeamDefinition().hasWorkRule(
- RuleWorkItemId.atsAllowPriviledgedEditToAll.name()))) {
- users.add(UserManager.getUser());
- }
-
- // Add user if user is team member and rule exists
- if (!users.contains(UserManager.getUser()) && (workPageDefinition.hasWorkRule(RuleWorkItemId.atsAllowPriviledgedEditToTeamMember.name()) || getTeamDefinition().hasWorkRule(
- RuleWorkItemId.atsAllowPriviledgedEditToTeamMember.name()))) {
- if (getTeamDefinition().getMembers().contains(UserManager.getUser())) {
- users.add(UserManager.getUser());
- }
- }
-
- // Add user if team member is originator and rule exists
- if (!users.contains(UserManager.getUser()) && (workPageDefinition.hasWorkRule(RuleWorkItemId.atsAllowPriviledgedEditToTeamMemberAndOriginator.name()) || getTeamDefinition().hasWorkRule(
- RuleWorkItemId.atsAllowPriviledgedEditToTeamMemberAndOriginator.name()))) {
- if (getOriginator().equals(UserManager.getUser()) && getTeamDefinition().getMembers().contains(
- UserManager.getUser())) {
- users.add(UserManager.getUser());
- }
- }
-
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
- }
- return users;
- }
-
- @Override
- public String getEditorTitle() throws OseeCoreException {
- try {
- if (getWorldViewTargetedVersion() != null) {
- return getWorldViewType() + ": " + "[" + getWorldViewTargetedVersionStr() + "] - " + getName();
- }
- } catch (OseeCoreException ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
- return super.getEditorTitle();
- }
-
- @Override
- public void onInitializationComplete() throws OseeCoreException {
- super.onInitializationComplete();
- initializeSMA();
- }
-
- @Override
- protected void initializeSMA() throws OseeCoreException {
- super.initializeSMA();
- actionableItemsDam = new XActionableItemsDam(this);
- }
-
- public ChangeType getChangeType() throws OseeCoreException {
- return ChangeType.getChangeType(getSoleAttributeValue(AtsAttributeTypes.ChangeType, ""));
- }
-
- public void setChangeType(ChangeType type) throws OseeCoreException {
- setSoleAttributeValue(AtsAttributeTypes.ChangeType, type.name());
- }
-
- public PriorityType getPriority() throws OseeCoreException {
- return PriorityType.getPriority(getSoleAttributeValue(AtsAttributeTypes.PriorityType, ""));
- }
-
- public void setPriority(PriorityType type) throws OseeCoreException {
- setSoleAttributeValue(AtsAttributeTypes.PriorityType, type.getShortName());
- }
-
- /**
- * @return Returns the actionableItemsDam.
- */
- public XActionableItemsDam getActionableItemsDam() {
- return actionableItemsDam;
- }
-
- public void setTeamDefinition(TeamDefinitionArtifact tda) throws OseeCoreException {
- this.setSoleAttributeValue(AtsAttributeTypes.TeamDefinition, tda.getGuid());
- }
-
- public TeamDefinitionArtifact getTeamDefinition() throws OseeCoreException, OseeCoreException {
- String guid = this.getSoleAttributeValue(AtsAttributeTypes.TeamDefinition, "");
- if (!Strings.isValid(guid)) {
- throw new OseeArgumentException(
- "TeamWorkflow [" + getHumanReadableId() + "] has no TeamDefinition associated.");
- }
- return AtsCacheManager.getTeamDefinitionArtifact(guid);
- }
-
- public String getTeamName() {
- try {
- return getTeamDefinition().getName();
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- return XViewerCells.getCellExceptionString(ex);
- }
- }
-
- @Override
- public String getWorldViewType() {
- return getTeamName() + " Workflow";
- }
-
- @Override
- public ChangeType getWorldViewChangeType() throws OseeCoreException {
- return ChangeType.getChangeType(getSoleAttributeValue(AtsAttributeTypes.ChangeType, ""));
- }
-
- @Override
- public String getWorldViewPriority() throws OseeCoreException {
- return PriorityType.getPriority(getSoleAttributeValue(AtsAttributeTypes.PriorityType, "")).getShortName();
- }
-
- @Override
- public String getWorldViewUserCommunity() throws OseeCoreException {
- return getAttributesToString(AtsAttributeTypes.UserCommunity);
- }
-
- @Override
- public String getWorldViewActionableItems() throws OseeCoreException {
- return getActionableItemsDam().getActionableItemsStr();
- }
-
- @Override
- public void atsDelete(Set<Artifact> deleteArts, Map<Artifact, Object> allRelated) throws OseeCoreException {
- super.atsDelete(deleteArts, allRelated);
- for (ReviewSMArtifact reviewArt : ReviewManager.getReviews(this)) {
- reviewArt.atsDelete(deleteArts, allRelated);
- }
- }
-
- @Override
- public String getWorldViewTeam() {
- return getTeamName();
- }
-
- @Override
- public TeamWorkFlowArtifact getParentTeamWorkflow() {
- parentTeamArt = this;
- return parentTeamArt;
- }
-
- @Override
- public Artifact getParentAtsArtifact() throws OseeCoreException {
- return getParentActionArtifact();
- }
-
- @Override
- public ActionArtifact getParentActionArtifact() throws OseeCoreException {
- if (parentAction != null) {
- return parentAction;
- }
- Collection<ActionArtifact> arts =
- getRelatedArtifacts(AtsRelationTypes.ActionToWorkflow_Action, ActionArtifact.class);
- if (arts.isEmpty()) {
- throw new OseeStateException("Team " + getHumanReadableId() + " has no parent Action");
- } else if (arts.size() > 1) {
- throw new OseeStateException("Team " + getHumanReadableId() + " has multiple parent Actions");
- }
- parentAction = arts.iterator().next();
- return parentAction;
- }
-
- @Override
- public StateMachineArtifact getParentSMA() {
- return null;
- }
-
- @Override
- public String getWorldViewTargetedVersionStr() throws OseeCoreException {
- Collection<VersionArtifact> verArts =
- getRelatedArtifacts(AtsRelationTypes.TeamWorkflowTargetedForVersion_Version, VersionArtifact.class);
- if (verArts.isEmpty()) {
- return "";
- }
- if (verArts.size() > 1) {
- String errStr =
- "Workflow " + getHumanReadableId() + " targeted for multiple versions: " + Artifacts.commaArts(verArts);
- OseeLog.log(AtsPlugin.class, Level.SEVERE, errStr, null);
- return XViewerCells.getCellExceptionString(errStr);
- }
- VersionArtifact verArt = verArts.iterator().next();
- if (!isCompleted() && !isCancelled() && verArt.getSoleAttributeValue(AtsAttributeTypes.Released, false)) {
- String errStr =
- "Workflow " + getHumanReadableId() + " targeted for released version, but not completed: " + verArt;
- if (!targetedErrorLogged) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, errStr, null);
- targetedErrorLogged = true;
- }
- return XViewerCells.getCellExceptionString(errStr);
- }
- return verArt.getName();
- }
-
- @Override
- public VersionArtifact getWorldViewTargetedVersion() throws OseeCoreException {
- if (getRelatedArtifactsCount(AtsRelationTypes.TeamWorkflowTargetedForVersion_Version) > 0) {
- return (VersionArtifact) getRelatedArtifact(AtsRelationTypes.TeamWorkflowTargetedForVersion_Version);
- }
- return null;
- }
-
- @Override
- public String getHyperName() {
- try {
- return getEditorTitle();
- } catch (OseeCoreException ex) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
- }
- return getTeamName();
- }
-
- @Override
- public String getHyperTargetVersion() {
- try {
- return getWorldViewTargetedVersionStr().equals("") ? null : getWorldViewTargetedVersionStr();
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
- return null;
- }
-
- @Override
- public double getManHrsPerDayPreference() throws OseeCoreException {
- try {
- return getTeamDefinition().getManDayHrsFromItemAndChildren();
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
- return super.getManHrsPerDayPreference();
- }
-
- public Result editActionableItems() throws OseeCoreException {
- return getParentActionArtifact().editActionableItems();
- }
-
- public Result convertActionableItems() throws OseeCoreException {
- Result toReturn = Result.FalseResult;
- AICheckTreeDialog diag =
- new AICheckTreeDialog("Convert Impacted Actionable Items",
- "NOTE: This should NOT be the normal path to changing actionable items.\n\nIf a team has " +
- //
- "determined " + "that there is NO impact and that another actionable items IS impacted:\n" +
- //
- " 1) Cancel this operation\n" + " 2) Select \"Edit Actionable Items\" to add/remove " +
- //
- "impacted items \n" + " which will create new teams as needed.\n" +
- //
- " 3) Then cancel the team that has no impacts.\n Doing this will show that the original " +
- //
- "team analyzed the impact\n" + " and determined that there was no change.\n\n" + "However, " +
- //
- "there are some cases where an impacted item was incorrectly chosen\n" + "and the original team " +
- //
- "does not need to do anything, this dialog will purge the\n" + "team from the DB as if it was " +
- //
- "never chosen.\n\n" + "Current Actionable Item(s): " + getWorldViewActionableItems() + "\n" +
- //
- "Current Team: " + getTeamDefinition().getName() + "\n" +
- //
- "Select SINGLE Actionable Item below to convert this workflow to.\n\n" +
- //
- "You will be prompted to confirm this conversion.", Active.Both);
-
- diag.setInput(ActionableItemArtifact.getTopLevelActionableItems(Active.Both));
- if (diag.open() != 0) {
- return Result.FalseResult;
- }
- if (diag.getChecked().isEmpty()) {
- return new Result("At least one actionable item must must be selected.");
- }
- if (diag.getChecked().size() > 1) {
- return new Result("Only ONE actionable item can be selected for converts");
- }
- ActionableItemArtifact selectedAia = diag.getChecked().iterator().next();
- Collection<TeamDefinitionArtifact> teamDefs =
- ActionableItemArtifact.getImpactedTeamDefs(Arrays.asList(selectedAia));
- if (teamDefs.size() != 1) {
- toReturn = new Result("Single team can not retrieved for " + selectedAia.getName());
- } else {
- TeamDefinitionArtifact newTeamDef = teamDefs.iterator().next();
- if (newTeamDef.equals(getTeamDefinition())) {
- toReturn =
- new Result(
- "Actionable Item selected belongs to same team as currently selected team.\n" + "Use \"Edit Actionable Items\" instaed.");
- } else {
- StringBuffer sb = new StringBuffer();
- sb.append("Converting...");
- sb.append("\nActionable Item(s): " + getWorldViewActionableItems());
- sb.append("\nTeam: " + getTeamDefinition().getName());
- sb.append("\nto\nActionable Item(s): " + selectedAia);
- sb.append("\nTeam: " + newTeamDef.getName());
- if (MessageDialog.openConfirm(Displays.getActiveShell(), "Confirm Convert", sb.toString())) {
- Set<ActionableItemArtifact> toProcess = new HashSet<ActionableItemArtifact>();
- toProcess.add(selectedAia);
- toReturn = actionableItemsTx(AtsUtil.getAtsBranch(), toProcess, newTeamDef);
- }
- }
- }
- return toReturn;
- }
-
- @Override
- public String getWorldViewDescription() throws OseeCoreException {
- return getSoleAttributeValue(AtsAttributeTypes.Description, "");
- }
-
- /**
- * If targeted for version exists, return that estimated date. Else, if attribute is set, return that date. Else
- * null.
- */
- @Override
- public Date getWorldViewEstimatedReleaseDate() throws OseeCoreException {
- Collection<VersionArtifact> vers =
- getRelatedArtifacts(AtsRelationTypes.TeamWorkflowTargetedForVersion_Version, VersionArtifact.class);
- Date date = null;
- if (vers.size() > 0) {
- date = vers.iterator().next().getEstimatedReleaseDate();
- if (date == null) {
- date = getSoleAttributeValue(AtsAttributeTypes.EstimatedReleaseDate, null);
- }
- } else {
- date = getSoleAttributeValue(AtsAttributeTypes.EstimatedReleaseDate, null);
- }
- return date;
- }
-
- /**
- * If targeted for version exists, return that estimated date. Else, if attribute is set, return that date. Else
- * null.
- */
- @Override
- public Date getWorldViewReleaseDate() throws OseeCoreException {
- Collection<VersionArtifact> vers =
- getRelatedArtifacts(AtsRelationTypes.TeamWorkflowTargetedForVersion_Version, VersionArtifact.class);
- Date date = null;
- if (vers.size() > 0) {
- date = vers.iterator().next().getReleaseDate();
- if (date == null) {
- date = getSoleAttributeValue(AtsAttributeTypes.ReleaseDate, null);
- }
- } else {
- date = getSoleAttributeValue(AtsAttributeTypes.ReleaseDate, null);
- }
- return date;
- }
-
- @Override
- public Collection<User> getImplementers() throws OseeCoreException {
- return getImplementersByState(DefaultTeamState.Implement.name());
- }
-
- @Override
- public String getWorldViewDeadlineDateStr() throws OseeCoreException {
- Date date = getWorldViewDeadlineDate();
- if (date != null) {
- return XDate.getDateStr(date, XDate.MMDDYY);
- }
- return "";
- }
-
- @Override
- public Date getWorldViewDeadlineDate() throws OseeCoreException {
- return getSoleAttributeValue(AtsAttributeTypes.NeedBy, null);
- }
-
- @Override
- public double getWorldViewWeeklyBenefit() throws OseeCoreException {
- if (isAttributeTypeValid(AtsAttributeTypes.WeeklyBenefit)) {
- return 0;
- }
- String value = getSoleAttributeValue(AtsAttributeTypes.WeeklyBenefit, "");
- if (!Strings.isValid(value)) {
- return 0;
- }
- return new Float(value).doubleValue();
- }
-
- @Override
- public double getWorldViewAnnualCostAvoidance() throws OseeCoreException {
- double benefit = getWorldViewWeeklyBenefit();
- double remainHrs = getRemainHoursTotal();
- return benefit * 52 - remainHrs;
- }
-
- private Result actionableItemsTx(Branch branch, Set<ActionableItemArtifact> selectedAlias, TeamDefinitionArtifact teamDefinition) throws OseeCoreException {
- Result workResult = actionableItemsDam.setActionableItems(selectedAlias);
- if (workResult.isTrue()) {
- if (teamDefinition != null) {
- setTeamDefinition(teamDefinition);
- }
- SkynetTransaction transaction = new SkynetTransaction(branch, "Converate Actionable Item");
- getParentActionArtifact().resetAttributesOffChildren(transaction);
- persist(transaction);
- transaction.execute();
- }
- return workResult;
- }
-
- @Override
- public String getWorldViewBranchStatus() {
- try {
- if (getBranchMgr().isWorkingBranchInWork()) {
- return "Working";
- } else if (getBranchMgr().isCommittedBranchExists()) {
- if (!getBranchMgr().isAllObjectsToCommitToConfigured() || !getBranchMgr().isBranchesAllCommitted()) {
- return "Needs Commit";
- }
- return "Committed";
- }
- return "";
- } catch (Exception ex) {
- return "Exception: " + ex.getLocalizedMessage();
- }
- }
-
- @Override
- public Artifact getArtifact() {
- return this;
- }
-
- @Override
- public Branch getWorkingBranch() throws OseeCoreException {
- return getBranchMgr().getWorkingBranch();
- }
-
- @Override
- public String getWorldViewParentID() throws OseeCoreException {
- return getParentActionArtifact().getHumanReadableId();
- }
-
- @Override
- public Date getWorldViewEstimatedCompletionDate() throws OseeCoreException {
- Date date = super.getWorldViewEstimatedCompletionDate();
- if (date == null) {
- date = getWorldViewEstimatedReleaseDate();
- }
- return date;
- }
-
- public AtsBranchManager getBranchMgr() {
- return branchMgr;
- }
-
- /**
- * 5-9 character short name for UI and display purposes
- */
- public String getArtifactTypeShortName() {
- return "";
- }
-
- public String getBranchName() {
- String smaTitle = getName();
- if (smaTitle.length() > 40) {
- smaTitle = smaTitle.substring(0, 39) + "...";
- }
- if (Strings.isValid(getArtifactTypeShortName())) {
- return String.format("%s - %s - %s", getHumanReadableId(), getArtifactTypeShortName(), smaTitle);
- } else {
- return String.format("%s - %s", getHumanReadableId(), smaTitle);
- }
- }
-
-}
+/*******************************************************************************
+ * 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.artifact;
+
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+import java.util.logging.Level;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.nebula.widgets.xviewer.XViewerCells;
+import org.eclipse.osee.ats.config.AtsCacheManager;
+import org.eclipse.osee.ats.internal.AtsPlugin;
+import org.eclipse.osee.ats.util.AtsBranchManager;
+import org.eclipse.osee.ats.util.AtsPriority.PriorityType;
+import org.eclipse.osee.ats.util.AtsRelationTypes;
+import org.eclipse.osee.ats.util.AtsUtil;
+import org.eclipse.osee.ats.util.widgets.ReviewManager;
+import org.eclipse.osee.ats.util.widgets.XActionableItemsDam;
+import org.eclipse.osee.ats.util.widgets.dialog.AICheckTreeDialog;
+import org.eclipse.osee.ats.workflow.item.AtsWorkDefinitions.RuleWorkItemId;
+import org.eclipse.osee.framework.core.enums.Active;
+import org.eclipse.osee.framework.core.exception.OseeArgumentException;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.core.exception.OseeDataStoreException;
+import org.eclipse.osee.framework.core.exception.OseeStateException;
+import org.eclipse.osee.framework.core.model.Branch;
+import org.eclipse.osee.framework.core.model.type.ArtifactType;
+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.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.ArtifactFactory;
+import org.eclipse.osee.framework.skynet.core.artifact.IATSStateMachineArtifact;
+import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction;
+import org.eclipse.osee.framework.skynet.core.utility.Artifacts;
+import org.eclipse.osee.framework.ui.plugin.util.Result;
+import org.eclipse.osee.framework.ui.skynet.util.ChangeType;
+import org.eclipse.osee.framework.ui.skynet.widgets.IBranchArtifact;
+import org.eclipse.osee.framework.ui.skynet.widgets.XDate;
+import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkPageDefinition;
+import org.eclipse.osee.framework.ui.swt.Displays;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class TeamWorkFlowArtifact extends TaskableStateMachineArtifact implements IBranchArtifact, IATSStateMachineArtifact {
+
+ private XActionableItemsDam actionableItemsDam;
+ private boolean targetedErrorLogged = false;
+ private final AtsBranchManager branchMgr;
+ public static enum DefaultTeamState {
+ Endorse,
+ Analyze,
+ Authorize,
+ Implement,
+ Completed,
+ Cancelled
+ }
+
+ public TeamWorkFlowArtifact(ArtifactFactory parentFactory, String guid, String humanReadableId, Branch branch, ArtifactType artifactType) throws OseeDataStoreException {
+ super(parentFactory, guid, humanReadableId, branch, artifactType);
+ registerAtsWorldRelation(AtsRelationTypes.TeamWorkflowToReview_Review);
+ branchMgr = new AtsBranchManager(this);
+ }
+
+ @Override
+ public void getSmaArtifactsOneLevel(StateMachineArtifact smaArtifact, Set<Artifact> artifacts) throws OseeCoreException {
+ super.getSmaArtifactsOneLevel(smaArtifact, artifacts);
+ try {
+ if (getTargetedForVersion() != null) {
+ artifacts.add(getTargetedForVersion());
+ }
+ artifacts.addAll(ReviewManager.getReviews(this));
+ } catch (OseeCoreException ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ }
+ }
+
+ @Override
+ public String getArtifactSuperTypeName() {
+ return "Team Workflow";
+ }
+
+ @Override
+ public void saveSMA(SkynetTransaction transaction) {
+ super.saveSMA(transaction);
+ try {
+ getParentActionArtifact().resetAttributesOffChildren(transaction);
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, "Can't reset Action parent of children", ex);
+ }
+ }
+
+ @Override
+ public String getDescription() {
+ try {
+ return getSoleAttributeValue(AtsAttributeTypes.Description, "");
+ } catch (Exception ex) {
+ return "Error: " + ex.getLocalizedMessage();
+ }
+ }
+
+ @Override
+ public boolean isValidationRequired() throws OseeCoreException {
+ return getSoleAttributeValue(AtsAttributeTypes.ValidationRequired, false);
+ }
+
+ @Override
+ public int getWorldViewPercentRework() throws OseeCoreException {
+ return getSoleAttributeValue(AtsAttributeTypes.PercentRework, 0);
+ }
+
+ @Override
+ public Set<User> getPrivilegedUsers() {
+ Set<User> users = new HashSet<User>();
+ try {
+ addPriviledgedUsersUpTeamDefinitionTree(getTeamDefinition(), users);
+
+ WorkPageDefinition workPageDefinition = getWorkPageDefinition();
+
+ // Add user if allowing privileged edit to all users
+ if (!users.contains(UserManager.getUser()) && (workPageDefinition.hasWorkRule(RuleWorkItemId.atsAllowPriviledgedEditToAll.name()) || getTeamDefinition().hasWorkRule(
+ RuleWorkItemId.atsAllowPriviledgedEditToAll.name()))) {
+ users.add(UserManager.getUser());
+ }
+
+ // Add user if user is team member and rule exists
+ if (!users.contains(UserManager.getUser()) && (workPageDefinition.hasWorkRule(RuleWorkItemId.atsAllowPriviledgedEditToTeamMember.name()) || getTeamDefinition().hasWorkRule(
+ RuleWorkItemId.atsAllowPriviledgedEditToTeamMember.name()))) {
+ if (getTeamDefinition().getMembers().contains(UserManager.getUser())) {
+ users.add(UserManager.getUser());
+ }
+ }
+
+ // Add user if team member is originator and rule exists
+ if (!users.contains(UserManager.getUser()) && (workPageDefinition.hasWorkRule(RuleWorkItemId.atsAllowPriviledgedEditToTeamMemberAndOriginator.name()) || getTeamDefinition().hasWorkRule(
+ RuleWorkItemId.atsAllowPriviledgedEditToTeamMemberAndOriginator.name()))) {
+ if (getOriginator().equals(UserManager.getUser()) && getTeamDefinition().getMembers().contains(
+ UserManager.getUser())) {
+ users.add(UserManager.getUser());
+ }
+ }
+
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
+ }
+ return users;
+ }
+
+ @Override
+ public String getEditorTitle() throws OseeCoreException {
+ try {
+ if (getWorldViewTargetedVersion() != null) {
+ return getWorldViewType() + ": " + "[" + getWorldViewTargetedVersionStr() + "] - " + getName();
+ }
+ } catch (OseeCoreException ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ }
+ return super.getEditorTitle();
+ }
+
+ @Override
+ public void onInitializationComplete() throws OseeCoreException {
+ super.onInitializationComplete();
+ initializeSMA();
+ }
+
+ @Override
+ protected void initializeSMA() throws OseeCoreException {
+ super.initializeSMA();
+ actionableItemsDam = new XActionableItemsDam(this);
+ }
+
+ public ChangeType getChangeType() throws OseeCoreException {
+ return ChangeType.getChangeType(getSoleAttributeValue(AtsAttributeTypes.ChangeType, ""));
+ }
+
+ public void setChangeType(ChangeType type) throws OseeCoreException {
+ setSoleAttributeValue(AtsAttributeTypes.ChangeType, type.name());
+ }
+
+ public PriorityType getPriority() throws OseeCoreException {
+ return PriorityType.getPriority(getSoleAttributeValue(AtsAttributeTypes.PriorityType, ""));
+ }
+
+ public void setPriority(PriorityType type) throws OseeCoreException {
+ setSoleAttributeValue(AtsAttributeTypes.PriorityType, type.getShortName());
+ }
+
+ /**
+ * @return Returns the actionableItemsDam.
+ */
+ public XActionableItemsDam getActionableItemsDam() {
+ return actionableItemsDam;
+ }
+
+ public void setTeamDefinition(TeamDefinitionArtifact tda) throws OseeCoreException {
+ this.setSoleAttributeValue(AtsAttributeTypes.TeamDefinition, tda.getGuid());
+ }
+
+ public TeamDefinitionArtifact getTeamDefinition() throws OseeCoreException, OseeCoreException {
+ String guid = this.getSoleAttributeValue(AtsAttributeTypes.TeamDefinition, "");
+ if (!Strings.isValid(guid)) {
+ throw new OseeArgumentException(
+ "TeamWorkflow [" + getHumanReadableId() + "] has no TeamDefinition associated.");
+ }
+ return AtsCacheManager.getTeamDefinitionArtifact(guid);
+ }
+
+ public String getTeamName() {
+ try {
+ return getTeamDefinition().getName();
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ return XViewerCells.getCellExceptionString(ex);
+ }
+ }
+
+ @Override
+ public String getWorldViewType() {
+ return getTeamName() + " Workflow";
+ }
+
+ @Override
+ public ChangeType getWorldViewChangeType() throws OseeCoreException {
+ return ChangeType.getChangeType(getSoleAttributeValue(AtsAttributeTypes.ChangeType, ""));
+ }
+
+ @Override
+ public String getWorldViewPriority() throws OseeCoreException {
+ return PriorityType.getPriority(getSoleAttributeValue(AtsAttributeTypes.PriorityType, "")).getShortName();
+ }
+
+ @Override
+ public String getWorldViewUserCommunity() throws OseeCoreException {
+ return getAttributesToString(AtsAttributeTypes.UserCommunity);
+ }
+
+ @Override
+ public String getWorldViewActionableItems() throws OseeCoreException {
+ return getActionableItemsDam().getActionableItemsStr();
+ }
+
+ @Override
+ public void atsDelete(Set<Artifact> deleteArts, Map<Artifact, Object> allRelated) throws OseeCoreException {
+ super.atsDelete(deleteArts, allRelated);
+ for (ReviewSMArtifact reviewArt : ReviewManager.getReviews(this)) {
+ reviewArt.atsDelete(deleteArts, allRelated);
+ }
+ }
+
+ @Override
+ public String getWorldViewTeam() {
+ return getTeamName();
+ }
+
+ @Override
+ public TeamWorkFlowArtifact getParentTeamWorkflow() {
+ parentTeamArt = this;
+ return parentTeamArt;
+ }
+
+ @Override
+ public Artifact getParentAtsArtifact() throws OseeCoreException {
+ return getParentActionArtifact();
+ }
+
+ @Override
+ public ActionArtifact getParentActionArtifact() throws OseeCoreException {
+ if (parentAction != null) {
+ return parentAction;
+ }
+ Collection<ActionArtifact> arts =
+ getRelatedArtifacts(AtsRelationTypes.ActionToWorkflow_Action, ActionArtifact.class);
+ if (arts.isEmpty()) {
+ throw new OseeStateException("Team " + getHumanReadableId() + " has no parent Action");
+ } else if (arts.size() > 1) {
+ throw new OseeStateException("Team " + getHumanReadableId() + " has multiple parent Actions");
+ }
+ parentAction = arts.iterator().next();
+ return parentAction;
+ }
+
+ @Override
+ public StateMachineArtifact getParentSMA() {
+ return null;
+ }
+
+ @Override
+ public String getWorldViewTargetedVersionStr() throws OseeCoreException {
+ Collection<VersionArtifact> verArts =
+ getRelatedArtifacts(AtsRelationTypes.TeamWorkflowTargetedForVersion_Version, VersionArtifact.class);
+ if (verArts.isEmpty()) {
+ return "";
+ }
+ if (verArts.size() > 1) {
+ String errStr =
+ "Workflow " + getHumanReadableId() + " targeted for multiple versions: " + Artifacts.commaArts(verArts);
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, errStr, null);
+ return XViewerCells.getCellExceptionString(errStr);
+ }
+ VersionArtifact verArt = verArts.iterator().next();
+ if (!isCompleted() && !isCancelled() && verArt.getSoleAttributeValue(AtsAttributeTypes.Released, false)) {
+ String errStr =
+ "Workflow " + getHumanReadableId() + " targeted for released version, but not completed: " + verArt;
+ if (!targetedErrorLogged) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, errStr, null);
+ targetedErrorLogged = true;
+ }
+ return XViewerCells.getCellExceptionString(errStr);
+ }
+ return verArt.getName();
+ }
+
+ @Override
+ public VersionArtifact getWorldViewTargetedVersion() throws OseeCoreException {
+ if (getRelatedArtifactsCount(AtsRelationTypes.TeamWorkflowTargetedForVersion_Version) > 0) {
+ return (VersionArtifact) getRelatedArtifact(AtsRelationTypes.TeamWorkflowTargetedForVersion_Version);
+ }
+ return null;
+ }
+
+ @Override
+ public String getHyperName() {
+ try {
+ return getEditorTitle();
+ } catch (OseeCoreException ex) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
+ }
+ return getTeamName();
+ }
+
+ @Override
+ public String getHyperTargetVersion() {
+ try {
+ return getWorldViewTargetedVersionStr().equals("") ? null : getWorldViewTargetedVersionStr();
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ }
+ return null;
+ }
+
+ @Override
+ public double getManHrsPerDayPreference() throws OseeCoreException {
+ try {
+ return getTeamDefinition().getManDayHrsFromItemAndChildren();
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ }
+ return super.getManHrsPerDayPreference();
+ }
+
+ public Result editActionableItems() throws OseeCoreException {
+ return getParentActionArtifact().editActionableItems();
+ }
+
+ public Result convertActionableItems() throws OseeCoreException {
+ Result toReturn = Result.FalseResult;
+ AICheckTreeDialog diag =
+ new AICheckTreeDialog("Convert Impacted Actionable Items",
+ "NOTE: This should NOT be the normal path to changing actionable items.\n\nIf a team has " +
+ //
+ "determined " + "that there is NO impact and that another actionable items IS impacted:\n" +
+ //
+ " 1) Cancel this operation\n" + " 2) Select \"Edit Actionable Items\" to add/remove " +
+ //
+ "impacted items \n" + " which will create new teams as needed.\n" +
+ //
+ " 3) Then cancel the team that has no impacts.\n Doing this will show that the original " +
+ //
+ "team analyzed the impact\n" + " and determined that there was no change.\n\n" + "However, " +
+ //
+ "there are some cases where an impacted item was incorrectly chosen\n" + "and the original team " +
+ //
+ "does not need to do anything, this dialog will purge the\n" + "team from the DB as if it was " +
+ //
+ "never chosen.\n\n" + "Current Actionable Item(s): " + getWorldViewActionableItems() + "\n" +
+ //
+ "Current Team: " + getTeamDefinition().getName() + "\n" +
+ //
+ "Select SINGLE Actionable Item below to convert this workflow to.\n\n" +
+ //
+ "You will be prompted to confirm this conversion.", Active.Both);
+
+ diag.setInput(ActionableItemArtifact.getTopLevelActionableItems(Active.Both));
+ if (diag.open() != 0) {
+ return Result.FalseResult;
+ }
+ if (diag.getChecked().isEmpty()) {
+ return new Result("At least one actionable item must must be selected.");
+ }
+ if (diag.getChecked().size() > 1) {
+ return new Result("Only ONE actionable item can be selected for converts");
+ }
+ ActionableItemArtifact selectedAia = diag.getChecked().iterator().next();
+ Collection<TeamDefinitionArtifact> teamDefs =
+ ActionableItemArtifact.getImpactedTeamDefs(Arrays.asList(selectedAia));
+ if (teamDefs.size() != 1) {
+ toReturn = new Result("Single team can not retrieved for " + selectedAia.getName());
+ } else {
+ TeamDefinitionArtifact newTeamDef = teamDefs.iterator().next();
+ if (newTeamDef.equals(getTeamDefinition())) {
+ toReturn =
+ new Result(
+ "Actionable Item selected belongs to same team as currently selected team.\n" + "Use \"Edit Actionable Items\" instaed.");
+ } else {
+ StringBuffer sb = new StringBuffer();
+ sb.append("Converting...");
+ sb.append("\nActionable Item(s): " + getWorldViewActionableItems());
+ sb.append("\nTeam: " + getTeamDefinition().getName());
+ sb.append("\nto\nActionable Item(s): " + selectedAia);
+ sb.append("\nTeam: " + newTeamDef.getName());
+ if (MessageDialog.openConfirm(Displays.getActiveShell(), "Confirm Convert", sb.toString())) {
+ Set<ActionableItemArtifact> toProcess = new HashSet<ActionableItemArtifact>();
+ toProcess.add(selectedAia);
+ toReturn = actionableItemsTx(AtsUtil.getAtsBranch(), toProcess, newTeamDef);
+ }
+ }
+ }
+ return toReturn;
+ }
+
+ @Override
+ public String getWorldViewDescription() throws OseeCoreException {
+ return getSoleAttributeValue(AtsAttributeTypes.Description, "");
+ }
+
+ /**
+ * If targeted for version exists, return that estimated date. Else, if attribute is set, return that date. Else
+ * null.
+ */
+ @Override
+ public Date getWorldViewEstimatedReleaseDate() throws OseeCoreException {
+ Collection<VersionArtifact> vers =
+ getRelatedArtifacts(AtsRelationTypes.TeamWorkflowTargetedForVersion_Version, VersionArtifact.class);
+ Date date = null;
+ if (vers.size() > 0) {
+ date = vers.iterator().next().getEstimatedReleaseDate();
+ if (date == null) {
+ date = getSoleAttributeValue(AtsAttributeTypes.EstimatedReleaseDate, null);
+ }
+ } else {
+ date = getSoleAttributeValue(AtsAttributeTypes.EstimatedReleaseDate, null);
+ }
+ return date;
+ }
+
+ /**
+ * If targeted for version exists, return that estimated date. Else, if attribute is set, return that date. Else
+ * null.
+ */
+ @Override
+ public Date getWorldViewReleaseDate() throws OseeCoreException {
+ Collection<VersionArtifact> vers =
+ getRelatedArtifacts(AtsRelationTypes.TeamWorkflowTargetedForVersion_Version, VersionArtifact.class);
+ Date date = null;
+ if (vers.size() > 0) {
+ date = vers.iterator().next().getReleaseDate();
+ if (date == null) {
+ date = getSoleAttributeValue(AtsAttributeTypes.ReleaseDate, null);
+ }
+ } else {
+ date = getSoleAttributeValue(AtsAttributeTypes.ReleaseDate, null);
+ }
+ return date;
+ }
+
+ @Override
+ public Collection<User> getImplementers() throws OseeCoreException {
+ return getImplementersByState(DefaultTeamState.Implement.name());
+ }
+
+ @Override
+ public String getWorldViewDeadlineDateStr() throws OseeCoreException {
+ Date date = getWorldViewDeadlineDate();
+ if (date != null) {
+ return XDate.getDateStr(date, XDate.MMDDYY);
+ }
+ return "";
+ }
+
+ @Override
+ public Date getWorldViewDeadlineDate() throws OseeCoreException {
+ return getSoleAttributeValue(AtsAttributeTypes.NeedBy, null);
+ }
+
+ @Override
+ public double getWorldViewWeeklyBenefit() throws OseeCoreException {
+ if (isAttributeTypeValid(AtsAttributeTypes.WeeklyBenefit)) {
+ return 0;
+ }
+ String value = getSoleAttributeValue(AtsAttributeTypes.WeeklyBenefit, "");
+ if (!Strings.isValid(value)) {
+ return 0;
+ }
+ return new Float(value).doubleValue();
+ }
+
+ @Override
+ public double getWorldViewAnnualCostAvoidance() throws OseeCoreException {
+ double benefit = getWorldViewWeeklyBenefit();
+ double remainHrs = getRemainHoursTotal();
+ return benefit * 52 - remainHrs;
+ }
+
+ private Result actionableItemsTx(Branch branch, Set<ActionableItemArtifact> selectedAlias, TeamDefinitionArtifact teamDefinition) throws OseeCoreException {
+ Result workResult = actionableItemsDam.setActionableItems(selectedAlias);
+ if (workResult.isTrue()) {
+ if (teamDefinition != null) {
+ setTeamDefinition(teamDefinition);
+ }
+ SkynetTransaction transaction = new SkynetTransaction(branch, "Converate Actionable Item");
+ getParentActionArtifact().resetAttributesOffChildren(transaction);
+ persist(transaction);
+ transaction.execute();
+ }
+ return workResult;
+ }
+
+ @Override
+ public String getWorldViewBranchStatus() {
+ try {
+ if (getBranchMgr().isWorkingBranchInWork()) {
+ return "Working";
+ } else if (getBranchMgr().isCommittedBranchExists()) {
+ if (!getBranchMgr().isAllObjectsToCommitToConfigured() || !getBranchMgr().isBranchesAllCommitted()) {
+ return "Needs Commit";
+ }
+ return "Committed";
+ }
+ return "";
+ } catch (Exception ex) {
+ return "Exception: " + ex.getLocalizedMessage();
+ }
+ }
+
+ @Override
+ public Artifact getArtifact() {
+ return this;
+ }
+
+ @Override
+ public Branch getWorkingBranch() throws OseeCoreException {
+ return getBranchMgr().getWorkingBranch();
+ }
+
+ @Override
+ public String getWorldViewParentID() throws OseeCoreException {
+ return getParentActionArtifact().getHumanReadableId();
+ }
+
+ @Override
+ public Date getWorldViewEstimatedCompletionDate() throws OseeCoreException {
+ Date date = super.getWorldViewEstimatedCompletionDate();
+ if (date == null) {
+ date = getWorldViewEstimatedReleaseDate();
+ }
+ return date;
+ }
+
+ public AtsBranchManager getBranchMgr() {
+ return branchMgr;
+ }
+
+ /**
+ * 5-9 character short name for UI and display purposes
+ */
+ public String getArtifactTypeShortName() {
+ return "";
+ }
+
+ public String getBranchName() {
+ String smaTitle = getName();
+ if (smaTitle.length() > 40) {
+ smaTitle = smaTitle.substring(0, 39) + "...";
+ }
+ if (Strings.isValid(getArtifactTypeShortName())) {
+ return String.format("%s - %s - %s", getHumanReadableId(), getArtifactTypeShortName(), smaTitle);
+ } else {
+ return String.format("%s - %s", getHumanReadableId(), smaTitle);
+ }
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/TeamWorkflowExtensions.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/TeamWorkflowExtensions.java
index 70010b7f4bc..eaa749c3cc7 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/TeamWorkflowExtensions.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/TeamWorkflowExtensions.java
@@ -1,92 +1,92 @@
-/*******************************************************************************
- * 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.artifact;
-
-import java.util.HashSet;
-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.osee.ats.actions.wizard.IAtsTeamWorkflow;
-import org.eclipse.osee.ats.internal.AtsPlugin;
-import org.eclipse.osee.ats.util.AtsArtifactTypes;
-import org.eclipse.osee.framework.core.data.IArtifactType;
-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;
-
-/**
- * @author Donald G. Dunne
- */
-public class TeamWorkflowExtensions {
-
- private static TeamWorkflowExtensions instance = new TeamWorkflowExtensions();
- private static Set<IAtsTeamWorkflow> teamWorkflowExtensionItems;
-
- private TeamWorkflowExtensions() {
- instance = this;
- }
-
- public static TeamWorkflowExtensions getInstance() {
- return instance;
- }
-
- public Set<IArtifactType> getAllTeamWorkflowArtifactTypes() throws OseeCoreException {
- Set<IArtifactType> artifactTypes = new HashSet<IArtifactType>();
- artifactTypes.add(AtsArtifactTypes.TeamWorkflow);
- for (IAtsTeamWorkflow ext : getAtsTeamWorkflowExtensions()) {
- artifactTypes.addAll(ext.getTeamWorkflowArtifactNames());
- }
- return artifactTypes;
- }
-
- /*
- * due to lazy initialization, this function is non-reentrant therefore, the synchronized keyword is necessary
- */
- public synchronized Set<IAtsTeamWorkflow> getAtsTeamWorkflowExtensions() {
- if (teamWorkflowExtensionItems != null) {
- return teamWorkflowExtensionItems;
- }
- teamWorkflowExtensionItems = new HashSet<IAtsTeamWorkflow>();
-
- IExtensionPoint point = Platform.getExtensionRegistry().getExtensionPoint("org.eclipse.osee.ats.AtsTeamWorkflow");
- if (point == null) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, "Can't access AtsTeamWorkflow extension point");
- return teamWorkflowExtensionItems;
- }
- IExtension[] extensions = point.getExtensions();
- for (IExtension extension : extensions) {
- IConfigurationElement[] elements = extension.getConfigurationElements();
- String classname = null;
- String bundleName = null;
- for (IConfigurationElement el : elements) {
- if (el.getName().equals("AtsTeamWorkflow")) {
- classname = el.getAttribute("classname");
- bundleName = el.getContributor().getName();
- if (classname != null && bundleName != null) {
- Bundle bundle = Platform.getBundle(bundleName);
- try {
- Class<?> taskClass = bundle.loadClass(classname);
- Object obj = taskClass.newInstance();
- teamWorkflowExtensionItems.add((IAtsTeamWorkflow) obj);
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, "Error loading AtsTeamWorkflow extension", ex);
- }
- }
- }
- }
- }
- return teamWorkflowExtensionItems;
- }
-
-}
+/*******************************************************************************
+ * 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.artifact;
+
+import java.util.HashSet;
+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.osee.ats.actions.wizard.IAtsTeamWorkflow;
+import org.eclipse.osee.ats.internal.AtsPlugin;
+import org.eclipse.osee.ats.util.AtsArtifactTypes;
+import org.eclipse.osee.framework.core.data.IArtifactType;
+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;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class TeamWorkflowExtensions {
+
+ private static TeamWorkflowExtensions instance = new TeamWorkflowExtensions();
+ private static Set<IAtsTeamWorkflow> teamWorkflowExtensionItems;
+
+ private TeamWorkflowExtensions() {
+ instance = this;
+ }
+
+ public static TeamWorkflowExtensions getInstance() {
+ return instance;
+ }
+
+ public Set<IArtifactType> getAllTeamWorkflowArtifactTypes() throws OseeCoreException {
+ Set<IArtifactType> artifactTypes = new HashSet<IArtifactType>();
+ artifactTypes.add(AtsArtifactTypes.TeamWorkflow);
+ for (IAtsTeamWorkflow ext : getAtsTeamWorkflowExtensions()) {
+ artifactTypes.addAll(ext.getTeamWorkflowArtifactNames());
+ }
+ return artifactTypes;
+ }
+
+ /*
+ * due to lazy initialization, this function is non-reentrant therefore, the synchronized keyword is necessary
+ */
+ public synchronized Set<IAtsTeamWorkflow> getAtsTeamWorkflowExtensions() {
+ if (teamWorkflowExtensionItems != null) {
+ return teamWorkflowExtensionItems;
+ }
+ teamWorkflowExtensionItems = new HashSet<IAtsTeamWorkflow>();
+
+ IExtensionPoint point = Platform.getExtensionRegistry().getExtensionPoint("org.eclipse.osee.ats.AtsTeamWorkflow");
+ if (point == null) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, "Can't access AtsTeamWorkflow extension point");
+ return teamWorkflowExtensionItems;
+ }
+ IExtension[] extensions = point.getExtensions();
+ for (IExtension extension : extensions) {
+ IConfigurationElement[] elements = extension.getConfigurationElements();
+ String classname = null;
+ String bundleName = null;
+ for (IConfigurationElement el : elements) {
+ if (el.getName().equals("AtsTeamWorkflow")) {
+ classname = el.getAttribute("classname");
+ bundleName = el.getContributor().getName();
+ if (classname != null && bundleName != null) {
+ Bundle bundle = Platform.getBundle(bundleName);
+ try {
+ Class<?> taskClass = bundle.loadClass(classname);
+ Object obj = taskClass.newInstance();
+ teamWorkflowExtensionItems.add((IAtsTeamWorkflow) obj);
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, "Error loading AtsTeamWorkflow extension", ex);
+ }
+ }
+ }
+ }
+ }
+ return teamWorkflowExtensionItems;
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/VersionArtifact.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/VersionArtifact.java
index 86fde68fd52..39b85e824ff 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/VersionArtifact.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/VersionArtifact.java
@@ -1,197 +1,196 @@
-/*******************************************************************************
- * 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.artifact;
-
-import java.util.Collection;
-import java.util.Date;
-import java.util.HashSet;
-import java.util.Set;
-import java.util.logging.Level;
-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.AtsRelationTypes;
-import org.eclipse.osee.ats.util.widgets.commit.ICommitConfigArtifact;
-import org.eclipse.osee.framework.core.exception.ArtifactDoesNotExist;
-import org.eclipse.osee.framework.core.exception.BranchDoesNotExist;
-import org.eclipse.osee.framework.core.exception.OseeCoreException;
-import org.eclipse.osee.framework.core.exception.OseeDataStoreException;
-import org.eclipse.osee.framework.core.model.Branch;
-import org.eclipse.osee.framework.core.model.type.ArtifactType;
-import org.eclipse.osee.framework.jdk.core.util.GUID;
-import org.eclipse.osee.framework.jdk.core.util.Strings;
-import org.eclipse.osee.framework.logging.OseeLog;
-import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
-import org.eclipse.osee.framework.skynet.core.artifact.ArtifactFactory;
-import org.eclipse.osee.framework.skynet.core.artifact.BranchManager;
-import org.eclipse.osee.framework.ui.plugin.util.Result;
-
-public class VersionArtifact extends Artifact implements ICommitConfigArtifact {
- public static enum VersionReleaseType {
- Released,
- UnReleased,
- Both,
- VersionLocked
- };
-
- public VersionArtifact(ArtifactFactory parentFactory, String guid, String humandReadableId, Branch branch, ArtifactType artifactType) throws OseeDataStoreException {
- super(parentFactory, guid, humandReadableId, branch, artifactType);
- }
-
- @Override
- public Result isCreateBranchAllowed() throws OseeCoreException {
- if (getSoleAttributeValue(AtsAttributeTypes.AllowCreateBranch, false) == false) {
- return new Result(false, "Branch creation disabled for Version [" + this + "]");
- }
- if (getParentBranch() == null) {
- return new Result(false, "Parent Branch not configured for Version [" + this + "]");
- }
- return Result.TrueResult;
- }
-
- @Override
- public Result isCommitBranchAllowed() throws OseeCoreException {
- if (getSoleAttributeValue(AtsAttributeTypes.AllowCommitBranch, false) == false) {
- return new Result(false, "Version [" + this + "] not configured to allow branch commit.");
- }
- if (getParentBranch() == null) {
- return new Result(false, "Parent Branch not configured for Version [" + this + "]");
- }
- return Result.TrueResult;
- }
-
- @Override
- public Branch getParentBranch() throws OseeCoreException {
- try {
- String guid = getSoleAttributeValue(AtsAttributeTypes.BaselineBranchGuid, "");
- if (GUID.isValid(guid)) {
- return BranchManager.getBranchByGuid(guid);
- }
- } catch (BranchDoesNotExist ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
- return null;
- }
-
- public TeamDefinitionArtifact getParentTeamDefinition() throws OseeCoreException {
- return getRelatedArtifacts(AtsRelationTypes.TeamDefinitionToVersion_TeamDefinition, TeamDefinitionArtifact.class).iterator().next();
- }
-
- public Boolean isReleased() throws OseeCoreException {
- return getSoleAttributeValue(AtsAttributeTypes.Released, false);
- }
-
- public Boolean isNextVersion() throws OseeCoreException {
- return getSoleAttributeValue(AtsAttributeTypes.NextVersion, false);
- }
-
- public void getParallelVersions(Set<ICommitConfigArtifact> configArts) throws OseeCoreException {
- configArts.add(this);
- for (VersionArtifact verArt : getRelatedArtifacts(AtsRelationTypes.ParallelVersion_Child, VersionArtifact.class)) {
- verArt.getParallelVersions(configArts);
- }
- }
-
- public Boolean isVersionLocked() throws OseeCoreException {
- return getSoleAttributeValue(AtsAttributeTypes.VersionLocked, false);
- }
-
- @Override
- public String toString() {
- return getName();
- }
-
- public void setReleased(boolean released) throws OseeCoreException {
- setSoleAttributeValue(AtsAttributeTypes.Released, released);
- }
-
- public void setNextVersion(boolean nextVersion) throws OseeCoreException {
- setSoleAttributeValue(AtsAttributeTypes.NextVersion, nextVersion);
- }
-
- public void setVersionLocked(boolean locked) throws OseeCoreException {
- setSoleAttributeValue(AtsAttributeTypes.VersionLocked, locked);
- }
-
- public String getFullName() throws OseeCoreException {
- return getSoleAttributeValue(AtsAttributeTypes.FullName, "");
- }
-
- public void setFullName(String name) throws OseeCoreException {
- setSoleAttributeValue(AtsAttributeTypes.FullName, name);
- }
-
- public void setDescription(String desc) throws OseeCoreException {
- setSoleAttributeValue(AtsAttributeTypes.Description, desc);
- }
-
- public Collection<TeamWorkFlowArtifact> getTargetedForTeamArtifacts() throws OseeCoreException {
- return getRelatedArtifacts(AtsRelationTypes.TeamWorkflowTargetedForVersion_Workflow, TeamWorkFlowArtifact.class);
- }
-
- @Override
- public String getFullDisplayName() throws OseeCoreException {
- String str = "";
- if (!getName().equals(Artifact.UNNAMED)) {
- str += getName();
- }
- if (!getFullName().equals("")) {
- if (str.equals("")) {
- str = getFullName();
- } else {
- str += " - " + getFullName();
- }
- }
- String description = getSoleAttributeValue(AtsAttributeTypes.Description, "");
- if (Strings.isValid(description)) {
- if (str.equals("")) {
- str = description;
- } else {
- str += " - " + description;
- }
- }
- return str;
- }
-
- public TeamDefinitionArtifact getTeamDefinitionArtifact() throws OseeCoreException {
- try {
- return (TeamDefinitionArtifact) getRelatedArtifact(AtsRelationTypes.TeamDefinitionToVersion_TeamDefinition);
- } catch (ArtifactDoesNotExist ex) {
- return null;
- }
- }
-
- public Date getEstimatedReleaseDate() throws OseeCoreException {
- return getSoleAttributeValue(AtsAttributeTypes.EstimatedReleaseDate, null);
- }
-
- public Date getReleaseDate() throws OseeCoreException {
- return getSoleAttributeValue(AtsAttributeTypes.ReleaseDate, null);
- }
-
- public static Set<VersionArtifact> getVersions(Collection<String> teamDefNames) throws OseeCoreException {
- Set<VersionArtifact> teamDefs = new HashSet<VersionArtifact>();
- for (String teamDefName : teamDefNames) {
- teamDefs.add(getSoleVersion(teamDefName));
- }
- return teamDefs;
- }
-
- /**
- * Refrain from using this method as Version Artifact names can be changed by the user.
- *
- * @param name
- * @return Version
- */
- public static VersionArtifact getSoleVersion(String name) throws OseeCoreException {
- return (VersionArtifact) AtsCacheManager.getArtifactsByName(AtsArtifactTypes.Version, name).iterator().next();
- }
-}
+/*******************************************************************************
+ * 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.artifact;
+
+import java.util.Collection;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.Set;
+import java.util.logging.Level;
+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.AtsRelationTypes;
+import org.eclipse.osee.ats.util.widgets.commit.ICommitConfigArtifact;
+import org.eclipse.osee.framework.core.exception.ArtifactDoesNotExist;
+import org.eclipse.osee.framework.core.exception.BranchDoesNotExist;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.core.exception.OseeDataStoreException;
+import org.eclipse.osee.framework.core.model.Branch;
+import org.eclipse.osee.framework.core.model.type.ArtifactType;
+import org.eclipse.osee.framework.jdk.core.util.GUID;
+import org.eclipse.osee.framework.jdk.core.util.Strings;
+import org.eclipse.osee.framework.logging.OseeLog;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactFactory;
+import org.eclipse.osee.framework.skynet.core.artifact.BranchManager;
+import org.eclipse.osee.framework.ui.plugin.util.Result;
+
+public class VersionArtifact extends Artifact implements ICommitConfigArtifact {
+ public static enum VersionReleaseType {
+ Released,
+ UnReleased,
+ Both,
+ VersionLocked
+ };
+
+ public VersionArtifact(ArtifactFactory parentFactory, String guid, String humandReadableId, Branch branch, ArtifactType artifactType) throws OseeDataStoreException {
+ super(parentFactory, guid, humandReadableId, branch, artifactType);
+ }
+
+ @Override
+ public Result isCreateBranchAllowed() throws OseeCoreException {
+ if (getSoleAttributeValue(AtsAttributeTypes.AllowCreateBranch, false) == false) {
+ return new Result(false, "Branch creation disabled for Version [" + this + "]");
+ }
+ if (getParentBranch() == null) {
+ return new Result(false, "Parent Branch not configured for Version [" + this + "]");
+ }
+ return Result.TrueResult;
+ }
+
+ @Override
+ public Result isCommitBranchAllowed() throws OseeCoreException {
+ if (getSoleAttributeValue(AtsAttributeTypes.AllowCommitBranch, false) == false) {
+ return new Result(false, "Version [" + this + "] not configured to allow branch commit.");
+ }
+ if (getParentBranch() == null) {
+ return new Result(false, "Parent Branch not configured for Version [" + this + "]");
+ }
+ return Result.TrueResult;
+ }
+
+ @Override
+ public Branch getParentBranch() throws OseeCoreException {
+ try {
+ String guid = getSoleAttributeValue(AtsAttributeTypes.BaselineBranchGuid, "");
+ if (GUID.isValid(guid)) {
+ return BranchManager.getBranchByGuid(guid);
+ }
+ } catch (BranchDoesNotExist ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ }
+ return null;
+ }
+
+ public TeamDefinitionArtifact getParentTeamDefinition() throws OseeCoreException {
+ return getRelatedArtifacts(AtsRelationTypes.TeamDefinitionToVersion_TeamDefinition, TeamDefinitionArtifact.class).iterator().next();
+ }
+
+ public Boolean isReleased() throws OseeCoreException {
+ return getSoleAttributeValue(AtsAttributeTypes.Released, false);
+ }
+
+ public Boolean isNextVersion() throws OseeCoreException {
+ return getSoleAttributeValue(AtsAttributeTypes.NextVersion, false);
+ }
+
+ public void getParallelVersions(Set<ICommitConfigArtifact> configArts) throws OseeCoreException {
+ configArts.add(this);
+ for (VersionArtifact verArt : getRelatedArtifacts(AtsRelationTypes.ParallelVersion_Child, VersionArtifact.class)) {
+ verArt.getParallelVersions(configArts);
+ }
+ }
+
+ public Boolean isVersionLocked() throws OseeCoreException {
+ return getSoleAttributeValue(AtsAttributeTypes.VersionLocked, false);
+ }
+
+ @Override
+ public String toString() {
+ return getName();
+ }
+
+ public void setReleased(boolean released) throws OseeCoreException {
+ setSoleAttributeValue(AtsAttributeTypes.Released, released);
+ }
+
+ public void setNextVersion(boolean nextVersion) throws OseeCoreException {
+ setSoleAttributeValue(AtsAttributeTypes.NextVersion, nextVersion);
+ }
+
+ public void setVersionLocked(boolean locked) throws OseeCoreException {
+ setSoleAttributeValue(AtsAttributeTypes.VersionLocked, locked);
+ }
+
+ public String getFullName() throws OseeCoreException {
+ return getSoleAttributeValue(AtsAttributeTypes.FullName, "");
+ }
+
+ public void setFullName(String name) throws OseeCoreException {
+ setSoleAttributeValue(AtsAttributeTypes.FullName, name);
+ }
+
+ public void setDescription(String desc) throws OseeCoreException {
+ setSoleAttributeValue(AtsAttributeTypes.Description, desc);
+ }
+
+ public Collection<TeamWorkFlowArtifact> getTargetedForTeamArtifacts() throws OseeCoreException {
+ return getRelatedArtifacts(AtsRelationTypes.TeamWorkflowTargetedForVersion_Workflow, TeamWorkFlowArtifact.class);
+ }
+
+ @Override
+ public String getFullDisplayName() throws OseeCoreException {
+ String str = "";
+ if (!getName().equals(Artifact.UNNAMED)) {
+ str += getName();
+ }
+ if (!getFullName().equals("")) {
+ if (str.equals("")) {
+ str = getFullName();
+ } else {
+ str += " - " + getFullName();
+ }
+ }
+ String description = getSoleAttributeValue(AtsAttributeTypes.Description, "");
+ if (Strings.isValid(description)) {
+ if (str.equals("")) {
+ str = description;
+ } else {
+ str += " - " + description;
+ }
+ }
+ return str;
+ }
+
+ public TeamDefinitionArtifact getTeamDefinitionArtifact() throws OseeCoreException {
+ try {
+ return (TeamDefinitionArtifact) getRelatedArtifact(AtsRelationTypes.TeamDefinitionToVersion_TeamDefinition);
+ } catch (ArtifactDoesNotExist ex) {
+ return null;
+ }
+ }
+
+ public Date getEstimatedReleaseDate() throws OseeCoreException {
+ return getSoleAttributeValue(AtsAttributeTypes.EstimatedReleaseDate, null);
+ }
+
+ public Date getReleaseDate() throws OseeCoreException {
+ return getSoleAttributeValue(AtsAttributeTypes.ReleaseDate, null);
+ }
+
+ public static Set<VersionArtifact> getVersions(Collection<String> teamDefNames) throws OseeCoreException {
+ Set<VersionArtifact> teamDefs = new HashSet<VersionArtifact>();
+ for (String teamDefName : teamDefNames) {
+ teamDefs.add(getSoleVersion(teamDefName));
+ }
+ return teamDefs;
+ }
+
+ /**
+ * Refrain from using this method as Version Artifact names can be changed by the user.
+ *
+ * @return Version
+ */
+ public static VersionArtifact getSoleVersion(String name) throws OseeCoreException {
+ return (VersionArtifact) AtsCacheManager.getArtifactsByName(AtsArtifactTypes.Version, name).iterator().next();
+ }
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/config/AtsBulkLoad.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/config/AtsBulkLoad.java
index 56000ffe7df..2c1296dd997 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/config/AtsBulkLoad.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/config/AtsBulkLoad.java
@@ -1,60 +1,60 @@
-/*******************************************************************************
- * 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.config;
-
-import java.util.Collection;
-import java.util.Set;
-import org.eclipse.osee.ats.internal.AtsPlugin;
-import org.eclipse.osee.ats.util.AtsRelationTypes;
-import org.eclipse.osee.framework.core.exception.OseeCoreException;
-import org.eclipse.osee.framework.core.operation.EmptyOperation;
-import org.eclipse.osee.framework.core.operation.IOperation;
-import org.eclipse.osee.framework.core.operation.Operations;
-import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
-import org.eclipse.osee.framework.skynet.core.relation.RelationManager;
-
-/**
- * @author Donald G. Dunne
- */
-public class AtsBulkLoad {
-
- private static boolean atsTypeDataLoadedStarted = false;
-
- public synchronized static IOperation getConfigLoadingOperation() {
- if (atsTypeDataLoadedStarted == false) {
- atsTypeDataLoadedStarted = true;
- return new AtsLoadConfigArtifactsOperation();
- }
- return new EmptyOperation("ATS Bulk Loading", AtsPlugin.PLUGIN_ID);
- }
-
- public static void loadConfig(boolean pend) {
- if (AtsLoadConfigArtifactsOperation.isLoaded()) {
- return;
- }
- if (pend) {
- Operations.executeAndPend(new AtsLoadConfigArtifactsOperation(), false);
- } else {
- Operations.executeAsJob(new AtsLoadConfigArtifactsOperation(), false);
- }
- }
-
- public static Set<Artifact> loadFromActions(Collection<? extends Artifact> actions) throws OseeCoreException {
- return RelationManager.getRelatedArtifacts(actions, 4, AtsRelationTypes.SmaToTask_Task,
- AtsRelationTypes.ActionToWorkflow_WorkFlow, AtsRelationTypes.TeamWorkflowToReview_Review);
- }
-
- public static Set<Artifact> loadFromTeamWorkflows(Collection<? extends Artifact> teams) throws OseeCoreException {
- return RelationManager.getRelatedArtifacts(teams, 3, AtsRelationTypes.SmaToTask_Task,
- AtsRelationTypes.TeamWorkflowToReview_Team, AtsRelationTypes.ActionToWorkflow_Action);
- }
-
-}
+/*******************************************************************************
+ * 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.config;
+
+import java.util.Collection;
+import java.util.Set;
+import org.eclipse.osee.ats.internal.AtsPlugin;
+import org.eclipse.osee.ats.util.AtsRelationTypes;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.core.operation.EmptyOperation;
+import org.eclipse.osee.framework.core.operation.IOperation;
+import org.eclipse.osee.framework.core.operation.Operations;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.relation.RelationManager;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class AtsBulkLoad {
+
+ private static boolean atsTypeDataLoadedStarted = false;
+
+ public synchronized static IOperation getConfigLoadingOperation() {
+ if (atsTypeDataLoadedStarted == false) {
+ atsTypeDataLoadedStarted = true;
+ return new AtsLoadConfigArtifactsOperation();
+ }
+ return new EmptyOperation("ATS Bulk Loading", AtsPlugin.PLUGIN_ID);
+ }
+
+ public static void loadConfig(boolean pend) {
+ if (AtsLoadConfigArtifactsOperation.isLoaded()) {
+ return;
+ }
+ if (pend) {
+ Operations.executeAndPend(new AtsLoadConfigArtifactsOperation(), false);
+ } else {
+ Operations.executeAsJob(new AtsLoadConfigArtifactsOperation(), false);
+ }
+ }
+
+ public static Set<Artifact> loadFromActions(Collection<? extends Artifact> actions) throws OseeCoreException {
+ return RelationManager.getRelatedArtifacts(actions, 4, AtsRelationTypes.SmaToTask_Task,
+ AtsRelationTypes.ActionToWorkflow_WorkFlow, AtsRelationTypes.TeamWorkflowToReview_Review);
+ }
+
+ public static Set<Artifact> loadFromTeamWorkflows(Collection<? extends Artifact> teams) throws OseeCoreException {
+ return RelationManager.getRelatedArtifacts(teams, 3, AtsRelationTypes.SmaToTask_Task,
+ AtsRelationTypes.TeamWorkflowToReview_Team, AtsRelationTypes.ActionToWorkflow_Action);
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/config/AtsCacheManager.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/config/AtsCacheManager.java
index b15031378cf..aa91624f5dc 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/config/AtsCacheManager.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/config/AtsCacheManager.java
@@ -1,321 +1,321 @@
-/*******************************************************************************
- * 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.config;
-
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.logging.Level;
-import org.eclipse.osee.ats.artifact.ActionableItemArtifact;
-import org.eclipse.osee.ats.artifact.TaskArtifact;
-import org.eclipse.osee.ats.artifact.TaskableStateMachineArtifact;
-import org.eclipse.osee.ats.artifact.TeamDefinitionArtifact;
-import org.eclipse.osee.ats.internal.AtsPlugin;
-import org.eclipse.osee.ats.util.AtsArtifactTypes;
-import org.eclipse.osee.ats.util.AtsRelationTypes;
-import org.eclipse.osee.ats.util.AtsUtil;
-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.CoreRelationTypes;
-import org.eclipse.osee.framework.core.exception.OseeCoreException;
-import org.eclipse.osee.framework.core.model.type.ArtifactType;
-import org.eclipse.osee.framework.logging.OseeLog;
-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.search.ArtifactQuery;
-import org.eclipse.osee.framework.skynet.core.event.FrameworkTransactionData;
-import org.eclipse.osee.framework.skynet.core.event.FrameworkTransactionData.ChangeType;
-import org.eclipse.osee.framework.skynet.core.event.IArtifactsPurgedEventListener;
-import org.eclipse.osee.framework.skynet.core.event.IFrameworkTransactionEventListener;
-import org.eclipse.osee.framework.skynet.core.event.OseeEventManager;
-import org.eclipse.osee.framework.skynet.core.event.Sender;
-import org.eclipse.osee.framework.skynet.core.event2.ArtifactEvent;
-import org.eclipse.osee.framework.skynet.core.event2.artifact.EventBasicGuidArtifact;
-import org.eclipse.osee.framework.skynet.core.event2.artifact.EventBasicGuidRelation;
-import org.eclipse.osee.framework.skynet.core.event2.artifact.EventModType;
-import org.eclipse.osee.framework.skynet.core.event2.artifact.IArtifactEventListener;
-import org.eclipse.osee.framework.skynet.core.event2.filter.IEventFilter;
-import org.eclipse.osee.framework.skynet.core.relation.RelationEventType;
-import org.eclipse.osee.framework.skynet.core.utility.DbUtil;
-import org.eclipse.osee.framework.skynet.core.utility.LoadedArtifacts;
-import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkFlowDefinition;
-import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkItemDefinition.WriteType;
-import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkItemDefinitionFactory;
-import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkPageDefinition;
-import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkRuleDefinition;
-import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkWidgetDefinition;
-
-/**
- * Common cache storage for ATS configuration artifacts:<br>
- * TeamDefinitionArtifact<br>
- * VersionArtifact<br>
- * ActionableItemArtifact<br>
- * All other artifact types will silently not cached<br>
- * <REM2>
- *
- * @author Donald G. Dunne
- */
-public class AtsCacheManager implements IArtifactEventListener, IArtifactsPurgedEventListener, IFrameworkTransactionEventListener {
-
- private static Map<TaskableStateMachineArtifact, Collection<TaskArtifact>> teamTasksCache =
- new HashMap<TaskableStateMachineArtifact, Collection<TaskArtifact>>();
-
- public static void start() {
- new AtsCacheManager();
- }
-
- private AtsCacheManager() {
- OseeEventManager.addPriorityListener(this);
- }
-
- public static synchronized void decacheTaskArtifacts(TaskableStateMachineArtifact sma) {
- teamTasksCache.remove(sma);
- }
-
- public static synchronized Collection<TaskArtifact> getTaskArtifacts(TaskableStateMachineArtifact sma) throws OseeCoreException {
- if (!teamTasksCache.containsKey(sma)) {
- Collection<TaskArtifact> taskArtifacts =
- sma.getRelatedArtifacts(AtsRelationTypes.SmaToTask_Task, TaskArtifact.class);
- if (taskArtifacts.isEmpty()) {
- return taskArtifacts;
- }
- teamTasksCache.put(sma, taskArtifacts);
- }
- return teamTasksCache.get(sma);
- }
-
- public static List<Artifact> getArtifactsByName(IArtifactType artifactType, String name) throws OseeCoreException {
- AtsBulkLoad.loadConfig(true);
- return ArtifactCache.getArtifactsByName(artifactType, name);
- }
-
- public static ActionableItemArtifact getActionableItemByGuid(String guid) throws OseeCoreException {
- AtsBulkLoad.loadConfig(true);
- return (ActionableItemArtifact) ArtifactCache.getActive(guid, AtsUtil.getAtsBranch().getId());
- }
-
- public static TeamDefinitionArtifact getTeamDefinitionArtifact(String guid) throws OseeCoreException {
- AtsBulkLoad.loadConfig(true);
- return (TeamDefinitionArtifact) ArtifactCache.getActive(guid, AtsUtil.getAtsBranch().getId());
- }
-
- public static List<Artifact> getArtifactsByActive(ArtifactType artifactType, Active active) throws OseeCoreException {
- AtsBulkLoad.loadConfig(true);
- return AtsUtil.getActive(ArtifactCache.getArtifactsByType(artifactType), active, null);
- }
-
- public static Artifact getSoleArtifactByName(IArtifactType artifactType, String name) throws OseeCoreException {
- AtsBulkLoad.loadConfig(true);
- List<Artifact> arts = ArtifactCache.getArtifactsByName(artifactType, name);
- if (arts.size() == 1) {
- return arts.iterator().next();
- }
- return null;
- }
-
- @Override
- public void handleArtifactsPurgedEvent(Sender sender, LoadedArtifacts loadedArtifacts) {
- if (DbUtil.isDbInit()) {
- OseeEventManager.removeListener(this);
- return;
- }
- try {
- for (Artifact artifact : loadedArtifacts.getLoadedArtifacts()) {
+/*******************************************************************************
+ * 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.config;
+
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.logging.Level;
+import org.eclipse.osee.ats.artifact.ActionableItemArtifact;
+import org.eclipse.osee.ats.artifact.TaskArtifact;
+import org.eclipse.osee.ats.artifact.TaskableStateMachineArtifact;
+import org.eclipse.osee.ats.artifact.TeamDefinitionArtifact;
+import org.eclipse.osee.ats.internal.AtsPlugin;
+import org.eclipse.osee.ats.util.AtsArtifactTypes;
+import org.eclipse.osee.ats.util.AtsRelationTypes;
+import org.eclipse.osee.ats.util.AtsUtil;
+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.CoreRelationTypes;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.core.model.type.ArtifactType;
+import org.eclipse.osee.framework.logging.OseeLog;
+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.search.ArtifactQuery;
+import org.eclipse.osee.framework.skynet.core.event.FrameworkTransactionData;
+import org.eclipse.osee.framework.skynet.core.event.FrameworkTransactionData.ChangeType;
+import org.eclipse.osee.framework.skynet.core.event.IArtifactsPurgedEventListener;
+import org.eclipse.osee.framework.skynet.core.event.IFrameworkTransactionEventListener;
+import org.eclipse.osee.framework.skynet.core.event.OseeEventManager;
+import org.eclipse.osee.framework.skynet.core.event.Sender;
+import org.eclipse.osee.framework.skynet.core.event2.ArtifactEvent;
+import org.eclipse.osee.framework.skynet.core.event2.artifact.EventBasicGuidArtifact;
+import org.eclipse.osee.framework.skynet.core.event2.artifact.EventBasicGuidRelation;
+import org.eclipse.osee.framework.skynet.core.event2.artifact.EventModType;
+import org.eclipse.osee.framework.skynet.core.event2.artifact.IArtifactEventListener;
+import org.eclipse.osee.framework.skynet.core.event2.filter.IEventFilter;
+import org.eclipse.osee.framework.skynet.core.relation.RelationEventType;
+import org.eclipse.osee.framework.skynet.core.utility.DbUtil;
+import org.eclipse.osee.framework.skynet.core.utility.LoadedArtifacts;
+import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkFlowDefinition;
+import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkItemDefinition.WriteType;
+import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkItemDefinitionFactory;
+import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkPageDefinition;
+import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkRuleDefinition;
+import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkWidgetDefinition;
+
+/**
+ * Common cache storage for ATS configuration artifacts:<br>
+ * TeamDefinitionArtifact<br>
+ * VersionArtifact<br>
+ * ActionableItemArtifact<br>
+ * All other artifact types will silently not cached<br>
+ * <REM2>
+ *
+ * @author Donald G. Dunne
+ */
+public class AtsCacheManager implements IArtifactEventListener, IArtifactsPurgedEventListener, IFrameworkTransactionEventListener {
+
+ private static Map<TaskableStateMachineArtifact, Collection<TaskArtifact>> teamTasksCache =
+ new HashMap<TaskableStateMachineArtifact, Collection<TaskArtifact>>();
+
+ public static void start() {
+ new AtsCacheManager();
+ }
+
+ private AtsCacheManager() {
+ OseeEventManager.addPriorityListener(this);
+ }
+
+ public static synchronized void decacheTaskArtifacts(TaskableStateMachineArtifact sma) {
+ teamTasksCache.remove(sma);
+ }
+
+ public static synchronized Collection<TaskArtifact> getTaskArtifacts(TaskableStateMachineArtifact sma) throws OseeCoreException {
+ if (!teamTasksCache.containsKey(sma)) {
+ Collection<TaskArtifact> taskArtifacts =
+ sma.getRelatedArtifacts(AtsRelationTypes.SmaToTask_Task, TaskArtifact.class);
+ if (taskArtifacts.isEmpty()) {
+ return taskArtifacts;
+ }
+ teamTasksCache.put(sma, taskArtifacts);
+ }
+ return teamTasksCache.get(sma);
+ }
+
+ public static List<Artifact> getArtifactsByName(IArtifactType artifactType, String name) throws OseeCoreException {
+ AtsBulkLoad.loadConfig(true);
+ return ArtifactCache.getArtifactsByName(artifactType, name);
+ }
+
+ public static ActionableItemArtifact getActionableItemByGuid(String guid) throws OseeCoreException {
+ AtsBulkLoad.loadConfig(true);
+ return (ActionableItemArtifact) ArtifactCache.getActive(guid, AtsUtil.getAtsBranch().getId());
+ }
+
+ public static TeamDefinitionArtifact getTeamDefinitionArtifact(String guid) throws OseeCoreException {
+ AtsBulkLoad.loadConfig(true);
+ return (TeamDefinitionArtifact) ArtifactCache.getActive(guid, AtsUtil.getAtsBranch().getId());
+ }
+
+ public static List<Artifact> getArtifactsByActive(ArtifactType artifactType, Active active) throws OseeCoreException {
+ AtsBulkLoad.loadConfig(true);
+ return AtsUtil.getActive(ArtifactCache.getArtifactsByType(artifactType), active, null);
+ }
+
+ public static Artifact getSoleArtifactByName(IArtifactType artifactType, String name) throws OseeCoreException {
+ AtsBulkLoad.loadConfig(true);
+ List<Artifact> arts = ArtifactCache.getArtifactsByName(artifactType, name);
+ if (arts.size() == 1) {
+ return arts.iterator().next();
+ }
+ return null;
+ }
+
+ @Override
+ public void handleArtifactsPurgedEvent(Sender sender, LoadedArtifacts loadedArtifacts) {
+ if (DbUtil.isDbInit()) {
+ OseeEventManager.removeListener(this);
+ return;
+ }
+ try {
+ for (Artifact artifact : loadedArtifacts.getLoadedArtifacts()) {
if (artifact.isOfType(CoreArtifactTypes.WorkRuleDefinition, CoreArtifactTypes.WorkPageDefinition,
CoreArtifactTypes.WorkFlowDefinition, CoreArtifactTypes.WorkWidgetDefinition)) {
- WorkItemDefinitionFactory.deCache(artifact);
- }
- if (artifact instanceof TaskArtifact) {
- teamTasksCache.remove(artifact.getParent());
- }
- if (artifact instanceof TaskableStateMachineArtifact) {
- teamTasksCache.remove(artifact);
- }
- }
- } catch (Exception ex) {
+ WorkItemDefinitionFactory.deCache(artifact);
+ }
+ if (artifact instanceof TaskArtifact) {
+ teamTasksCache.remove(artifact.getParent());
+ }
+ if (artifact instanceof TaskableStateMachineArtifact) {
+ teamTasksCache.remove(artifact);
+ }
+ }
+ } catch (Exception ex) {
OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
- }
-
- @Override
- public void handleFrameworkTransactionEvent(Sender sender, FrameworkTransactionData transData) throws OseeCoreException {
- if (DbUtil.isDbInit()) {
- OseeEventManager.removeListener(this);
- return;
- }
- if (transData.branchId != AtsUtil.getAtsBranch().getId()) {
- return;
- }
- for (Artifact artifact : transData.cacheDeletedArtifacts) {
+ }
+ }
+
+ @Override
+ public void handleFrameworkTransactionEvent(Sender sender, FrameworkTransactionData transData) throws OseeCoreException {
+ if (DbUtil.isDbInit()) {
+ OseeEventManager.removeListener(this);
+ return;
+ }
+ if (transData.branchId != AtsUtil.getAtsBranch().getId()) {
+ return;
+ }
+ for (Artifact artifact : transData.cacheDeletedArtifacts) {
if (artifact.isOfType(CoreArtifactTypes.WorkRuleDefinition, CoreArtifactTypes.WorkPageDefinition,
CoreArtifactTypes.WorkFlowDefinition, CoreArtifactTypes.WorkWidgetDefinition)) {
- WorkItemDefinitionFactory.deCache(artifact);
- }
- if (artifact instanceof TaskArtifact) {
- teamTasksCache.remove(artifact.getParent());
- }
- if (artifact instanceof TaskableStateMachineArtifact) {
- teamTasksCache.remove(artifact);
- }
- }
- for (Artifact artifact : transData.cacheAddedArtifacts) {
- if (artifact.isOfType(CoreArtifactTypes.WorkRuleDefinition)) {
- WorkItemDefinitionFactory.cacheWorkItemDefinitionArtifact(WriteType.Update,
- new WorkRuleDefinition(artifact), artifact);
- } else if (artifact.isOfType(CoreArtifactTypes.WorkPageDefinition)) {
- WorkItemDefinitionFactory.cacheWorkItemDefinitionArtifact(WriteType.Update,
- new WorkPageDefinition(artifact), artifact);
- } else if (artifact.isOfType(CoreArtifactTypes.WorkWidgetDefinition)) {
- WorkItemDefinitionFactory.cacheWorkItemDefinitionArtifact(WriteType.Update, new WorkWidgetDefinition(
- artifact), artifact);
- } else if (artifact.isOfType(CoreArtifactTypes.WorkFlowDefinition)) {
- WorkItemDefinitionFactory.cacheWorkItemDefinitionArtifact(WriteType.Update,
- new WorkFlowDefinition(artifact), artifact);
- }
- if (artifact instanceof TaskArtifact) {
- teamTasksCache.remove(artifact.getParent());
- }
- if (artifact instanceof TaskableStateMachineArtifact) {
- teamTasksCache.remove(artifact);
- }
- }
- for (Artifact artifact : transData.getArtifactsInRelations(ChangeType.All, AtsRelationTypes.SmaToTask_Task)) {
- if (artifact instanceof TaskArtifact) {
- teamTasksCache.remove(artifact.getParent());
- }
- if (artifact instanceof TaskableStateMachineArtifact) {
- teamTasksCache.remove(artifact);
- }
- }
- for (Artifact artifact : transData.getArtifactsInRelations(ChangeType.All, CoreRelationTypes.WorkItem__Child)) {
- if (artifact.isOfType(CoreArtifactTypes.WorkRuleDefinition)) {
- WorkItemDefinitionFactory.cacheWorkItemDefinitionArtifact(WriteType.Update,
- new WorkRuleDefinition(artifact), artifact);
- } else if (artifact.isOfType(CoreArtifactTypes.WorkPageDefinition)) {
- WorkItemDefinitionFactory.cacheWorkItemDefinitionArtifact(WriteType.Update,
- new WorkPageDefinition(artifact), artifact);
- } else if (artifact.isOfType(CoreArtifactTypes.WorkWidgetDefinition)) {
- WorkItemDefinitionFactory.cacheWorkItemDefinitionArtifact(WriteType.Update, new WorkWidgetDefinition(
- artifact), artifact);
- } else if (artifact.isOfType(CoreArtifactTypes.WorkFlowDefinition)) {
- WorkItemDefinitionFactory.cacheWorkItemDefinitionArtifact(WriteType.Update,
- new WorkFlowDefinition(artifact), artifact);
- }
- }
- }
-
- @Override
- public void handleArtifactEvent(ArtifactEvent artifactEvent, Sender sender) {
- if (DbUtil.isDbInit()) {
- OseeEventManager.removeListener(this);
- return;
- }
- try {
- for (EventBasicGuidArtifact guidArt : artifactEvent.getArtifacts()) {
- try {
- if (guidArt.is(EventModType.Deleted, EventModType.Purged)) {
- if (guidArt.is(CoreArtifactTypes.WorkRuleDefinition, CoreArtifactTypes.WorkPageDefinition,
- CoreArtifactTypes.WorkFlowDefinition, CoreArtifactTypes.WorkWidgetDefinition)) {
- WorkItemDefinitionFactory.deCache(guidArt);
- }
- if (guidArt.is(AtsArtifactTypes.Task) && guidArt.is(EventModType.Deleted)) {
- Artifact artifact = ArtifactCache.getActive(guidArt);
- if (artifact != null) {
- teamTasksCache.remove(artifact.getParent());
- }
- }
- Artifact artifact = ArtifactCache.getActive(guidArt);
- if (artifact != null && artifact instanceof TaskableStateMachineArtifact) {
- teamTasksCache.remove(artifact);
- }
- }
- if (guidArt.is(EventModType.Added, EventModType.Modified)) {
- if (guidArt.is(CoreArtifactTypes.WorkRuleDefinition, CoreArtifactTypes.WorkPageDefinition,
- CoreArtifactTypes.WorkFlowDefinition, CoreArtifactTypes.WorkWidgetDefinition)) {
- // Must load these cause they are config artifacts
- Artifact artifact = ArtifactQuery.getArtifactFromToken(guidArt);
- if (artifact != null) {
- if (guidArt.is(CoreArtifactTypes.WorkRuleDefinition)) {
- WorkItemDefinitionFactory.cacheWorkItemDefinitionArtifact(WriteType.Update,
- new WorkRuleDefinition(artifact), artifact);
- } else if (artifact.isOfType(CoreArtifactTypes.WorkPageDefinition)) {
- WorkItemDefinitionFactory.cacheWorkItemDefinitionArtifact(WriteType.Update,
- new WorkPageDefinition(artifact), artifact);
- } else if (artifact.isOfType(CoreArtifactTypes.WorkWidgetDefinition)) {
- WorkItemDefinitionFactory.cacheWorkItemDefinitionArtifact(WriteType.Update,
- new WorkWidgetDefinition(artifact), artifact);
- } else if (artifact.isOfType(CoreArtifactTypes.WorkFlowDefinition)) {
- WorkItemDefinitionFactory.cacheWorkItemDefinitionArtifact(WriteType.Update,
- new WorkFlowDefinition(artifact), artifact);
- }
- }
- }
- // Only process if in cache
- Artifact artifact = ArtifactCache.getActive(guidArt);
- if (artifact != null && guidArt.is(EventModType.Added)) {
- if (artifact instanceof TaskArtifact) {
- teamTasksCache.remove(artifact.getParent());
- }
- if (artifact instanceof TaskableStateMachineArtifact) {
- teamTasksCache.remove(artifact);
- }
- }
- }
- } catch (OseeCoreException ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
- }
- for (EventBasicGuidRelation guidRel : artifactEvent.getRelations()) {
- try {
- if (guidRel.is(AtsRelationTypes.SmaToTask_Task)) {
- for (TaskArtifact taskArt : ArtifactCache.getActive(guidRel, TaskArtifact.class)) {
- teamTasksCache.remove(taskArt.getParent());
- }
- for (Artifact artifact : ArtifactCache.getActive(guidRel)) {
- if (artifact instanceof TaskableStateMachineArtifact) {
- teamTasksCache.remove(artifact);
- }
- }
- }
- } catch (OseeCoreException ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
- }
- for (Artifact artifact : artifactEvent.getArtifactsInRelations(CoreRelationTypes.WorkItem__Child,
- RelationEventType.Added, RelationEventType.Undeleted)) {
- if (artifact.isOfType(CoreArtifactTypes.WorkRuleDefinition)) {
- WorkItemDefinitionFactory.cacheWorkItemDefinitionArtifact(WriteType.Update, new WorkRuleDefinition(
- artifact), artifact);
- } else if (artifact.isOfType(CoreArtifactTypes.WorkPageDefinition)) {
- WorkItemDefinitionFactory.cacheWorkItemDefinitionArtifact(WriteType.Update, new WorkPageDefinition(
- artifact), artifact);
- } else if (artifact.isOfType(CoreArtifactTypes.WorkWidgetDefinition)) {
- WorkItemDefinitionFactory.cacheWorkItemDefinitionArtifact(WriteType.Update, new WorkWidgetDefinition(
- artifact), artifact);
- } else if (artifact.isOfType(CoreArtifactTypes.WorkFlowDefinition)) {
- WorkItemDefinitionFactory.cacheWorkItemDefinitionArtifact(WriteType.Update, new WorkFlowDefinition(
- artifact), artifact);
- }
- }
-
- } catch (OseeCoreException ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
- }
-
- @Override
- public List<? extends IEventFilter> getEventFilters() {
- return Arrays.asList(OseeEventManager.getCommonBranchFilter());
- }
-}
+ WorkItemDefinitionFactory.deCache(artifact);
+ }
+ if (artifact instanceof TaskArtifact) {
+ teamTasksCache.remove(artifact.getParent());
+ }
+ if (artifact instanceof TaskableStateMachineArtifact) {
+ teamTasksCache.remove(artifact);
+ }
+ }
+ for (Artifact artifact : transData.cacheAddedArtifacts) {
+ if (artifact.isOfType(CoreArtifactTypes.WorkRuleDefinition)) {
+ WorkItemDefinitionFactory.cacheWorkItemDefinitionArtifact(WriteType.Update,
+ new WorkRuleDefinition(artifact), artifact);
+ } else if (artifact.isOfType(CoreArtifactTypes.WorkPageDefinition)) {
+ WorkItemDefinitionFactory.cacheWorkItemDefinitionArtifact(WriteType.Update,
+ new WorkPageDefinition(artifact), artifact);
+ } else if (artifact.isOfType(CoreArtifactTypes.WorkWidgetDefinition)) {
+ WorkItemDefinitionFactory.cacheWorkItemDefinitionArtifact(WriteType.Update, new WorkWidgetDefinition(
+ artifact), artifact);
+ } else if (artifact.isOfType(CoreArtifactTypes.WorkFlowDefinition)) {
+ WorkItemDefinitionFactory.cacheWorkItemDefinitionArtifact(WriteType.Update,
+ new WorkFlowDefinition(artifact), artifact);
+ }
+ if (artifact instanceof TaskArtifact) {
+ teamTasksCache.remove(artifact.getParent());
+ }
+ if (artifact instanceof TaskableStateMachineArtifact) {
+ teamTasksCache.remove(artifact);
+ }
+ }
+ for (Artifact artifact : transData.getArtifactsInRelations(ChangeType.All, AtsRelationTypes.SmaToTask_Task)) {
+ if (artifact instanceof TaskArtifact) {
+ teamTasksCache.remove(artifact.getParent());
+ }
+ if (artifact instanceof TaskableStateMachineArtifact) {
+ teamTasksCache.remove(artifact);
+ }
+ }
+ for (Artifact artifact : transData.getArtifactsInRelations(ChangeType.All, CoreRelationTypes.WorkItem__Child)) {
+ if (artifact.isOfType(CoreArtifactTypes.WorkRuleDefinition)) {
+ WorkItemDefinitionFactory.cacheWorkItemDefinitionArtifact(WriteType.Update,
+ new WorkRuleDefinition(artifact), artifact);
+ } else if (artifact.isOfType(CoreArtifactTypes.WorkPageDefinition)) {
+ WorkItemDefinitionFactory.cacheWorkItemDefinitionArtifact(WriteType.Update,
+ new WorkPageDefinition(artifact), artifact);
+ } else if (artifact.isOfType(CoreArtifactTypes.WorkWidgetDefinition)) {
+ WorkItemDefinitionFactory.cacheWorkItemDefinitionArtifact(WriteType.Update, new WorkWidgetDefinition(
+ artifact), artifact);
+ } else if (artifact.isOfType(CoreArtifactTypes.WorkFlowDefinition)) {
+ WorkItemDefinitionFactory.cacheWorkItemDefinitionArtifact(WriteType.Update,
+ new WorkFlowDefinition(artifact), artifact);
+ }
+ }
+ }
+
+ @Override
+ public void handleArtifactEvent(ArtifactEvent artifactEvent, Sender sender) {
+ if (DbUtil.isDbInit()) {
+ OseeEventManager.removeListener(this);
+ return;
+ }
+ try {
+ for (EventBasicGuidArtifact guidArt : artifactEvent.getArtifacts()) {
+ try {
+ if (guidArt.is(EventModType.Deleted, EventModType.Purged)) {
+ if (guidArt.is(CoreArtifactTypes.WorkRuleDefinition, CoreArtifactTypes.WorkPageDefinition,
+ CoreArtifactTypes.WorkFlowDefinition, CoreArtifactTypes.WorkWidgetDefinition)) {
+ WorkItemDefinitionFactory.deCache(guidArt);
+ }
+ if (guidArt.is(AtsArtifactTypes.Task) && guidArt.is(EventModType.Deleted)) {
+ Artifact artifact = ArtifactCache.getActive(guidArt);
+ if (artifact != null) {
+ teamTasksCache.remove(artifact.getParent());
+ }
+ }
+ Artifact artifact = ArtifactCache.getActive(guidArt);
+ if (artifact != null && artifact instanceof TaskableStateMachineArtifact) {
+ teamTasksCache.remove(artifact);
+ }
+ }
+ if (guidArt.is(EventModType.Added, EventModType.Modified)) {
+ if (guidArt.is(CoreArtifactTypes.WorkRuleDefinition, CoreArtifactTypes.WorkPageDefinition,
+ CoreArtifactTypes.WorkFlowDefinition, CoreArtifactTypes.WorkWidgetDefinition)) {
+ // Must load these cause they are config artifacts
+ Artifact artifact = ArtifactQuery.getArtifactFromToken(guidArt);
+ if (artifact != null) {
+ if (guidArt.is(CoreArtifactTypes.WorkRuleDefinition)) {
+ WorkItemDefinitionFactory.cacheWorkItemDefinitionArtifact(WriteType.Update,
+ new WorkRuleDefinition(artifact), artifact);
+ } else if (artifact.isOfType(CoreArtifactTypes.WorkPageDefinition)) {
+ WorkItemDefinitionFactory.cacheWorkItemDefinitionArtifact(WriteType.Update,
+ new WorkPageDefinition(artifact), artifact);
+ } else if (artifact.isOfType(CoreArtifactTypes.WorkWidgetDefinition)) {
+ WorkItemDefinitionFactory.cacheWorkItemDefinitionArtifact(WriteType.Update,
+ new WorkWidgetDefinition(artifact), artifact);
+ } else if (artifact.isOfType(CoreArtifactTypes.WorkFlowDefinition)) {
+ WorkItemDefinitionFactory.cacheWorkItemDefinitionArtifact(WriteType.Update,
+ new WorkFlowDefinition(artifact), artifact);
+ }
+ }
+ }
+ // Only process if in cache
+ Artifact artifact = ArtifactCache.getActive(guidArt);
+ if (artifact != null && guidArt.is(EventModType.Added)) {
+ if (artifact instanceof TaskArtifact) {
+ teamTasksCache.remove(artifact.getParent());
+ }
+ if (artifact instanceof TaskableStateMachineArtifact) {
+ teamTasksCache.remove(artifact);
+ }
+ }
+ }
+ } catch (OseeCoreException ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ }
+ }
+ for (EventBasicGuidRelation guidRel : artifactEvent.getRelations()) {
+ try {
+ if (guidRel.is(AtsRelationTypes.SmaToTask_Task)) {
+ for (TaskArtifact taskArt : ArtifactCache.getActive(guidRel, TaskArtifact.class)) {
+ teamTasksCache.remove(taskArt.getParent());
+ }
+ for (Artifact artifact : ArtifactCache.getActive(guidRel)) {
+ if (artifact instanceof TaskableStateMachineArtifact) {
+ teamTasksCache.remove(artifact);
+ }
+ }
+ }
+ } catch (OseeCoreException ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ }
+ }
+ for (Artifact artifact : artifactEvent.getArtifactsInRelations(CoreRelationTypes.WorkItem__Child,
+ RelationEventType.Added, RelationEventType.Undeleted)) {
+ if (artifact.isOfType(CoreArtifactTypes.WorkRuleDefinition)) {
+ WorkItemDefinitionFactory.cacheWorkItemDefinitionArtifact(WriteType.Update, new WorkRuleDefinition(
+ artifact), artifact);
+ } else if (artifact.isOfType(CoreArtifactTypes.WorkPageDefinition)) {
+ WorkItemDefinitionFactory.cacheWorkItemDefinitionArtifact(WriteType.Update, new WorkPageDefinition(
+ artifact), artifact);
+ } else if (artifact.isOfType(CoreArtifactTypes.WorkWidgetDefinition)) {
+ WorkItemDefinitionFactory.cacheWorkItemDefinitionArtifact(WriteType.Update, new WorkWidgetDefinition(
+ artifact), artifact);
+ } else if (artifact.isOfType(CoreArtifactTypes.WorkFlowDefinition)) {
+ WorkItemDefinitionFactory.cacheWorkItemDefinitionArtifact(WriteType.Update, new WorkFlowDefinition(
+ artifact), artifact);
+ }
+ }
+
+ } catch (OseeCoreException ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ }
+ }
+
+ @Override
+ public List<? extends IEventFilter> getEventFilters() {
+ return Arrays.asList(OseeEventManager.getCommonBranchFilter());
+ }
+}
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 c5ca3cfbfc0..9b5521aa987 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
@@ -76,7 +76,6 @@ public class AtsConfigManager extends AbstractOperation {
private final Display display;
/**
- * @param namespace
* @param teamDefName - name of team definition to use
* @param versionNames - list of version names (if team is using versions)
* @param actionableItems - list of actionable items
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/config/wizard/AtsConfigWizardPage1.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/config/wizard/AtsConfigWizardPage1.java
index 6c9abf9f4fd..8d73df0261d 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/config/wizard/AtsConfigWizardPage1.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/config/wizard/AtsConfigWizardPage1.java
@@ -39,9 +39,6 @@ import org.eclipse.swt.widgets.Composite;
public class AtsConfigWizardPage1 extends WizardPage {
private WorkPage page;
- /**
- * @param actionWizard
- */
public AtsConfigWizardPage1(AtsConfigWizard actionWizard) {
super("Create New ATS Configuration", "Create ATS Configuration", null);
setMessage("Enter configuration information.");
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/AtsTaskEditorRenderer.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/AtsTaskEditorRenderer.java
index d11ca624593..14e771cfa8f 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/AtsTaskEditorRenderer.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/AtsTaskEditorRenderer.java
@@ -1,70 +1,70 @@
-/*******************************************************************************
- * 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.editor;
-
-import static org.eclipse.osee.framework.ui.skynet.render.PresentationType.GENERALIZED_EDIT;
-import java.util.ArrayList;
-import java.util.List;
-import org.eclipse.osee.ats.AtsImage;
-import org.eclipse.osee.ats.artifact.TaskArtifact;
-import org.eclipse.osee.ats.util.AtsUtil;
-import org.eclipse.osee.framework.core.exception.OseeCoreException;
-import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
-import org.eclipse.osee.framework.ui.skynet.render.DefaultArtifactRenderer;
-import org.eclipse.osee.framework.ui.skynet.render.PresentationType;
-import org.eclipse.osee.framework.ui.swt.ImageManager;
-import org.eclipse.swt.graphics.Image;
-
-/**
- * @author Jeff C. Phillips
- */
-public class AtsTaskEditorRenderer extends DefaultArtifactRenderer {
- private static final String COMMAND_ID = "org.eclipse.osee.framework.ui.skynet.atstaskeditor.command";
-
- @Override
- public Image getImage(Artifact artifact) {
- return ImageManager.getImage(AtsImage.TASK);
- }
-
- @Override
- public String getName() {
- return "ATS Task Editor";
- }
-
- @Override
- public int getApplicabilityRating(PresentationType presentationType, Artifact artifact) {
+/*******************************************************************************
+ * 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.editor;
+
+import static org.eclipse.osee.framework.ui.skynet.render.PresentationType.GENERALIZED_EDIT;
+import java.util.ArrayList;
+import java.util.List;
+import org.eclipse.osee.ats.AtsImage;
+import org.eclipse.osee.ats.artifact.TaskArtifact;
+import org.eclipse.osee.ats.util.AtsUtil;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.ui.skynet.render.DefaultArtifactRenderer;
+import org.eclipse.osee.framework.ui.skynet.render.PresentationType;
+import org.eclipse.osee.framework.ui.swt.ImageManager;
+import org.eclipse.swt.graphics.Image;
+
+/**
+ * @author Jeff C. Phillips
+ */
+public class AtsTaskEditorRenderer extends DefaultArtifactRenderer {
+ private static final String COMMAND_ID = "org.eclipse.osee.framework.ui.skynet.atstaskeditor.command";
+
+ @Override
+ public Image getImage(Artifact artifact) {
+ return ImageManager.getImage(AtsImage.TASK);
+ }
+
+ @Override
+ public String getName() {
+ return "ATS Task Editor";
+ }
+
+ @Override
+ public int getApplicabilityRating(PresentationType presentationType, Artifact artifact) {
if (artifact instanceof TaskArtifact && !artifact.isHistorical() && presentationType != GENERALIZED_EDIT) {
- return PRESENTATION_SUBTYPE_MATCH;
- }
- return NO_MATCH;
- }
-
- @Override
- public List<String> getCommandId(PresentationType presentationType) {
- ArrayList<String> commandIds = new ArrayList<String>(1);
-
- if (presentationType == PresentationType.SPECIALIZED_EDIT) {
- commandIds.add(COMMAND_ID);
- }
-
- return commandIds;
- }
-
- @Override
- public AtsTaskEditorRenderer newInstance() {
- return new AtsTaskEditorRenderer();
- }
-
- @Override
- public void open(List<Artifact> artifacts, PresentationType presentationType) throws OseeCoreException {
- AtsUtil.openInAtsTaskEditor("Tasks", artifacts);
- }
+ return PRESENTATION_SUBTYPE_MATCH;
+ }
+ return NO_MATCH;
+ }
+
+ @Override
+ public List<String> getCommandId(PresentationType presentationType) {
+ ArrayList<String> commandIds = new ArrayList<String>(1);
+
+ if (presentationType == PresentationType.SPECIALIZED_EDIT) {
+ commandIds.add(COMMAND_ID);
+ }
+
+ return commandIds;
+ }
+
+ @Override
+ public AtsTaskEditorRenderer newInstance() {
+ return new AtsTaskEditorRenderer();
+ }
+
+ @Override
+ public void open(List<Artifact> artifacts, PresentationType presentationType) throws OseeCoreException {
+ AtsUtil.openInAtsTaskEditor("Tasks", artifacts);
+ }
} \ No newline at end of file
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/AtsWorldEditorRenderer.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/AtsWorldEditorRenderer.java
index 9d8f6f66333..59c21b1fea5 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/AtsWorldEditorRenderer.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/AtsWorldEditorRenderer.java
@@ -1,85 +1,85 @@
-/*******************************************************************************
- * 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.editor;
-
-import static org.eclipse.osee.framework.ui.skynet.render.PresentationType.GENERALIZED_EDIT;
-import java.util.ArrayList;
-import java.util.List;
-import org.eclipse.osee.ats.AtsImage;
-import org.eclipse.osee.ats.util.AtsArtifactTypes;
-import org.eclipse.osee.ats.util.AtsUtil;
-import org.eclipse.osee.framework.core.enums.CoreArtifactTypes;
-import org.eclipse.osee.framework.core.enums.CoreRelationTypes;
-import org.eclipse.osee.framework.core.exception.OseeCoreException;
-import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
-import org.eclipse.osee.framework.ui.skynet.render.DefaultArtifactRenderer;
-import org.eclipse.osee.framework.ui.skynet.render.PresentationType;
-import org.eclipse.osee.framework.ui.swt.ImageManager;
-import org.eclipse.swt.graphics.Image;
-
-/**
- * @author Jeff C. Phillips
- */
-public class AtsWorldEditorRenderer extends DefaultArtifactRenderer {
- private static final String COMMAND_ID = "org.eclipse.osee.framework.ui.skynet.atsworldeditor.command";
-
- @Override
- public int getApplicabilityRating(PresentationType presentationType, Artifact artifact) throws OseeCoreException {
+/*******************************************************************************
+ * 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.editor;
+
+import static org.eclipse.osee.framework.ui.skynet.render.PresentationType.GENERALIZED_EDIT;
+import java.util.ArrayList;
+import java.util.List;
+import org.eclipse.osee.ats.AtsImage;
+import org.eclipse.osee.ats.util.AtsArtifactTypes;
+import org.eclipse.osee.ats.util.AtsUtil;
+import org.eclipse.osee.framework.core.enums.CoreArtifactTypes;
+import org.eclipse.osee.framework.core.enums.CoreRelationTypes;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.ui.skynet.render.DefaultArtifactRenderer;
+import org.eclipse.osee.framework.ui.skynet.render.PresentationType;
+import org.eclipse.osee.framework.ui.swt.ImageManager;
+import org.eclipse.swt.graphics.Image;
+
+/**
+ * @author Jeff C. Phillips
+ */
+public class AtsWorldEditorRenderer extends DefaultArtifactRenderer {
+ private static final String COMMAND_ID = "org.eclipse.osee.framework.ui.skynet.atsworldeditor.command";
+
+ @Override
+ public int getApplicabilityRating(PresentationType presentationType, Artifact artifact) throws OseeCoreException {
if (artifact.isHistorical() || presentationType == GENERALIZED_EDIT) {
- return NO_MATCH;
- }
+ return NO_MATCH;
+ }
if (artifact.isOfType(AtsArtifactTypes.AtsArtifact)) {
- return PRESENTATION_SUBTYPE_MATCH;
- }
- if (artifact.isOfType(CoreArtifactTypes.UniversalGroup)) {
- if (artifact.getRelatedArtifactsCount(CoreRelationTypes.Universal_Grouping__Members) == 0) {
- return NO_MATCH;
- }
- for (Artifact childArt : artifact.getRelatedArtifacts(CoreRelationTypes.Universal_Grouping__Members)) {
+ return PRESENTATION_SUBTYPE_MATCH;
+ }
+ if (artifact.isOfType(CoreArtifactTypes.UniversalGroup)) {
+ if (artifact.getRelatedArtifactsCount(CoreRelationTypes.Universal_Grouping__Members) == 0) {
+ return NO_MATCH;
+ }
+ for (Artifact childArt : artifact.getRelatedArtifacts(CoreRelationTypes.Universal_Grouping__Members)) {
if (childArt.isOfType(AtsArtifactTypes.AtsArtifact)) {
- return PRESENTATION_SUBTYPE_MATCH;
- }
- }
- }
- return NO_MATCH;
- }
-
- @Override
- public List<String> getCommandId(PresentationType presentationType) {
- ArrayList<String> commandIds = new ArrayList<String>(1);
-
- if (presentationType == PresentationType.SPECIALIZED_EDIT) {
- commandIds.add(COMMAND_ID);
- }
-
- return commandIds;
- }
-
- @Override
- public String getName() {
- return "ATS World Editor";
- }
-
- @Override
- public AtsWorldEditorRenderer newInstance() {
- return new AtsWorldEditorRenderer();
- }
-
- @Override
- public Image getImage(Artifact artifact) {
- return ImageManager.getImage(AtsImage.GLOBE);
- }
-
- @Override
- public void open(List<Artifact> artifacts, PresentationType presentationType) {
- AtsUtil.openInAtsWorldEditor("ATS", artifacts);
- }
+ return PRESENTATION_SUBTYPE_MATCH;
+ }
+ }
+ }
+ return NO_MATCH;
+ }
+
+ @Override
+ public List<String> getCommandId(PresentationType presentationType) {
+ ArrayList<String> commandIds = new ArrayList<String>(1);
+
+ if (presentationType == PresentationType.SPECIALIZED_EDIT) {
+ commandIds.add(COMMAND_ID);
+ }
+
+ return commandIds;
+ }
+
+ @Override
+ public String getName() {
+ return "ATS World Editor";
+ }
+
+ @Override
+ public AtsWorldEditorRenderer newInstance() {
+ return new AtsWorldEditorRenderer();
+ }
+
+ @Override
+ public Image getImage(Artifact artifact) {
+ return ImageManager.getImage(AtsImage.GLOBE);
+ }
+
+ @Override
+ public void open(List<Artifact> artifacts, PresentationType presentationType) {
+ AtsUtil.openInAtsWorldEditor("ATS", artifacts);
+ }
} \ No newline at end of file
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/ISMAOperationsSection.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/ISMAOperationsSection.java
index 9ed5ad424ac..1a26aeb4b8f 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/ISMAOperationsSection.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/ISMAOperationsSection.java
@@ -1,21 +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.ats.editor;
-
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.forms.widgets.FormToolkit;
-
-public interface ISMAOperationsSection {
-
- public abstract void createAdvancedSection(SMAEditor editor, Composite parent, FormToolkit toolkit);
-
- public abstract boolean isValid(SMAEditor editor);
-}
+/*******************************************************************************
+ * 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.editor;
+
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+
+public interface ISMAOperationsSection {
+
+ public abstract void createAdvancedSection(SMAEditor editor, Composite parent, FormToolkit toolkit);
+
+ public abstract boolean isValid(SMAEditor editor);
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMADetailsSection.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMADetailsSection.java
index c7ba6b4931d..e97efd8d193 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMADetailsSection.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMADetailsSection.java
@@ -1,96 +1,96 @@
-/*******************************************************************************
- * 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.editor;
-
-import org.eclipse.osee.framework.jdk.core.util.Lib;
-import org.eclipse.osee.framework.skynet.core.utility.Artifacts;
-import org.eclipse.osee.framework.ui.swt.Widgets;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.ui.forms.IManagedForm;
-import org.eclipse.ui.forms.SectionPart;
-import org.eclipse.ui.forms.widgets.ExpandableComposite;
-import org.eclipse.ui.forms.widgets.FormText;
-import org.eclipse.ui.forms.widgets.FormToolkit;
-import org.eclipse.ui.forms.widgets.Section;
-
-/**
- * @author Donald G. Dunne
- */
-public class SMADetailsSection extends SectionPart {
-
- private FormText formText;
- private final SMAEditor editor;
- private boolean sectionCreated = false;
-
- public SMADetailsSection(SMAEditor editor, Composite parent, FormToolkit toolkit, int style) {
- super(parent, toolkit, style | ExpandableComposite.TWISTIE | ExpandableComposite.TITLE_BAR);
- this.editor = editor;
- }
-
- @Override
- public void initialize(IManagedForm form) {
- super.initialize(form);
- Section section = getSection();
- section.setText("Details");
- section.setLayout(new GridLayout());
- section.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
-
- // Only load when users selects section
- section.addListener(SWT.Activate, new Listener() {
-
- @Override
- public void handleEvent(Event e) {
- createSection();
- }
- });
- }
-
- private synchronized void createSection() {
- if (!sectionCreated) {
- final FormToolkit toolkit = getManagedForm().getToolkit();
- Composite composite = toolkit.createComposite(getSection(), toolkit.getBorderStyle() | SWT.WRAP);
- composite.setLayout(new GridLayout());
- composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
-
- formText = toolkit.createFormText(composite, false);
- GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true);
- gd.widthHint = 200;
- formText.setLayoutData(gd);
-
- getSection().setClient(composite);
- toolkit.paintBordersFor(composite);
- sectionCreated = true;
- }
-
- if (Widgets.isAccessible(formText)) {
- try {
- formText.setText(Artifacts.getDetailsFormText(editor.getSma().getSMADetails()), true, true);
- } catch (Exception ex) {
- formText.setText(Lib.exceptionToString(ex), false, false);
- }
- getManagedForm().reflow(true);
- }
- }
-
- @Override
- public void dispose() {
- if (formText != null && !formText.isDisposed()) {
- formText.dispose();
- }
- super.dispose();
- }
-
-}
+/*******************************************************************************
+ * 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.editor;
+
+import org.eclipse.osee.framework.jdk.core.util.Lib;
+import org.eclipse.osee.framework.skynet.core.utility.Artifacts;
+import org.eclipse.osee.framework.ui.swt.Widgets;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.ui.forms.IManagedForm;
+import org.eclipse.ui.forms.SectionPart;
+import org.eclipse.ui.forms.widgets.ExpandableComposite;
+import org.eclipse.ui.forms.widgets.FormText;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+import org.eclipse.ui.forms.widgets.Section;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class SMADetailsSection extends SectionPart {
+
+ private FormText formText;
+ private final SMAEditor editor;
+ private boolean sectionCreated = false;
+
+ public SMADetailsSection(SMAEditor editor, Composite parent, FormToolkit toolkit, int style) {
+ super(parent, toolkit, style | ExpandableComposite.TWISTIE | ExpandableComposite.TITLE_BAR);
+ this.editor = editor;
+ }
+
+ @Override
+ public void initialize(IManagedForm form) {
+ super.initialize(form);
+ Section section = getSection();
+ section.setText("Details");
+ section.setLayout(new GridLayout());
+ section.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
+
+ // Only load when users selects section
+ section.addListener(SWT.Activate, new Listener() {
+
+ @Override
+ public void handleEvent(Event e) {
+ createSection();
+ }
+ });
+ }
+
+ private synchronized void createSection() {
+ if (!sectionCreated) {
+ final FormToolkit toolkit = getManagedForm().getToolkit();
+ Composite composite = toolkit.createComposite(getSection(), toolkit.getBorderStyle() | SWT.WRAP);
+ composite.setLayout(new GridLayout());
+ composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+
+ formText = toolkit.createFormText(composite, false);
+ GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true);
+ gd.widthHint = 200;
+ formText.setLayoutData(gd);
+
+ getSection().setClient(composite);
+ toolkit.paintBordersFor(composite);
+ sectionCreated = true;
+ }
+
+ if (Widgets.isAccessible(formText)) {
+ try {
+ formText.setText(Artifacts.getDetailsFormText(editor.getSma().getSMADetails()), true, true);
+ } catch (Exception ex) {
+ formText.setText(Lib.exceptionToString(ex), false, false);
+ }
+ getManagedForm().reflow(true);
+ }
+ }
+
+ @Override
+ public void dispose() {
+ if (formText != null && !formText.isDisposed()) {
+ formText.dispose();
+ }
+ super.dispose();
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMADragAndDrop.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMADragAndDrop.java
index 8db09b4579a..9cecd200467 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMADragAndDrop.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMADragAndDrop.java
@@ -1,41 +1,41 @@
-/*******************************************************************************
- * 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.editor;
-
-import org.eclipse.osee.ats.artifact.StateMachineArtifact;
-import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
-import org.eclipse.osee.framework.ui.skynet.util.SkynetDragAndDrop;
-import org.eclipse.swt.dnd.DragSourceEvent;
-import org.eclipse.swt.widgets.Control;
-
-/**
- * @author Donald G. Dunne
- */
-public class SMADragAndDrop extends SkynetDragAndDrop {
-
- private final StateMachineArtifact sma;
-
- public SMADragAndDrop(Control control, StateMachineArtifact sma, String viewId) {
- super(control, viewId);
- this.sma = sma;
- }
-
- @Override
- public Artifact[] getArtifacts() {
- return new Artifact[] {sma};
- }
-
- @Override
- public void artifactTransferDragSetData(DragSourceEvent event) {
- super.artifactTransferDragSetData(event);
- }
-
-}
+/*******************************************************************************
+ * 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.editor;
+
+import org.eclipse.osee.ats.artifact.StateMachineArtifact;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.ui.skynet.util.SkynetDragAndDrop;
+import org.eclipse.swt.dnd.DragSourceEvent;
+import org.eclipse.swt.widgets.Control;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class SMADragAndDrop extends SkynetDragAndDrop {
+
+ private final StateMachineArtifact sma;
+
+ public SMADragAndDrop(Control control, StateMachineArtifact sma, String viewId) {
+ super(control, viewId);
+ this.sma = sma;
+ }
+
+ @Override
+ public Artifact[] getArtifacts() {
+ return new Artifact[] {sma};
+ }
+
+ @Override
+ public void artifactTransferDragSetData(DragSourceEvent event) {
+ super.artifactTransferDragSetData(event);
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAEditor.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAEditor.java
index b63cde6f1bd..21ff9cc188e 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAEditor.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAEditor.java
@@ -1,788 +1,788 @@
-/*******************************************************************************
- * 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.editor;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Set;
-import java.util.logging.Level;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.osee.ats.actions.AccessControlAction;
-import org.eclipse.osee.ats.actions.DirtyReportAction;
-import org.eclipse.osee.ats.actions.ISelectedAtsArtifacts;
-import org.eclipse.osee.ats.actions.ResourceHistoryAction;
-import org.eclipse.osee.ats.artifact.ReviewSMArtifact;
-import org.eclipse.osee.ats.artifact.StateMachineArtifact;
-import org.eclipse.osee.ats.artifact.TaskArtifact;
-import org.eclipse.osee.ats.artifact.TaskableStateMachineArtifact;
-import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact;
-import org.eclipse.osee.ats.artifact.VersionArtifact;
-import org.eclipse.osee.ats.internal.AtsPlugin;
-import org.eclipse.osee.ats.navigate.VisitedItems;
-import org.eclipse.osee.ats.task.IXTaskViewer;
-import org.eclipse.osee.ats.task.TaskComposite;
-import org.eclipse.osee.ats.task.TaskTabXWidgetActionPage;
-import org.eclipse.osee.ats.util.AtsUtil;
-import org.eclipse.osee.ats.util.widgets.ReviewManager;
-import org.eclipse.osee.ats.world.AtsMetricsComposite;
-import org.eclipse.osee.ats.world.IAtsMetricsProvider;
-import org.eclipse.osee.framework.access.AccessControlManager;
-import org.eclipse.osee.framework.core.enums.PermissionEnum;
-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.Strings;
-import org.eclipse.osee.framework.logging.OseeLevel;
-import org.eclipse.osee.framework.logging.OseeLog;
-import org.eclipse.osee.framework.plugin.core.IActionable;
-import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
-import org.eclipse.osee.framework.skynet.core.artifact.Attribute;
-import org.eclipse.osee.framework.skynet.core.artifact.BranchManager;
-import org.eclipse.osee.framework.skynet.core.event.BranchEventType;
-import org.eclipse.osee.framework.skynet.core.event.FrameworkTransactionData;
-import org.eclipse.osee.framework.skynet.core.event.IArtifactReloadEventListener;
-import org.eclipse.osee.framework.skynet.core.event.IArtifactsPurgedEventListener;
-import org.eclipse.osee.framework.skynet.core.event.IBranchEventListener;
-import org.eclipse.osee.framework.skynet.core.event.IFrameworkTransactionEventListener;
-import org.eclipse.osee.framework.skynet.core.event.OseeEventManager;
-import org.eclipse.osee.framework.skynet.core.event.Sender;
-import org.eclipse.osee.framework.skynet.core.event2.BranchEvent;
-import org.eclipse.osee.framework.skynet.core.event2.filter.IEventFilter;
-import org.eclipse.osee.framework.skynet.core.relation.RelationManager;
-import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction;
-import org.eclipse.osee.framework.skynet.core.utility.LoadedArtifacts;
-import org.eclipse.osee.framework.ui.plugin.OseeUiActions;
-import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
-import org.eclipse.osee.framework.ui.plugin.util.Result;
-import org.eclipse.osee.framework.ui.skynet.ArtifactImageManager;
-import org.eclipse.osee.framework.ui.skynet.AttributesComposite;
-import org.eclipse.osee.framework.ui.skynet.FrameworkImage;
-import org.eclipse.osee.framework.ui.skynet.OseeContributionItem;
-import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
-import org.eclipse.osee.framework.ui.skynet.artifact.editor.AbstractArtifactEditor;
-import org.eclipse.osee.framework.ui.skynet.notify.OseeNotificationManager;
-import org.eclipse.osee.framework.ui.skynet.render.PresentationType;
-import org.eclipse.osee.framework.ui.skynet.render.RendererManager;
-import org.eclipse.osee.framework.ui.swt.Displays;
-import org.eclipse.osee.framework.ui.swt.IDirtiableEditor;
-import org.eclipse.osee.framework.ui.swt.ImageManager;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.swt.widgets.ToolBar;
-import org.eclipse.swt.widgets.ToolItem;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IEditorReference;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.actions.ActionFactory;
-import org.eclipse.ui.part.MultiPageEditorPart;
-
-/**
- * <REM2>
- *
- * @author Donald G. Dunne
- */
-public class SMAEditor extends AbstractArtifactEditor implements ISMAEditorEventHandler, ISelectedAtsArtifacts, IActionable, IArtifactReloadEventListener, IAtsMetricsProvider, IArtifactsPurgedEventListener, IFrameworkTransactionEventListener, IBranchEventListener, IXTaskViewer {
- public static final String EDITOR_ID = "org.eclipse.osee.ats.editor.SMAEditor";
- private StateMachineArtifact sma;
- private int workFlowPageIndex, metricsPageIndex, attributesPageIndex;
- private SMAWorkFlowTab workFlowTab;
- private AttributesComposite attributesComposite;
- private boolean priviledgedEditModeEnabled = false;
- private Action printAction;
- private TaskTabXWidgetActionPage taskTabXWidgetActionPage;
- private final List<ISMAEditorListener> editorListeners = new ArrayList<ISMAEditorListener>();
-
- public SMAEditor() {
- super();
- }
-
- @Override
- protected void addPages() {
- try {
- IEditorInput editorInput = getEditorInput();
- if (editorInput instanceof SMAEditorInput) {
- SMAEditorInput aei = (SMAEditorInput) editorInput;
- if (aei.getArtifact() != null) {
- if (aei.getArtifact() instanceof StateMachineArtifact) {
- sma = (StateMachineArtifact) aei.getArtifact();
- } else {
- throw new OseeArgumentException("SMAEditorInput artifact must be StateMachineArtifact");
- }
- }
- } else {
- throw new OseeArgumentException("Editor Input not SMAEditorInput");
- }
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
- return;
- }
-
- if (sma == null) {
- MessageDialog.openError(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), "Open Error",
- "Can't Find Action in DB");
- return;
- }
- try {
- sma.setEditor(this);
- if (OseeEventManager.getPreferences().isOldEvents()) {
- OseeEventManager.addListener(this); // <REM2> Don't need this cause handled through SMAEditorEventManager
- } else if (OseeEventManager.getPreferences().isNewEvents()) {
- SMAEditorArtifactEventManager.add(this);
- SMAEditorBranchEventManager.add(this);
- }
-
- updatePartName();
-
- setContentDescription(priviledgedEditModeEnabled ? " PRIVILEGED EDIT MODE ENABLED" : "");
-
- // Create WorkFlow tab
- try {
- workFlowTab = new SMAWorkFlowTab(sma);
- workFlowPageIndex = addPage(workFlowTab);
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
-
- // Create Tasks tab
- if (sma.showTaskTab()) {
- createTaskTab();
- }
-
- createAttributesTab();
- createMetricsTab();
-
- setActivePage(workFlowPageIndex);
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
- }
-
- enableGlobalPrint();
- }
-
- private void createTaskTab() throws PartInitException {
- taskTabXWidgetActionPage = new TaskTabXWidgetActionPage(this);
- addPage(taskTabXWidgetActionPage);
- }
-
- private void updatePartName() throws OseeCoreException {
- setPartName(getTitleStr());
- setTitleImage(ArtifactImageManager.getImage(sma));
- }
-
- public String getTitleStr() throws OseeCoreException {
- return sma.getEditorTitle();
- }
-
- @Override
- public void doSave(IProgressMonitor monitor) {
- try {
- if (sma.isHistoricalVersion()) {
- AWorkbench.popup("Historical Error",
- "You can not change a historical version of " + sma.getArtifactTypeName() + ":\n\n" + sma);
- } else if (!sma.isAccessControlWrite()) {
- AWorkbench.popup("Authentication Error",
- "You do not have permissions to save " + sma.getArtifactTypeName() + ":" + sma);
- } else {
- try {
- SkynetTransaction transaction = new SkynetTransaction(AtsUtil.getAtsBranch(), "Workflow Editor - Save");
- // If change was made on Attribute tab, persist sma separately. This is cause attribute
- // tab changes conflict with XWidget changes
- if (attributesComposite != null && getActivePage() == attributesPageIndex) {
- sma.persist(transaction);
- }
- // Save widget data to artifact
- workFlowTab.saveXWidgetToArtifact();
- sma.saveSMA(transaction);
- transaction.execute();
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
- }
- onDirtied();
- }
-
- OseeNotificationManager.getInstance().sendNotifications();
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
- }
-
- public static void setLabelFonts(Control parent, Font font) {
- if (parent instanceof Label) {
- Label label = (Label) parent;
- label.setFont(font);
- }
- if (parent instanceof Composite) {
- Composite container = (Composite) parent;
- for (Control child : container.getChildren()) {
- setLabelFonts(child, font);
- }
- container.layout();
- }
- }
-
- void enableGlobalPrint() {
- printAction = new SMAPrint(sma);
- getEditorSite().getActionBars().setGlobalActionHandler(ActionFactory.PRINT.getId(), printAction);
- }
-
- @Override
- public boolean isSaveOnCloseNeeded() {
- return isDirty();
- }
-
- @Override
- public void dispose() {
- for (ISMAEditorListener listener : editorListeners) {
- listener.editorDisposing();
- }
- OseeEventManager.removeListener(this); // <REM2> Don't need this cause handled through SMAEditorEventManager
- SMAEditorArtifactEventManager.remove(this);
- SMAEditorBranchEventManager.remove(this);
- if (sma != null && !sma.isDeleted() && sma.isSMAEditorDirty().isTrue()) {
- sma.revertSMA();
- }
- workFlowTab.dispose();
- super.dispose();
- }
-
- @Override
- public boolean isDirty() {
- return isDirtyResult().isTrue();
- }
-
- public Result isDirtyResult() {
- if (sma.isDeleted()) {
- return Result.FalseResult;
- }
- try {
- Result result = workFlowTab.isXWidgetDirty();
- if (result.isTrue()) {
- return result;
- }
- result = ((StateMachineArtifact) ((SMAEditorInput) getEditorInput()).getArtifact()).isSMAEditorDirty();
- if (result.isTrue()) {
- return result;
- }
-
- String rString = null;
- for (Attribute<?> attribute : sma.internalGetAttributes()) {
- if (attribute.isDirty()) {
- rString = "Attribute: " + attribute.getNameValueDescription();
- break;
- }
- }
-
- if (rString == null) {
- rString = RelationManager.reportHasDirtyLinks(sma);
- }
-
- return new Result((rString != null), rString);
- } catch (OseeCoreException ex) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
- return new Result(true, ex.getLocalizedMessage());
- }
- }
-
- @Override
- public String toString() {
- return "SMAEditor - " + sma.getHumanReadableId() + " - " + sma.getArtifactTypeName() + " named \"" + sma.getName() + "\"";
- }
-
- @Override
- protected void createPages() {
- super.createPages();
- OseeContributionItem.addTo(this, true);
- }
-
- private void createMetricsTab() {
- try {
- Composite composite = AtsUtil.createCommonPageComposite(getContainer());
- createToolBar(composite);
- new AtsMetricsComposite(this, composite, SWT.NONE);
- metricsPageIndex = addPage(composite);
- setPageText(metricsPageIndex, "Metrics");
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
-
- }
-
- private void createAttributesTab() {
- try {
- if (!AtsUtil.isAtsAdmin()) {
- return;
- }
-
- // Create Attributes tab
- Composite composite = AtsUtil.createCommonPageComposite(getContainer());
- ToolBar toolBar = createToolBar(composite);
-
- ToolItem item = new ToolItem(toolBar, SWT.PUSH);
- item.setImage(ImageManager.getImage(FrameworkImage.SAVE));
- item.setToolTipText("Save attributes changes only");
- item.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- try {
- sma.persist();
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
- }
- }
- });
-
- Label label = new Label(composite, SWT.NONE);
- label.setText(" NOTE: Changes made on this page MUST be saved through save icon on this page");
- label.setForeground(Displays.getSystemColor(SWT.COLOR_RED));
-
- attributesComposite = new AttributesComposite(this, composite, SWT.NONE, sma);
- attributesPageIndex = addPage(composite);
- setPageText(attributesPageIndex, "Attributes");
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
- }
-
- private ToolBar createToolBar(Composite parent) {
- ToolBar toolBar = AtsUtil.createCommonToolBar(parent);
-
- OseeUiActions.addButtonToEditorToolBar(this, SkynetGuiPlugin.getInstance(), toolBar, EDITOR_ID, "ATS Editor");
- AtsUtil.actionToToolItem(toolBar, new ResourceHistoryAction(sma), FrameworkImage.EDIT_BLUE);
- AtsUtil.actionToToolItem(toolBar, new AccessControlAction(sma), FrameworkImage.AUTHENTICATED);
- AtsUtil.actionToToolItem(toolBar, new DirtyReportAction(sma), FrameworkImage.DIRTY);
- new ToolItem(toolBar, SWT.SEPARATOR);
- Text artifactInfoLabel = new Text(toolBar.getParent(), SWT.END);
- artifactInfoLabel.setEditable(false);
- artifactInfoLabel.setText("Type: \"" + sma.getArtifactTypeName() + "\" HRID: " + sma.getHumanReadableId());
- artifactInfoLabel.setToolTipText("The human readable id and database id for this artifact");
-
- return toolBar;
- }
-
- public void refreshPages() {
- try {
- if (getContainer() == null || getContainer().isDisposed()) {
- return;
- }
- if (workFlowTab != null) {
- workFlowTab.refresh();
- }
- if (attributesComposite != null) {
- attributesComposite.refreshArtifact(sma);
- }
- sma.getEditor().onDirtied();
- updatePartName();
- } catch (Exception ex) {
- // do nothing
- }
- }
-
- public static void editArtifact(Artifact artifact) throws OseeCoreException {
- if (artifact == null) {
- return;
- }
- if (artifact.isDeleted()) {
- AWorkbench.popup("ERROR", "Artifact has been deleted");
- return;
- }
- if (artifact instanceof StateMachineArtifact) {
- editArtifact((StateMachineArtifact) artifact);
- } else {
- RendererManager.open(artifact, PresentationType.GENERALIZED_EDIT);
- }
- }
-
- public static void editArtifact(final StateMachineArtifact sma) {
- if (sma == null) {
- return;
- }
- if (sma.isDeleted()) {
- AWorkbench.popup("ERROR", "Artifact has been deleted");
- return;
- }
- Displays.ensureInDisplayThread(new Runnable() {
- @Override
- public void run() {
- IWorkbenchPage page = AWorkbench.getActivePage();
- try {
- page.openEditor(new SMAEditorInput(sma), EDITOR_ID);
- VisitedItems.addVisited(sma);
- } catch (PartInitException ex) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
- }
- }
- });
-
- }
-
- @Override
- public void onDirtied() {
- Displays.ensureInDisplayThread(new Runnable() {
-
- @Override
- public void run() {
- firePropertyChange(PROP_DIRTY);
- }
- });
- }
-
- public static void close(final Collection<? extends StateMachineArtifact> artifacts, boolean save) {
- Displays.ensureInDisplayThread(new Runnable() {
- @Override
- public void run() {
- IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
- IEditorReference editors[] = page.getEditorReferences();
- for (int j = 0; j < editors.length; j++) {
- IEditorReference editor = editors[j];
- if (editor.getPart(false) instanceof SMAEditor) {
- if (artifacts.contains(((SMAEditor) editor.getPart(false)).getSma())) {
- ((SMAEditor) editor.getPart(false)).closeEditor();
- }
- }
- }
- }
- });
- }
-
- public static SMAEditor getSmaEditor(StateMachineArtifact artifact) {
- IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
- IEditorReference editors[] = page.getEditorReferences();
- for (int j = 0; j < editors.length; j++) {
- IEditorReference editor = editors[j];
- if (editor.getPart(false) instanceof SMAEditor) {
- if (((SMAEditor) editor.getPart(false)).getSma().equals(artifact)) {
- return (SMAEditor) editor.getPart(false);
- }
- }
- }
- return null;
- }
-
- public void closeEditor() {
- final MultiPageEditorPart editor = this;
- Displays.ensureInDisplayThread(new Runnable() {
- @Override
- public void run() {
- AWorkbench.getActivePage().closeEditor(editor, false);
- }
- });
- }
-
- @Override
- public StateMachineArtifact getSma() {
- return sma;
- }
-
- @Override
- public String getCurrentStateName() throws OseeCoreException {
- return sma.getStateMgr().getCurrentStateName();
- }
-
- @Override
- public IDirtiableEditor getEditor() {
- return this;
- }
-
- @Override
- public String getTabName() {
- return "Tasks";
- }
-
- @Override
- public Collection<TaskArtifact> getTaskArtifacts(String stateName) throws OseeCoreException {
- if (sma instanceof TaskableStateMachineArtifact) {
- if (!Strings.isValid(stateName)) {
- return ((TaskableStateMachineArtifact) sma).getTaskArtifacts();
- } else {
- return ((TaskableStateMachineArtifact) sma).getTaskArtifacts(stateName);
- }
- }
- return Collections.emptyList();
- }
-
- @Override
- public boolean isTaskable() throws OseeCoreException {
- return sma.isTaskable();
- }
-
- @Override
- public boolean isTasksEditable() throws OseeCoreException {
- return sma.isTaskable();
- }
-
- public boolean isPriviledgedEditModeEnabled() {
- return priviledgedEditModeEnabled;
- }
-
- /**
- * @param priviledgedEditMode the priviledgedEditMode to set s * @throws OseeCoreException
- */
- public void setPriviledgedEditMode(boolean enabled) {
- this.priviledgedEditModeEnabled = enabled;
- doSave(null);
- workFlowTab.refresh();
- }
-
- public boolean isAccessControlWrite() throws OseeCoreException {
- return AccessControlManager.hasPermission(sma, PermissionEnum.WRITE);
- }
-
- @Override
- public void handleBranchEventREM1(Sender sender, BranchEventType branchModType, int branchId) {
- try {
- handleBranchEvent(branchModType, BranchManager.getBranch(branchId));
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
- }
-
- private void handleBranchEvent(BranchEventType branchModType, Branch branch) {
- try {
- if (!sma.isTeamWorkflow()) {
- return;
- }
- if (sma.isInTransition()) {
- return;
- }
- if (branchModType == BranchEventType.Added || branchModType == BranchEventType.Deleted || branchModType == BranchEventType.Purged || branchModType == BranchEventType.Committed) {
- if (((TeamWorkFlowArtifact) sma).getBranchMgr().getId() == null || ((TeamWorkFlowArtifact) sma).getBranchMgr().getId() != branch.getId()) {
- return;
- }
- Displays.ensureInDisplayThread(new Runnable() {
- @Override
- public void run() {
- if (getContainer() == null || getContainer().isDisposed()) {
- return;
- }
- try {
- refreshPages();
- onDirtied();
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
- }
- });
- }
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
- }
-
- @Override
- public void handleFrameworkTransactionEvent(Sender sender, FrameworkTransactionData transData) throws OseeCoreException {
- if (sma.isInTransition()) {
- return;
- }
- if (transData.branchId != AtsUtil.getAtsBranch().getId()) {
- return;
- }
- if (transData.isDeleted(sma)) {
- Displays.ensureInDisplayThread(new Runnable() {
- @Override
- public void run() {
- closeEditor();
- }
- });
- } else if (transData.isHasEvent(sma)) {
- Displays.ensureInDisplayThread(new Runnable() {
- @Override
- public void run() {
- try {
- refreshPages();
- onDirtied();
- } catch (Exception ex) {
- // do nothing
- }
- }
- });
- } else if (sma.isTeamWorkflow() && ReviewManager.hasReviews((TeamWorkFlowArtifact) sma)) {
- try {
- // If related review has made a change, redraw
- for (ReviewSMArtifact reviewArt : ReviewManager.getReviews((TeamWorkFlowArtifact) sma)) {
- if (transData.isHasEvent(reviewArt)) {
- Displays.ensureInDisplayThread(new Runnable() {
- @Override
- public void run() {
- try {
- refreshPages();
- onDirtied();
- } catch (Exception ex) {
- // do nothing
- }
- }
- });
- // Only refresh editor for first review that has event
- break;
- }
- }
- } catch (Exception ex) {
- // do nothings
- }
- }
- onDirtied();
- }
-
- @Override
- public void handleArtifactsPurgedEvent(Sender sender, LoadedArtifacts loadedArtifacts) {
- try {
- if (loadedArtifacts.getLoadedArtifacts().contains(sma)) {
- Displays.ensureInDisplayThread(new Runnable() {
- @Override
- public void run() {
- closeEditor();
- }
- });
- }
- } catch (Exception ex) {
+/*******************************************************************************
+ * 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.editor;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Set;
+import java.util.logging.Level;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.osee.ats.actions.AccessControlAction;
+import org.eclipse.osee.ats.actions.DirtyReportAction;
+import org.eclipse.osee.ats.actions.ISelectedAtsArtifacts;
+import org.eclipse.osee.ats.actions.ResourceHistoryAction;
+import org.eclipse.osee.ats.artifact.ReviewSMArtifact;
+import org.eclipse.osee.ats.artifact.StateMachineArtifact;
+import org.eclipse.osee.ats.artifact.TaskArtifact;
+import org.eclipse.osee.ats.artifact.TaskableStateMachineArtifact;
+import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact;
+import org.eclipse.osee.ats.artifact.VersionArtifact;
+import org.eclipse.osee.ats.internal.AtsPlugin;
+import org.eclipse.osee.ats.navigate.VisitedItems;
+import org.eclipse.osee.ats.task.IXTaskViewer;
+import org.eclipse.osee.ats.task.TaskComposite;
+import org.eclipse.osee.ats.task.TaskTabXWidgetActionPage;
+import org.eclipse.osee.ats.util.AtsUtil;
+import org.eclipse.osee.ats.util.widgets.ReviewManager;
+import org.eclipse.osee.ats.world.AtsMetricsComposite;
+import org.eclipse.osee.ats.world.IAtsMetricsProvider;
+import org.eclipse.osee.framework.access.AccessControlManager;
+import org.eclipse.osee.framework.core.enums.PermissionEnum;
+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.Strings;
+import org.eclipse.osee.framework.logging.OseeLevel;
+import org.eclipse.osee.framework.logging.OseeLog;
+import org.eclipse.osee.framework.plugin.core.IActionable;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.Attribute;
+import org.eclipse.osee.framework.skynet.core.artifact.BranchManager;
+import org.eclipse.osee.framework.skynet.core.event.BranchEventType;
+import org.eclipse.osee.framework.skynet.core.event.FrameworkTransactionData;
+import org.eclipse.osee.framework.skynet.core.event.IArtifactReloadEventListener;
+import org.eclipse.osee.framework.skynet.core.event.IArtifactsPurgedEventListener;
+import org.eclipse.osee.framework.skynet.core.event.IBranchEventListener;
+import org.eclipse.osee.framework.skynet.core.event.IFrameworkTransactionEventListener;
+import org.eclipse.osee.framework.skynet.core.event.OseeEventManager;
+import org.eclipse.osee.framework.skynet.core.event.Sender;
+import org.eclipse.osee.framework.skynet.core.event2.BranchEvent;
+import org.eclipse.osee.framework.skynet.core.event2.filter.IEventFilter;
+import org.eclipse.osee.framework.skynet.core.relation.RelationManager;
+import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction;
+import org.eclipse.osee.framework.skynet.core.utility.LoadedArtifacts;
+import org.eclipse.osee.framework.ui.plugin.OseeUiActions;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
+import org.eclipse.osee.framework.ui.plugin.util.Result;
+import org.eclipse.osee.framework.ui.skynet.ArtifactImageManager;
+import org.eclipse.osee.framework.ui.skynet.AttributesComposite;
+import org.eclipse.osee.framework.ui.skynet.FrameworkImage;
+import org.eclipse.osee.framework.ui.skynet.OseeContributionItem;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.osee.framework.ui.skynet.artifact.editor.AbstractArtifactEditor;
+import org.eclipse.osee.framework.ui.skynet.notify.OseeNotificationManager;
+import org.eclipse.osee.framework.ui.skynet.render.PresentationType;
+import org.eclipse.osee.framework.ui.skynet.render.RendererManager;
+import org.eclipse.osee.framework.ui.swt.Displays;
+import org.eclipse.osee.framework.ui.swt.IDirtiableEditor;
+import org.eclipse.osee.framework.ui.swt.ImageManager;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.graphics.Font;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.swt.widgets.ToolBar;
+import org.eclipse.swt.widgets.ToolItem;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IEditorReference;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.actions.ActionFactory;
+import org.eclipse.ui.part.MultiPageEditorPart;
+
+/**
+ * <REM2>
+ *
+ * @author Donald G. Dunne
+ */
+public class SMAEditor extends AbstractArtifactEditor implements ISMAEditorEventHandler, ISelectedAtsArtifacts, IActionable, IArtifactReloadEventListener, IAtsMetricsProvider, IArtifactsPurgedEventListener, IFrameworkTransactionEventListener, IBranchEventListener, IXTaskViewer {
+ public static final String EDITOR_ID = "org.eclipse.osee.ats.editor.SMAEditor";
+ private StateMachineArtifact sma;
+ private int workFlowPageIndex, metricsPageIndex, attributesPageIndex;
+ private SMAWorkFlowTab workFlowTab;
+ private AttributesComposite attributesComposite;
+ private boolean priviledgedEditModeEnabled = false;
+ private Action printAction;
+ private TaskTabXWidgetActionPage taskTabXWidgetActionPage;
+ private final List<ISMAEditorListener> editorListeners = new ArrayList<ISMAEditorListener>();
+
+ public SMAEditor() {
+ super();
+ }
+
+ @Override
+ protected void addPages() {
+ try {
+ IEditorInput editorInput = getEditorInput();
+ if (editorInput instanceof SMAEditorInput) {
+ SMAEditorInput aei = (SMAEditorInput) editorInput;
+ if (aei.getArtifact() != null) {
+ if (aei.getArtifact() instanceof StateMachineArtifact) {
+ sma = (StateMachineArtifact) aei.getArtifact();
+ } else {
+ throw new OseeArgumentException("SMAEditorInput artifact must be StateMachineArtifact");
+ }
+ }
+ } else {
+ throw new OseeArgumentException("Editor Input not SMAEditorInput");
+ }
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
+ return;
+ }
+
+ if (sma == null) {
+ MessageDialog.openError(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), "Open Error",
+ "Can't Find Action in DB");
+ return;
+ }
+ try {
+ sma.setEditor(this);
+ if (OseeEventManager.getPreferences().isOldEvents()) {
+ OseeEventManager.addListener(this); // <REM2> Don't need this cause handled through SMAEditorEventManager
+ } else if (OseeEventManager.getPreferences().isNewEvents()) {
+ SMAEditorArtifactEventManager.add(this);
+ SMAEditorBranchEventManager.add(this);
+ }
+
+ updatePartName();
+
+ setContentDescription(priviledgedEditModeEnabled ? " PRIVILEGED EDIT MODE ENABLED" : "");
+
+ // Create WorkFlow tab
+ try {
+ workFlowTab = new SMAWorkFlowTab(sma);
+ workFlowPageIndex = addPage(workFlowTab);
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ }
+
+ // Create Tasks tab
+ if (sma.showTaskTab()) {
+ createTaskTab();
+ }
+
+ createAttributesTab();
+ createMetricsTab();
+
+ setActivePage(workFlowPageIndex);
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
+ }
+
+ enableGlobalPrint();
+ }
+
+ private void createTaskTab() throws PartInitException {
+ taskTabXWidgetActionPage = new TaskTabXWidgetActionPage(this);
+ addPage(taskTabXWidgetActionPage);
+ }
+
+ private void updatePartName() throws OseeCoreException {
+ setPartName(getTitleStr());
+ setTitleImage(ArtifactImageManager.getImage(sma));
+ }
+
+ public String getTitleStr() throws OseeCoreException {
+ return sma.getEditorTitle();
+ }
+
+ @Override
+ public void doSave(IProgressMonitor monitor) {
+ try {
+ if (sma.isHistoricalVersion()) {
+ AWorkbench.popup("Historical Error",
+ "You can not change a historical version of " + sma.getArtifactTypeName() + ":\n\n" + sma);
+ } else if (!sma.isAccessControlWrite()) {
+ AWorkbench.popup("Authentication Error",
+ "You do not have permissions to save " + sma.getArtifactTypeName() + ":" + sma);
+ } else {
+ try {
+ SkynetTransaction transaction = new SkynetTransaction(AtsUtil.getAtsBranch(), "Workflow Editor - Save");
+ // If change was made on Attribute tab, persist sma separately. This is cause attribute
+ // tab changes conflict with XWidget changes
+ if (attributesComposite != null && getActivePage() == attributesPageIndex) {
+ sma.persist(transaction);
+ }
+ // Save widget data to artifact
+ workFlowTab.saveXWidgetToArtifact();
+ sma.saveSMA(transaction);
+ transaction.execute();
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
+ }
+ onDirtied();
+ }
+
+ OseeNotificationManager.getInstance().sendNotifications();
+ } catch (Exception ex) {
OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
- }
-
- @Override
- public String getActionDescription() {
- return null;
- }
-
- @Override
- public Collection<? extends Artifact> getMetricsArtifacts() {
- return Arrays.asList(sma);
- }
-
- @Override
- public VersionArtifact getMetricsVersionArtifact() throws OseeCoreException {
- return sma.getWorldViewTargetedVersion();
- }
-
- @Override
- public void handleRefreshAction() {
- // do nothing
- }
-
- @Override
- public boolean isRefreshActionHandled() {
- return false;
- }
-
- @Override
- public double getManHoursPerDayPreference() throws OseeCoreException {
- return sma.getManHrsPerDayPreference();
- }
-
- public SMAWorkFlowTab getWorkFlowTab() {
- return workFlowTab;
- }
-
- public TaskComposite getTaskComposite() {
- return taskTabXWidgetActionPage.getTaskComposite();
- }
-
- @Override
- public void handleReloadEvent(Sender sender, Collection<? extends Artifact> artifacts) throws OseeCoreException {
- boolean reload = false;
- if (artifacts.contains(sma)) {
- reload = true;
- }
- if (!reload) {
- if (sma instanceof TaskableStateMachineArtifact) {
- for (TaskArtifact taskArt : ((TaskableStateMachineArtifact) sma).getTaskArtifacts()) {
- if (artifacts.contains(taskArt)) {
- reload = true;
- break;
- }
- }
- }
- }
- if (!reload && sma.isTeamWorkflow()) {
- for (ReviewSMArtifact reviewArt : ReviewManager.getReviews((TeamWorkFlowArtifact) sma)) {
- if (artifacts.contains(reviewArt)) {
- reload = true;
- break;
- }
-
- }
- }
- if (reload) {
- SMAEditor.close(Collections.singleton(sma), false);
- if (!sma.isDeleted()) {
- SMAEditor.editArtifact(sma);
- }
- }
- }
-
- @Override
- public IActionable getActionable() {
- return this;
- }
-
- @Override
- public Set<? extends Artifact> getSelectedSMAArtifacts() {
- return Collections.singleton(sma);
- }
-
- public Action getPrintAction() {
- return printAction;
- }
-
- @Override
- public IEditorPart getActiveEditor() {
- return this;
- }
-
- @Override
- public SMAEditor getSMAEditor() {
- return this;
- }
-
- @Override
- public boolean isDisposed() {
- return getContainer() == null || getContainer().isDisposed();
- }
-
- @Override
- public void handleBranchEvent(Sender sender, BranchEvent branchEvent) {
- try {
- handleBranchEvent(branchEvent.getEventType(), BranchManager.getBranchByGuid(branchEvent.getBranchGuid()));
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
- }
-
- @Override
- public List<? extends IEventFilter> getEventFilters() {
- return OseeEventManager.getCommonBranchEventFilters();
- }
-
- public void addEditorListeners(ISMAEditorListener listener) {
- editorListeners.add(listener);
- }
-
- @Override
- public List<Artifact> getSelectedAtsArtifacts() {
- List<Artifact> arts = new ArrayList<Artifact>();
- arts.add(sma);
- return arts;
- }
+ }
+ }
+
+ public static void setLabelFonts(Control parent, Font font) {
+ if (parent instanceof Label) {
+ Label label = (Label) parent;
+ label.setFont(font);
+ }
+ if (parent instanceof Composite) {
+ Composite container = (Composite) parent;
+ for (Control child : container.getChildren()) {
+ setLabelFonts(child, font);
+ }
+ container.layout();
+ }
+ }
+
+ void enableGlobalPrint() {
+ printAction = new SMAPrint(sma);
+ getEditorSite().getActionBars().setGlobalActionHandler(ActionFactory.PRINT.getId(), printAction);
+ }
+
+ @Override
+ public boolean isSaveOnCloseNeeded() {
+ return isDirty();
+ }
+
+ @Override
+ public void dispose() {
+ for (ISMAEditorListener listener : editorListeners) {
+ listener.editorDisposing();
+ }
+ OseeEventManager.removeListener(this); // <REM2> Don't need this cause handled through SMAEditorEventManager
+ SMAEditorArtifactEventManager.remove(this);
+ SMAEditorBranchEventManager.remove(this);
+ if (sma != null && !sma.isDeleted() && sma.isSMAEditorDirty().isTrue()) {
+ sma.revertSMA();
+ }
+ workFlowTab.dispose();
+ super.dispose();
+ }
+
+ @Override
+ public boolean isDirty() {
+ return isDirtyResult().isTrue();
+ }
+
+ public Result isDirtyResult() {
+ if (sma.isDeleted()) {
+ return Result.FalseResult;
+ }
+ try {
+ Result result = workFlowTab.isXWidgetDirty();
+ if (result.isTrue()) {
+ return result;
+ }
+ result = ((StateMachineArtifact) ((SMAEditorInput) getEditorInput()).getArtifact()).isSMAEditorDirty();
+ if (result.isTrue()) {
+ return result;
+ }
+
+ String rString = null;
+ for (Attribute<?> attribute : sma.internalGetAttributes()) {
+ if (attribute.isDirty()) {
+ rString = "Attribute: " + attribute.getNameValueDescription();
+ break;
+ }
+ }
+
+ if (rString == null) {
+ rString = RelationManager.reportHasDirtyLinks(sma);
+ }
+
+ return new Result((rString != null), rString);
+ } catch (OseeCoreException ex) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
+ return new Result(true, ex.getLocalizedMessage());
+ }
+ }
+
+ @Override
+ public String toString() {
+ return "SMAEditor - " + sma.getHumanReadableId() + " - " + sma.getArtifactTypeName() + " named \"" + sma.getName() + "\"";
+ }
+
+ @Override
+ protected void createPages() {
+ super.createPages();
+ OseeContributionItem.addTo(this, true);
+ }
+
+ private void createMetricsTab() {
+ try {
+ Composite composite = AtsUtil.createCommonPageComposite(getContainer());
+ createToolBar(composite);
+ new AtsMetricsComposite(this, composite, SWT.NONE);
+ metricsPageIndex = addPage(composite);
+ setPageText(metricsPageIndex, "Metrics");
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ }
+
+ }
+
+ private void createAttributesTab() {
+ try {
+ if (!AtsUtil.isAtsAdmin()) {
+ return;
+ }
+
+ // Create Attributes tab
+ Composite composite = AtsUtil.createCommonPageComposite(getContainer());
+ ToolBar toolBar = createToolBar(composite);
+
+ ToolItem item = new ToolItem(toolBar, SWT.PUSH);
+ item.setImage(ImageManager.getImage(FrameworkImage.SAVE));
+ item.setToolTipText("Save attributes changes only");
+ item.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ try {
+ sma.persist();
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
+ }
+ }
+ });
+
+ Label label = new Label(composite, SWT.NONE);
+ label.setText(" NOTE: Changes made on this page MUST be saved through save icon on this page");
+ label.setForeground(Displays.getSystemColor(SWT.COLOR_RED));
+
+ attributesComposite = new AttributesComposite(this, composite, SWT.NONE, sma);
+ attributesPageIndex = addPage(composite);
+ setPageText(attributesPageIndex, "Attributes");
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ }
+ }
+
+ private ToolBar createToolBar(Composite parent) {
+ ToolBar toolBar = AtsUtil.createCommonToolBar(parent);
+
+ OseeUiActions.addButtonToEditorToolBar(this, SkynetGuiPlugin.getInstance(), toolBar, EDITOR_ID, "ATS Editor");
+ AtsUtil.actionToToolItem(toolBar, new ResourceHistoryAction(sma), FrameworkImage.EDIT_BLUE);
+ AtsUtil.actionToToolItem(toolBar, new AccessControlAction(sma), FrameworkImage.AUTHENTICATED);
+ AtsUtil.actionToToolItem(toolBar, new DirtyReportAction(sma), FrameworkImage.DIRTY);
+ new ToolItem(toolBar, SWT.SEPARATOR);
+ Text artifactInfoLabel = new Text(toolBar.getParent(), SWT.END);
+ artifactInfoLabel.setEditable(false);
+ artifactInfoLabel.setText("Type: \"" + sma.getArtifactTypeName() + "\" HRID: " + sma.getHumanReadableId());
+ artifactInfoLabel.setToolTipText("The human readable id and database id for this artifact");
+
+ return toolBar;
+ }
+
+ public void refreshPages() {
+ try {
+ if (getContainer() == null || getContainer().isDisposed()) {
+ return;
+ }
+ if (workFlowTab != null) {
+ workFlowTab.refresh();
+ }
+ if (attributesComposite != null) {
+ attributesComposite.refreshArtifact(sma);
+ }
+ sma.getEditor().onDirtied();
+ updatePartName();
+ } catch (Exception ex) {
+ // do nothing
+ }
+ }
+
+ public static void editArtifact(Artifact artifact) throws OseeCoreException {
+ if (artifact == null) {
+ return;
+ }
+ if (artifact.isDeleted()) {
+ AWorkbench.popup("ERROR", "Artifact has been deleted");
+ return;
+ }
+ if (artifact instanceof StateMachineArtifact) {
+ editArtifact((StateMachineArtifact) artifact);
+ } else {
+ RendererManager.open(artifact, PresentationType.GENERALIZED_EDIT);
+ }
+ }
+
+ public static void editArtifact(final StateMachineArtifact sma) {
+ if (sma == null) {
+ return;
+ }
+ if (sma.isDeleted()) {
+ AWorkbench.popup("ERROR", "Artifact has been deleted");
+ return;
+ }
+ Displays.ensureInDisplayThread(new Runnable() {
+ @Override
+ public void run() {
+ IWorkbenchPage page = AWorkbench.getActivePage();
+ try {
+ page.openEditor(new SMAEditorInput(sma), EDITOR_ID);
+ VisitedItems.addVisited(sma);
+ } catch (PartInitException ex) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
+ }
+ }
+ });
+
+ }
+
+ @Override
+ public void onDirtied() {
+ Displays.ensureInDisplayThread(new Runnable() {
+
+ @Override
+ public void run() {
+ firePropertyChange(PROP_DIRTY);
+ }
+ });
+ }
+
+ public static void close(final Collection<? extends StateMachineArtifact> artifacts, boolean save) {
+ Displays.ensureInDisplayThread(new Runnable() {
+ @Override
+ public void run() {
+ IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
+ IEditorReference editors[] = page.getEditorReferences();
+ for (int j = 0; j < editors.length; j++) {
+ IEditorReference editor = editors[j];
+ if (editor.getPart(false) instanceof SMAEditor) {
+ if (artifacts.contains(((SMAEditor) editor.getPart(false)).getSma())) {
+ ((SMAEditor) editor.getPart(false)).closeEditor();
+ }
+ }
+ }
+ }
+ });
+ }
+
+ public static SMAEditor getSmaEditor(StateMachineArtifact artifact) {
+ IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
+ IEditorReference editors[] = page.getEditorReferences();
+ for (int j = 0; j < editors.length; j++) {
+ IEditorReference editor = editors[j];
+ if (editor.getPart(false) instanceof SMAEditor) {
+ if (((SMAEditor) editor.getPart(false)).getSma().equals(artifact)) {
+ return (SMAEditor) editor.getPart(false);
+ }
+ }
+ }
+ return null;
+ }
+
+ public void closeEditor() {
+ final MultiPageEditorPart editor = this;
+ Displays.ensureInDisplayThread(new Runnable() {
+ @Override
+ public void run() {
+ AWorkbench.getActivePage().closeEditor(editor, false);
+ }
+ });
+ }
+
+ @Override
+ public StateMachineArtifact getSma() {
+ return sma;
+ }
+
+ @Override
+ public String getCurrentStateName() throws OseeCoreException {
+ return sma.getStateMgr().getCurrentStateName();
+ }
+
+ @Override
+ public IDirtiableEditor getEditor() {
+ return this;
+ }
+
+ @Override
+ public String getTabName() {
+ return "Tasks";
+ }
+
+ @Override
+ public Collection<TaskArtifact> getTaskArtifacts(String stateName) throws OseeCoreException {
+ if (sma instanceof TaskableStateMachineArtifact) {
+ if (!Strings.isValid(stateName)) {
+ return ((TaskableStateMachineArtifact) sma).getTaskArtifacts();
+ } else {
+ return ((TaskableStateMachineArtifact) sma).getTaskArtifacts(stateName);
+ }
+ }
+ return Collections.emptyList();
+ }
+
+ @Override
+ public boolean isTaskable() throws OseeCoreException {
+ return sma.isTaskable();
+ }
+
+ @Override
+ public boolean isTasksEditable() throws OseeCoreException {
+ return sma.isTaskable();
+ }
+
+ public boolean isPriviledgedEditModeEnabled() {
+ return priviledgedEditModeEnabled;
+ }
+
+ /**
+ * @param priviledgedEditMode the priviledgedEditMode to set s * @throws OseeCoreException
+ */
+ public void setPriviledgedEditMode(boolean enabled) {
+ this.priviledgedEditModeEnabled = enabled;
+ doSave(null);
+ workFlowTab.refresh();
+ }
+
+ public boolean isAccessControlWrite() throws OseeCoreException {
+ return AccessControlManager.hasPermission(sma, PermissionEnum.WRITE);
+ }
+
+ @Override
+ public void handleBranchEventREM1(Sender sender, BranchEventType branchModType, int branchId) {
+ try {
+ handleBranchEvent(branchModType, BranchManager.getBranch(branchId));
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ }
+ }
+
+ private void handleBranchEvent(BranchEventType branchModType, Branch branch) {
+ try {
+ if (!sma.isTeamWorkflow()) {
+ return;
+ }
+ if (sma.isInTransition()) {
+ return;
+ }
+ if (branchModType == BranchEventType.Added || branchModType == BranchEventType.Deleted || branchModType == BranchEventType.Purged || branchModType == BranchEventType.Committed) {
+ if (((TeamWorkFlowArtifact) sma).getBranchMgr().getId() == null || ((TeamWorkFlowArtifact) sma).getBranchMgr().getId() != branch.getId()) {
+ return;
+ }
+ Displays.ensureInDisplayThread(new Runnable() {
+ @Override
+ public void run() {
+ if (getContainer() == null || getContainer().isDisposed()) {
+ return;
+ }
+ try {
+ refreshPages();
+ onDirtied();
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ }
+ }
+ });
+ }
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ }
+ }
+
+ @Override
+ public void handleFrameworkTransactionEvent(Sender sender, FrameworkTransactionData transData) throws OseeCoreException {
+ if (sma.isInTransition()) {
+ return;
+ }
+ if (transData.branchId != AtsUtil.getAtsBranch().getId()) {
+ return;
+ }
+ if (transData.isDeleted(sma)) {
+ Displays.ensureInDisplayThread(new Runnable() {
+ @Override
+ public void run() {
+ closeEditor();
+ }
+ });
+ } else if (transData.isHasEvent(sma)) {
+ Displays.ensureInDisplayThread(new Runnable() {
+ @Override
+ public void run() {
+ try {
+ refreshPages();
+ onDirtied();
+ } catch (Exception ex) {
+ // do nothing
+ }
+ }
+ });
+ } else if (sma.isTeamWorkflow() && ReviewManager.hasReviews((TeamWorkFlowArtifact) sma)) {
+ try {
+ // If related review has made a change, redraw
+ for (ReviewSMArtifact reviewArt : ReviewManager.getReviews((TeamWorkFlowArtifact) sma)) {
+ if (transData.isHasEvent(reviewArt)) {
+ Displays.ensureInDisplayThread(new Runnable() {
+ @Override
+ public void run() {
+ try {
+ refreshPages();
+ onDirtied();
+ } catch (Exception ex) {
+ // do nothing
+ }
+ }
+ });
+ // Only refresh editor for first review that has event
+ break;
+ }
+ }
+ } catch (Exception ex) {
+ // do nothings
+ }
+ }
+ onDirtied();
+ }
+
+ @Override
+ public void handleArtifactsPurgedEvent(Sender sender, LoadedArtifacts loadedArtifacts) {
+ try {
+ if (loadedArtifacts.getLoadedArtifacts().contains(sma)) {
+ Displays.ensureInDisplayThread(new Runnable() {
+ @Override
+ public void run() {
+ closeEditor();
+ }
+ });
+ }
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ }
+ }
+
+ @Override
+ public String getActionDescription() {
+ return null;
+ }
+
+ @Override
+ public Collection<? extends Artifact> getMetricsArtifacts() {
+ return Arrays.asList(sma);
+ }
+
+ @Override
+ public VersionArtifact getMetricsVersionArtifact() throws OseeCoreException {
+ return sma.getWorldViewTargetedVersion();
+ }
+
+ @Override
+ public void handleRefreshAction() {
+ // do nothing
+ }
+
+ @Override
+ public boolean isRefreshActionHandled() {
+ return false;
+ }
+
+ @Override
+ public double getManHoursPerDayPreference() throws OseeCoreException {
+ return sma.getManHrsPerDayPreference();
+ }
+
+ public SMAWorkFlowTab getWorkFlowTab() {
+ return workFlowTab;
+ }
+
+ public TaskComposite getTaskComposite() {
+ return taskTabXWidgetActionPage.getTaskComposite();
+ }
+
+ @Override
+ public void handleReloadEvent(Sender sender, Collection<? extends Artifact> artifacts) throws OseeCoreException {
+ boolean reload = false;
+ if (artifacts.contains(sma)) {
+ reload = true;
+ }
+ if (!reload) {
+ if (sma instanceof TaskableStateMachineArtifact) {
+ for (TaskArtifact taskArt : ((TaskableStateMachineArtifact) sma).getTaskArtifacts()) {
+ if (artifacts.contains(taskArt)) {
+ reload = true;
+ break;
+ }
+ }
+ }
+ }
+ if (!reload && sma.isTeamWorkflow()) {
+ for (ReviewSMArtifact reviewArt : ReviewManager.getReviews((TeamWorkFlowArtifact) sma)) {
+ if (artifacts.contains(reviewArt)) {
+ reload = true;
+ break;
+ }
+
+ }
+ }
+ if (reload) {
+ SMAEditor.close(Collections.singleton(sma), false);
+ if (!sma.isDeleted()) {
+ SMAEditor.editArtifact(sma);
+ }
+ }
+ }
+
+ @Override
+ public IActionable getActionable() {
+ return this;
+ }
+
+ @Override
+ public Set<? extends Artifact> getSelectedSMAArtifacts() {
+ return Collections.singleton(sma);
+ }
+
+ public Action getPrintAction() {
+ return printAction;
+ }
+
+ @Override
+ public IEditorPart getActiveEditor() {
+ return this;
+ }
+
+ @Override
+ public SMAEditor getSMAEditor() {
+ return this;
+ }
+
+ @Override
+ public boolean isDisposed() {
+ return getContainer() == null || getContainer().isDisposed();
+ }
+
+ @Override
+ public void handleBranchEvent(Sender sender, BranchEvent branchEvent) {
+ try {
+ handleBranchEvent(branchEvent.getEventType(), BranchManager.getBranchByGuid(branchEvent.getBranchGuid()));
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ }
+ }
+
+ @Override
+ public List<? extends IEventFilter> getEventFilters() {
+ return OseeEventManager.getCommonBranchEventFilters();
+ }
+
+ public void addEditorListeners(ISMAEditorListener listener) {
+ editorListeners.add(listener);
+ }
+
+ @Override
+ public List<Artifact> getSelectedAtsArtifacts() {
+ List<Artifact> arts = new ArrayList<Artifact>();
+ arts.add(sma);
+ return arts;
+ }
} \ No newline at end of file
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAEditorArtifactEventManager.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAEditorArtifactEventManager.java
index caf113f61f1..686f9d58d7d 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAEditorArtifactEventManager.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAEditorArtifactEventManager.java
@@ -95,7 +95,7 @@ public class SMAEditorArtifactEventManager implements IArtifactEventListener {
} else if (artifactEvent.isModifiedReloaded(sma) ||
//
artifactEvent.isRelAddedChangedDeleted(sma) ||
- //
+ //
artifactEvent.isModifiedReloaded(actionArt) ||
//
artifactEvent.isRelAddedChangedDeleted(actionArt)) {
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAEditorInput.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAEditorInput.java
index dea5f5a85dd..03be3138182 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAEditorInput.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAEditorInput.java
@@ -1,48 +1,48 @@
-/*******************************************************************************
- * 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.editor;
-
-import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
-import org.eclipse.osee.framework.ui.skynet.artifact.editor.BaseArtifactEditorInput;
-
-/**
- * @author Donald G. Dunne
- */
-public class SMAEditorInput extends BaseArtifactEditorInput {
-
- private final boolean pend;
-
- public SMAEditorInput(Artifact artifact) {
- this(artifact, false);
- }
-
- public SMAEditorInput(Artifact artifact, boolean pend) {
- super(artifact);
- this.pend = pend;
- }
-
- @Override
- public boolean equals(Object obj) {
- if (obj instanceof SMAEditorInput) {
- return getArtifact() == ((SMAEditorInput) obj).getArtifact();
- }
- return false;
- }
-
- @Override
- public int hashCode() {
- return getArtifact().hashCode();
- }
-
- public boolean isPend() {
- return pend;
- }
-}
+/*******************************************************************************
+ * 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.editor;
+
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.ui.skynet.artifact.editor.BaseArtifactEditorInput;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class SMAEditorInput extends BaseArtifactEditorInput {
+
+ private final boolean pend;
+
+ public SMAEditorInput(Artifact artifact) {
+ this(artifact, false);
+ }
+
+ public SMAEditorInput(Artifact artifact, boolean pend) {
+ super(artifact);
+ this.pend = pend;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj instanceof SMAEditorInput) {
+ return getArtifact() == ((SMAEditorInput) obj).getArtifact();
+ }
+ return false;
+ }
+
+ @Override
+ public int hashCode() {
+ return getArtifact().hashCode();
+ }
+
+ public boolean isPend() {
+ return pend;
+ }
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAGoalMembersSection.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAGoalMembersSection.java
index 0f5c5d9e468..22ff047c3f7 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAGoalMembersSection.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAGoalMembersSection.java
@@ -1,410 +1,410 @@
-/*******************************************************************************
- * 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.editor;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.logging.Level;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.ActionContributionItem;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.action.Separator;
-import org.eclipse.nebula.widgets.xviewer.customize.CustomizeData;
-import org.eclipse.osee.ats.AtsImage;
-import org.eclipse.osee.ats.actions.ISelectedAtsArtifacts;
-import org.eclipse.osee.ats.artifact.GoalArtifact;
-import org.eclipse.osee.ats.artifact.StateMachineArtifact;
-import org.eclipse.osee.ats.goal.GoalXViewerFactory;
-import org.eclipse.osee.ats.goal.RemoveFromGoalAction;
-import org.eclipse.osee.ats.goal.SetGoalOrderAction;
-import org.eclipse.osee.ats.internal.AtsPlugin;
-import org.eclipse.osee.ats.util.AtsArtifactTypes;
-import org.eclipse.osee.ats.util.AtsRelationTypes;
-import org.eclipse.osee.ats.world.IMenuActionProvider;
-import org.eclipse.osee.ats.world.IWorldEditor;
-import org.eclipse.osee.ats.world.IWorldEditorProvider;
-import org.eclipse.osee.ats.world.WorldComposite;
-import org.eclipse.osee.ats.world.WorldLabelProvider;
-import org.eclipse.osee.ats.world.WorldXViewer;
-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.plugin.core.IActionable;
-import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
-import org.eclipse.osee.framework.ui.plugin.xnavigate.XNavigateComposite.TableLoadOption;
-import org.eclipse.osee.framework.ui.skynet.XFormToolkit;
-import org.eclipse.osee.framework.ui.skynet.artifact.editor.ArtifactEditor;
-import org.eclipse.osee.framework.ui.skynet.util.ArtifactDragAndDrop;
-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.Widgets;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.ToolBar;
-import org.eclipse.swt.widgets.ToolItem;
-import org.eclipse.ui.forms.IManagedForm;
-import org.eclipse.ui.forms.SectionPart;
-import org.eclipse.ui.forms.widgets.ExpandableComposite;
-import org.eclipse.ui.forms.widgets.FormToolkit;
-import org.eclipse.ui.forms.widgets.Section;
-
-/**
- * @author Roberto E. Escobar
- * @author Donald G. Dunne
- */
-public class SMAGoalMembersSection extends SectionPart implements ISelectedAtsArtifacts, IWorldEditor, IMenuActionProvider {
-
- private final SMAEditor editor;
- private WorldComposite worldComposite;
- private static final Map<SMAEditor, CustomizeData> editorToCustDataMap = new HashMap<SMAEditor, CustomizeData>(20);
- private static Map<SMAEditor, Boolean> editorToTableExpanded = new HashMap<SMAEditor, Boolean>();
- private final static int DEFAULT_TABLE_HEIGHT = 400;
-
- public SMAGoalMembersSection(SMAEditor editor, Composite parent, XFormToolkit toolkit, int style) {
- super(parent, toolkit, style | ExpandableComposite.TITLE_BAR);
- this.editor = editor;
- }
-
- @Override
- public void initialize(final IManagedForm form) {
- super.initialize(form);
- final FormToolkit toolkit = form.getToolkit();
-
- Section section = getSection();
- section.setText("Members");
-
- section.setLayout(new GridLayout());
- section.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
-
- Composite sectionBody = toolkit.createComposite(section, toolkit.getBorderStyle());
- sectionBody.setLayout(ALayout.getZeroMarginLayout(2, false));
- GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true);
- gd.widthHint = 300;
- sectionBody.setLayoutData(gd);
-
- ToolBar toolBar = createToolBar(sectionBody);
- addDropToAddLabel(toolkit, sectionBody);
- addDropToRemoveLabel(toolkit, sectionBody);
-
- createWorldComposite(sectionBody);
- createActions();
- setupListenersForCustomizeDataCaching();
- fillActionBar(toolBar);
-
- section.setClient(sectionBody);
- toolkit.paintBordersFor(section);
-
- RefreshTableSizeJob job = new RefreshTableSizeJob("");
- job.schedule(300);
- }
-
- private class RefreshTableSizeJob extends Job {
- public RefreshTableSizeJob(String name) {
- super(name);
- }
-
- @Override
- protected IStatus run(IProgressMonitor monitor) {
- Displays.ensureInDisplayThread(new Runnable() {
- @Override
- public void run() {
- refreshTableSize();
- }
- });
- return Status.OK_STATUS;
- }
- }
-
- private ToolBar createToolBar(Composite parent) {
- Composite actionComp = new Composite(parent, SWT.NONE);
- actionComp.setLayout(ALayout.getZeroMarginLayout());
- GridData gd = new GridData(SWT.FILL, SWT.NONE, true, false);
- gd.horizontalSpan = 2;
- actionComp.setLayoutData(gd);
-
- ToolBar toolBar = new ToolBar(actionComp, SWT.FLAT | SWT.RIGHT);
- gd = new GridData(GridData.FILL_HORIZONTAL);
- toolBar.setLayoutData(gd);
-
- ToolItem expandItem = new ToolItem(toolBar, SWT.PUSH);
- expandItem.setImage(ImageManager.getImage(AtsImage.EXPAND_TABLE));
- expandItem.setToolTipText("Expand/Collapse Table Height");
- expandItem.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- toggleTableExpand();
- refreshTableSize();
- }
- });
-
- return toolBar;
- }
-
- private void refreshTableSize() {
- GridData gd = null;
- if (!isTableExpanded()) {
- gd = new GridData(SWT.FILL, SWT.NONE, true, false);
- gd.heightHint = DEFAULT_TABLE_HEIGHT;
- } else {
- gd = new GridData(SWT.FILL, SWT.FILL, true, true);
- }
- gd.horizontalSpan = 2;
- worldComposite.setLayoutData(gd);
- worldComposite.layout(true);
- getManagedForm().reflow(true);
- }
-
- private void fillActionBar(ToolBar toolBar) {
-
- new ActionContributionItem(worldComposite.getXViewer().getCustomizeAction()).fill(toolBar, -1);
- }
-
- private void createWorldComposite(final Composite sectionBody) {
- worldComposite =
- new WorldComposite(this, new GoalXViewerFactory((GoalArtifact) editor.getSma()), sectionBody, SWT.BORDER);
-
- CustomizeData customizeData = editorToCustDataMap.get(editor);
- if (customizeData == null) {
- customizeData = worldComposite.getCustomizeDataCopy();
- }
- WorldLabelProvider labelProvider = (WorldLabelProvider) worldComposite.getXViewer().getLabelProvider();
- labelProvider.setParentGoal((GoalArtifact) editor.getSma());
-
- worldComposite.getWorldXViewer().addMenuActionProvider(this);
-
- try {
- customizeData = null;
- worldComposite.load("Members", editor.getSma().getRelatedArtifacts(AtsRelationTypes.Goal_Member),
- customizeData, TableLoadOption.None);
-
- } catch (OseeCoreException ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
-
- }
-
- private boolean isTableExpanded() {
- if (editor != null && editorToTableExpanded.containsKey(editor)) {
- return editorToTableExpanded.get(editor);
- }
- return false;
- }
-
- private void toggleTableExpand() {
- if (editor != null) {
- Boolean expanded = editorToTableExpanded.get(editor);
- if (expanded == null) {
- expanded = true;
- } else {
- expanded = !expanded;
- }
- editorToTableExpanded.put(editor, expanded);
- }
- }
-
- private void setupListenersForCustomizeDataCaching() {
- worldComposite.addDisposeListener(new DisposeListener() {
-
- @Override
- public void widgetDisposed(DisposeEvent e) {
- editorToCustDataMap.put(editor, worldComposite.getCustomizeDataCopy());
- }
- });
- editor.addEditorListeners(new ISMAEditorListener() {
-
- @Override
- public void editorDisposing() {
- editorToCustDataMap.remove(editor);
- editorToTableExpanded.remove(editor);
- }
- });
- }
-
- protected void addDropToAddLabel(FormToolkit toolkit, Composite sectionBody) {
- Label dropToAddLabel = new Label(sectionBody, SWT.BORDER);
- dropToAddLabel.setText(" Drop New Members Here");
- dropToAddLabel.setBackgroundImage(ImageManager.getImage(AtsImage.DROP_HERE_TO_ADD_BACKGROUND));
- GridData gd = new GridData(GridData.FILL_BOTH);
- gd.heightHint = 25;
- dropToAddLabel.setLayoutData(gd);
- toolkit.adapt(dropToAddLabel, true, true);
-
- new ArtifactDragAndDrop(dropToAddLabel, editor.getSma(), ArtifactEditor.EDITOR_ID) {
- @Override
- public void performArtifactDrop(Artifact[] dropArtifacts) {
- super.performArtifactDrop(dropArtifacts);
- try {
- List<Artifact> members = new ArrayList<Artifact>();
- members.addAll(((GoalArtifact) editor.getSma()).getMembers());
- for (Artifact art : dropArtifacts) {
- if (!members.contains(art)) {
- members.add(art);
- editor.getSma().addRelation(AtsRelationTypes.Goal_Member, art);
- }
- }
- editor.getSma().setRelationOrder(AtsRelationTypes.Goal_Member, members);
- editor.doSave(null);
- } catch (OseeCoreException ex) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
- }
- }
- };
- }
-
- protected void addDropToRemoveLabel(FormToolkit toolkit, Composite sectionBody) {
- Label dropToAddLabel = new Label(sectionBody, SWT.BORDER);
- dropToAddLabel.setText(" Drop Members to Remove");
- dropToAddLabel.setBackgroundImage(ImageManager.getImage(AtsImage.DROP_HERE_TO_REMOVE_BACKGROUND));
- GridData gd = new GridData(GridData.FILL_BOTH);
- gd.heightHint = 25;
- dropToAddLabel.setLayoutData(gd);
- toolkit.adapt(dropToAddLabel, true, true);
-
- new ArtifactDragAndDrop(dropToAddLabel, editor.getSma(), ArtifactEditor.EDITOR_ID) {
- @Override
- public void performArtifactDrop(Artifact[] dropArtifacts) {
- super.performArtifactDrop(dropArtifacts);
- final Set<Artifact> artifacts = new HashSet<Artifact>();
- final List<Artifact> artList = new ArrayList<Artifact>();
- for (Artifact artifact : dropArtifacts) {
- artifacts.add(artifact);
- artList.add(artifact);
- }
- RemoveFromGoalAction remove =
- new RemoveFromGoalAction((GoalArtifact) editor.getSma(), new ISelectedAtsArtifacts() {
-
- @Override
- public Set<? extends Artifact> getSelectedSMAArtifacts() {
- return artifacts;
- }
-
- @Override
- public List<Artifact> getSelectedAtsArtifacts() {
- return artList;
- }
- });
- remove.run();
- }
- };
- }
-
- @Override
- public void refresh() {
- super.refresh();
- Displays.ensureInDisplayThread(new Runnable() {
-
- @Override
- public void run() {
- if (Widgets.isAccessible(worldComposite)) {
- worldComposite.getXViewer().refresh();
- }
- }
- });
- }
-
- @Override
- public void dispose() {
- if (Widgets.isAccessible(worldComposite)) {
- worldComposite.dispose();
- }
- super.dispose();
- }
-
- @Override
- public void createToolBarPulldown(Menu menu) {
- // do nothing
- }
-
- @Override
- public String getCurrentTitleLabel() {
- return "";
- }
-
- @Override
- public IActionable getIActionable() {
- return null;
- }
-
- @Override
- public IWorldEditorProvider getWorldEditorProvider() {
- return null;
- }
-
- @Override
- public void reSearch() {
- // do nothing
- }
-
- @Override
- public void reflow() {
- // do nothing
- }
-
- @Override
- public void setTableTitle(String title, boolean warning) {
- // do nothing
- }
-
- Action setGoalOrderAction, removeFromGoalAction;
-
- public void createActions() {
- setGoalOrderAction = new SetGoalOrderAction((GoalArtifact) editor.getSma(), this);
- removeFromGoalAction = new RemoveFromGoalAction((GoalArtifact) editor.getSma(), this);
- }
-
- @Override
- public void updateMenuActionsForTable() {
- MenuManager mm = worldComposite.getXViewer().getMenuManager();
-
- mm.insertBefore(WorldXViewer.MENU_GROUP_ATS_WORLD_EDIT, setGoalOrderAction);
- mm.insertBefore(WorldXViewer.MENU_GROUP_ATS_WORLD_EDIT, removeFromGoalAction);
- mm.insertBefore(WorldXViewer.MENU_GROUP_ATS_WORLD_EDIT, new Separator());
- }
-
- @Override
- public Set<Artifact> getSelectedSMAArtifacts() {
- Set<Artifact> artifacts = new HashSet<Artifact>();
- for (Artifact art : worldComposite.getSelectedArtifacts()) {
- if (art instanceof StateMachineArtifact) {
- artifacts.add(art);
- }
- }
- return artifacts;
- }
-
- @Override
- public List<Artifact> getSelectedAtsArtifacts() {
- List<Artifact> artifacts = new ArrayList<Artifact>();
- for (Artifact art : worldComposite.getSelectedArtifacts()) {
+/*******************************************************************************
+ * 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.editor;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.logging.Level;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.ActionContributionItem;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.nebula.widgets.xviewer.customize.CustomizeData;
+import org.eclipse.osee.ats.AtsImage;
+import org.eclipse.osee.ats.actions.ISelectedAtsArtifacts;
+import org.eclipse.osee.ats.artifact.GoalArtifact;
+import org.eclipse.osee.ats.artifact.StateMachineArtifact;
+import org.eclipse.osee.ats.goal.GoalXViewerFactory;
+import org.eclipse.osee.ats.goal.RemoveFromGoalAction;
+import org.eclipse.osee.ats.goal.SetGoalOrderAction;
+import org.eclipse.osee.ats.internal.AtsPlugin;
+import org.eclipse.osee.ats.util.AtsArtifactTypes;
+import org.eclipse.osee.ats.util.AtsRelationTypes;
+import org.eclipse.osee.ats.world.IMenuActionProvider;
+import org.eclipse.osee.ats.world.IWorldEditor;
+import org.eclipse.osee.ats.world.IWorldEditorProvider;
+import org.eclipse.osee.ats.world.WorldComposite;
+import org.eclipse.osee.ats.world.WorldLabelProvider;
+import org.eclipse.osee.ats.world.WorldXViewer;
+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.plugin.core.IActionable;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.ui.plugin.xnavigate.XNavigateComposite.TableLoadOption;
+import org.eclipse.osee.framework.ui.skynet.XFormToolkit;
+import org.eclipse.osee.framework.ui.skynet.artifact.editor.ArtifactEditor;
+import org.eclipse.osee.framework.ui.skynet.util.ArtifactDragAndDrop;
+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.Widgets;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.DisposeEvent;
+import org.eclipse.swt.events.DisposeListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.ToolBar;
+import org.eclipse.swt.widgets.ToolItem;
+import org.eclipse.ui.forms.IManagedForm;
+import org.eclipse.ui.forms.SectionPart;
+import org.eclipse.ui.forms.widgets.ExpandableComposite;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+import org.eclipse.ui.forms.widgets.Section;
+
+/**
+ * @author Roberto E. Escobar
+ * @author Donald G. Dunne
+ */
+public class SMAGoalMembersSection extends SectionPart implements ISelectedAtsArtifacts, IWorldEditor, IMenuActionProvider {
+
+ private final SMAEditor editor;
+ private WorldComposite worldComposite;
+ private static final Map<SMAEditor, CustomizeData> editorToCustDataMap = new HashMap<SMAEditor, CustomizeData>(20);
+ private static Map<SMAEditor, Boolean> editorToTableExpanded = new HashMap<SMAEditor, Boolean>();
+ private final static int DEFAULT_TABLE_HEIGHT = 400;
+
+ public SMAGoalMembersSection(SMAEditor editor, Composite parent, XFormToolkit toolkit, int style) {
+ super(parent, toolkit, style | ExpandableComposite.TITLE_BAR);
+ this.editor = editor;
+ }
+
+ @Override
+ public void initialize(final IManagedForm form) {
+ super.initialize(form);
+ final FormToolkit toolkit = form.getToolkit();
+
+ Section section = getSection();
+ section.setText("Members");
+
+ section.setLayout(new GridLayout());
+ section.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
+
+ Composite sectionBody = toolkit.createComposite(section, toolkit.getBorderStyle());
+ sectionBody.setLayout(ALayout.getZeroMarginLayout(2, false));
+ GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true);
+ gd.widthHint = 300;
+ sectionBody.setLayoutData(gd);
+
+ ToolBar toolBar = createToolBar(sectionBody);
+ addDropToAddLabel(toolkit, sectionBody);
+ addDropToRemoveLabel(toolkit, sectionBody);
+
+ createWorldComposite(sectionBody);
+ createActions();
+ setupListenersForCustomizeDataCaching();
+ fillActionBar(toolBar);
+
+ section.setClient(sectionBody);
+ toolkit.paintBordersFor(section);
+
+ RefreshTableSizeJob job = new RefreshTableSizeJob("");
+ job.schedule(300);
+ }
+
+ private class RefreshTableSizeJob extends Job {
+ public RefreshTableSizeJob(String name) {
+ super(name);
+ }
+
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ Displays.ensureInDisplayThread(new Runnable() {
+ @Override
+ public void run() {
+ refreshTableSize();
+ }
+ });
+ return Status.OK_STATUS;
+ }
+ }
+
+ private ToolBar createToolBar(Composite parent) {
+ Composite actionComp = new Composite(parent, SWT.NONE);
+ actionComp.setLayout(ALayout.getZeroMarginLayout());
+ GridData gd = new GridData(SWT.FILL, SWT.NONE, true, false);
+ gd.horizontalSpan = 2;
+ actionComp.setLayoutData(gd);
+
+ ToolBar toolBar = new ToolBar(actionComp, SWT.FLAT | SWT.RIGHT);
+ gd = new GridData(GridData.FILL_HORIZONTAL);
+ toolBar.setLayoutData(gd);
+
+ ToolItem expandItem = new ToolItem(toolBar, SWT.PUSH);
+ expandItem.setImage(ImageManager.getImage(AtsImage.EXPAND_TABLE));
+ expandItem.setToolTipText("Expand/Collapse Table Height");
+ expandItem.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ toggleTableExpand();
+ refreshTableSize();
+ }
+ });
+
+ return toolBar;
+ }
+
+ private void refreshTableSize() {
+ GridData gd = null;
+ if (!isTableExpanded()) {
+ gd = new GridData(SWT.FILL, SWT.NONE, true, false);
+ gd.heightHint = DEFAULT_TABLE_HEIGHT;
+ } else {
+ gd = new GridData(SWT.FILL, SWT.FILL, true, true);
+ }
+ gd.horizontalSpan = 2;
+ worldComposite.setLayoutData(gd);
+ worldComposite.layout(true);
+ getManagedForm().reflow(true);
+ }
+
+ private void fillActionBar(ToolBar toolBar) {
+
+ new ActionContributionItem(worldComposite.getXViewer().getCustomizeAction()).fill(toolBar, -1);
+ }
+
+ private void createWorldComposite(final Composite sectionBody) {
+ worldComposite =
+ new WorldComposite(this, new GoalXViewerFactory((GoalArtifact) editor.getSma()), sectionBody, SWT.BORDER);
+
+ CustomizeData customizeData = editorToCustDataMap.get(editor);
+ if (customizeData == null) {
+ customizeData = worldComposite.getCustomizeDataCopy();
+ }
+ WorldLabelProvider labelProvider = (WorldLabelProvider) worldComposite.getXViewer().getLabelProvider();
+ labelProvider.setParentGoal((GoalArtifact) editor.getSma());
+
+ worldComposite.getWorldXViewer().addMenuActionProvider(this);
+
+ try {
+ customizeData = null;
+ worldComposite.load("Members", editor.getSma().getRelatedArtifacts(AtsRelationTypes.Goal_Member),
+ customizeData, TableLoadOption.None);
+
+ } catch (OseeCoreException ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ }
+
+ }
+
+ private boolean isTableExpanded() {
+ if (editor != null && editorToTableExpanded.containsKey(editor)) {
+ return editorToTableExpanded.get(editor);
+ }
+ return false;
+ }
+
+ private void toggleTableExpand() {
+ if (editor != null) {
+ Boolean expanded = editorToTableExpanded.get(editor);
+ if (expanded == null) {
+ expanded = true;
+ } else {
+ expanded = !expanded;
+ }
+ editorToTableExpanded.put(editor, expanded);
+ }
+ }
+
+ private void setupListenersForCustomizeDataCaching() {
+ worldComposite.addDisposeListener(new DisposeListener() {
+
+ @Override
+ public void widgetDisposed(DisposeEvent e) {
+ editorToCustDataMap.put(editor, worldComposite.getCustomizeDataCopy());
+ }
+ });
+ editor.addEditorListeners(new ISMAEditorListener() {
+
+ @Override
+ public void editorDisposing() {
+ editorToCustDataMap.remove(editor);
+ editorToTableExpanded.remove(editor);
+ }
+ });
+ }
+
+ protected void addDropToAddLabel(FormToolkit toolkit, Composite sectionBody) {
+ Label dropToAddLabel = new Label(sectionBody, SWT.BORDER);
+ dropToAddLabel.setText(" Drop New Members Here");
+ dropToAddLabel.setBackgroundImage(ImageManager.getImage(AtsImage.DROP_HERE_TO_ADD_BACKGROUND));
+ GridData gd = new GridData(GridData.FILL_BOTH);
+ gd.heightHint = 25;
+ dropToAddLabel.setLayoutData(gd);
+ toolkit.adapt(dropToAddLabel, true, true);
+
+ new ArtifactDragAndDrop(dropToAddLabel, editor.getSma(), ArtifactEditor.EDITOR_ID) {
+ @Override
+ public void performArtifactDrop(Artifact[] dropArtifacts) {
+ super.performArtifactDrop(dropArtifacts);
+ try {
+ List<Artifact> members = new ArrayList<Artifact>();
+ members.addAll(((GoalArtifact) editor.getSma()).getMembers());
+ for (Artifact art : dropArtifacts) {
+ if (!members.contains(art)) {
+ members.add(art);
+ editor.getSma().addRelation(AtsRelationTypes.Goal_Member, art);
+ }
+ }
+ editor.getSma().setRelationOrder(AtsRelationTypes.Goal_Member, members);
+ editor.doSave(null);
+ } catch (OseeCoreException ex) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
+ }
+ }
+ };
+ }
+
+ protected void addDropToRemoveLabel(FormToolkit toolkit, Composite sectionBody) {
+ Label dropToAddLabel = new Label(sectionBody, SWT.BORDER);
+ dropToAddLabel.setText(" Drop Members to Remove");
+ dropToAddLabel.setBackgroundImage(ImageManager.getImage(AtsImage.DROP_HERE_TO_REMOVE_BACKGROUND));
+ GridData gd = new GridData(GridData.FILL_BOTH);
+ gd.heightHint = 25;
+ dropToAddLabel.setLayoutData(gd);
+ toolkit.adapt(dropToAddLabel, true, true);
+
+ new ArtifactDragAndDrop(dropToAddLabel, editor.getSma(), ArtifactEditor.EDITOR_ID) {
+ @Override
+ public void performArtifactDrop(Artifact[] dropArtifacts) {
+ super.performArtifactDrop(dropArtifacts);
+ final Set<Artifact> artifacts = new HashSet<Artifact>();
+ final List<Artifact> artList = new ArrayList<Artifact>();
+ for (Artifact artifact : dropArtifacts) {
+ artifacts.add(artifact);
+ artList.add(artifact);
+ }
+ RemoveFromGoalAction remove =
+ new RemoveFromGoalAction((GoalArtifact) editor.getSma(), new ISelectedAtsArtifacts() {
+
+ @Override
+ public Set<? extends Artifact> getSelectedSMAArtifacts() {
+ return artifacts;
+ }
+
+ @Override
+ public List<Artifact> getSelectedAtsArtifacts() {
+ return artList;
+ }
+ });
+ remove.run();
+ }
+ };
+ }
+
+ @Override
+ public void refresh() {
+ super.refresh();
+ Displays.ensureInDisplayThread(new Runnable() {
+
+ @Override
+ public void run() {
+ if (Widgets.isAccessible(worldComposite)) {
+ worldComposite.getXViewer().refresh();
+ }
+ }
+ });
+ }
+
+ @Override
+ public void dispose() {
+ if (Widgets.isAccessible(worldComposite)) {
+ worldComposite.dispose();
+ }
+ super.dispose();
+ }
+
+ @Override
+ public void createToolBarPulldown(Menu menu) {
+ // do nothing
+ }
+
+ @Override
+ public String getCurrentTitleLabel() {
+ return "";
+ }
+
+ @Override
+ public IActionable getIActionable() {
+ return null;
+ }
+
+ @Override
+ public IWorldEditorProvider getWorldEditorProvider() {
+ return null;
+ }
+
+ @Override
+ public void reSearch() {
+ // do nothing
+ }
+
+ @Override
+ public void reflow() {
+ // do nothing
+ }
+
+ @Override
+ public void setTableTitle(String title, boolean warning) {
+ // do nothing
+ }
+
+ Action setGoalOrderAction, removeFromGoalAction;
+
+ public void createActions() {
+ setGoalOrderAction = new SetGoalOrderAction((GoalArtifact) editor.getSma(), this);
+ removeFromGoalAction = new RemoveFromGoalAction((GoalArtifact) editor.getSma(), this);
+ }
+
+ @Override
+ public void updateMenuActionsForTable() {
+ MenuManager mm = worldComposite.getXViewer().getMenuManager();
+
+ mm.insertBefore(WorldXViewer.MENU_GROUP_ATS_WORLD_EDIT, setGoalOrderAction);
+ mm.insertBefore(WorldXViewer.MENU_GROUP_ATS_WORLD_EDIT, removeFromGoalAction);
+ mm.insertBefore(WorldXViewer.MENU_GROUP_ATS_WORLD_EDIT, new Separator());
+ }
+
+ @Override
+ public Set<Artifact> getSelectedSMAArtifacts() {
+ Set<Artifact> artifacts = new HashSet<Artifact>();
+ for (Artifact art : worldComposite.getSelectedArtifacts()) {
+ if (art instanceof StateMachineArtifact) {
+ artifacts.add(art);
+ }
+ }
+ return artifacts;
+ }
+
+ @Override
+ public List<Artifact> getSelectedAtsArtifacts() {
+ List<Artifact> artifacts = new ArrayList<Artifact>();
+ for (Artifact art : worldComposite.getSelectedArtifacts()) {
if (art.isOfType(AtsArtifactTypes.AtsArtifact)) {
- artifacts.add(art);
- }
- }
- return artifacts;
- }
-}
+ artifacts.add(art);
+ }
+ }
+ return artifacts;
+ }
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAHistorySection.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAHistorySection.java
index 55cb51b1720..3b5a35e962f 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAHistorySection.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAHistorySection.java
@@ -1,107 +1,107 @@
-/*******************************************************************************
- * 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.editor;
-
-import java.util.logging.Level;
-import org.eclipse.osee.ats.artifact.StateMachineArtifact;
-import org.eclipse.osee.ats.internal.AtsPlugin;
-import org.eclipse.osee.framework.core.exception.OseeCoreException;
-import org.eclipse.osee.framework.logging.OseeLog;
-import org.eclipse.osee.framework.ui.skynet.render.PresentationType;
-import org.eclipse.osee.framework.ui.skynet.render.RendererManager;
-import org.eclipse.osee.framework.ui.skynet.results.html.XResultsComposite;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.ui.forms.IManagedForm;
-import org.eclipse.ui.forms.SectionPart;
-import org.eclipse.ui.forms.widgets.ExpandableComposite;
-import org.eclipse.ui.forms.widgets.FormToolkit;
-import org.eclipse.ui.forms.widgets.Section;
-
-/**
- * @author Donald G. Dunne
- */
-public class SMAHistorySection extends SectionPart {
-
- private final SMAEditor editor;
- private boolean sectionCreated = false;
-
- public SMAHistorySection(SMAEditor editor, Composite parent, FormToolkit toolkit, int style) {
- super(parent, toolkit, style | ExpandableComposite.TWISTIE | ExpandableComposite.TITLE_BAR);
- this.editor = editor;
- }
-
- @Override
- public void initialize(IManagedForm form) {
- super.initialize(form);
- Section section = getSection();
- section.setText("History");
- section.setLayout(new GridLayout());
- section.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
-
- // Only load when users selects section
- section.addListener(SWT.Activate, new Listener() {
-
- @Override
- public void handleEvent(Event e) {
- createSection();
- }
- });
- }
-
- private synchronized void createSection() {
- if (sectionCreated) {
- return;
- }
-
- StateMachineArtifact sma = editor.getSma();
- final FormToolkit toolkit = getManagedForm().getToolkit();
- Composite composite = toolkit.createComposite(getSection(), toolkit.getBorderStyle() | SWT.WRAP);
- composite.setLayout(new GridLayout());
- composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
-
- XResultsComposite xResultsComp = new XResultsComposite(composite, SWT.BORDER);
- xResultsComp.setLayoutData(new GridData(GridData.FILL_BOTH | GridData.VERTICAL_ALIGN_BEGINNING));
- GridData gd = new GridData(GridData.FILL_BOTH);
- gd.heightHint = 500;
- xResultsComp.setLayoutData(gd);
- try {
- xResultsComp.setHtmlText(sma.getLog().getHtml(true), sma.getArtifactTypeName() + " History");
- } catch (OseeCoreException ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
-
- Label button = toolkit.createLabel(composite, " ", SWT.NONE);
- button.setText(" ");
- final StateMachineArtifact fSma = sma;
- button.addListener(SWT.MouseDoubleClick, new Listener() {
- @Override
- public void handleEvent(Event event) {
- try {
+/*******************************************************************************
+ * 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.editor;
+
+import java.util.logging.Level;
+import org.eclipse.osee.ats.artifact.StateMachineArtifact;
+import org.eclipse.osee.ats.internal.AtsPlugin;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.logging.OseeLog;
+import org.eclipse.osee.framework.ui.skynet.render.PresentationType;
+import org.eclipse.osee.framework.ui.skynet.render.RendererManager;
+import org.eclipse.osee.framework.ui.skynet.results.html.XResultsComposite;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.ui.forms.IManagedForm;
+import org.eclipse.ui.forms.SectionPart;
+import org.eclipse.ui.forms.widgets.ExpandableComposite;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+import org.eclipse.ui.forms.widgets.Section;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class SMAHistorySection extends SectionPart {
+
+ private final SMAEditor editor;
+ private boolean sectionCreated = false;
+
+ public SMAHistorySection(SMAEditor editor, Composite parent, FormToolkit toolkit, int style) {
+ super(parent, toolkit, style | ExpandableComposite.TWISTIE | ExpandableComposite.TITLE_BAR);
+ this.editor = editor;
+ }
+
+ @Override
+ public void initialize(IManagedForm form) {
+ super.initialize(form);
+ Section section = getSection();
+ section.setText("History");
+ section.setLayout(new GridLayout());
+ section.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
+
+ // Only load when users selects section
+ section.addListener(SWT.Activate, new Listener() {
+
+ @Override
+ public void handleEvent(Event e) {
+ createSection();
+ }
+ });
+ }
+
+ private synchronized void createSection() {
+ if (sectionCreated) {
+ return;
+ }
+
+ StateMachineArtifact sma = editor.getSma();
+ final FormToolkit toolkit = getManagedForm().getToolkit();
+ Composite composite = toolkit.createComposite(getSection(), toolkit.getBorderStyle() | SWT.WRAP);
+ composite.setLayout(new GridLayout());
+ composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+
+ XResultsComposite xResultsComp = new XResultsComposite(composite, SWT.BORDER);
+ xResultsComp.setLayoutData(new GridData(GridData.FILL_BOTH | GridData.VERTICAL_ALIGN_BEGINNING));
+ GridData gd = new GridData(GridData.FILL_BOTH);
+ gd.heightHint = 500;
+ xResultsComp.setLayoutData(gd);
+ try {
+ xResultsComp.setHtmlText(sma.getLog().getHtml(true), sma.getArtifactTypeName() + " History");
+ } catch (OseeCoreException ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ }
+
+ Label button = toolkit.createLabel(composite, " ", SWT.NONE);
+ button.setText(" ");
+ final StateMachineArtifact fSma = sma;
+ button.addListener(SWT.MouseDoubleClick, new Listener() {
+ @Override
+ public void handleEvent(Event event) {
+ try {
RendererManager.open(fSma, PresentationType.DEFAULT_OPEN);
- } catch (OseeCoreException ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
- }
- });
-
- getSection().setClient(composite);
- toolkit.paintBordersFor(composite);
- sectionCreated = true;
-
- }
-
-}
+ } catch (OseeCoreException ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ }
+ }
+ });
+
+ getSection().setClient(composite);
+ toolkit.paintBordersFor(composite);
+ sectionCreated = true;
+
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAOperationsSection.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAOperationsSection.java
index cfced03c3a4..c971d245595 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAOperationsSection.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAOperationsSection.java
@@ -1,257 +1,257 @@
-/*******************************************************************************
- * 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.editor;
-
-import java.util.Collections;
-import java.util.logging.Level;
-import org.eclipse.osee.ats.actions.AccessControlAction;
-import org.eclipse.osee.ats.actions.ConvertActionableItemsAction;
-import org.eclipse.osee.ats.actions.DeletePurgeAtsArtifactsAction;
-import org.eclipse.osee.ats.actions.DirtyReportAction;
-import org.eclipse.osee.ats.actions.DuplicateWorkflowAction;
-import org.eclipse.osee.ats.actions.EditActionableItemsAction;
-import org.eclipse.osee.ats.actions.EmailActionAction;
-import org.eclipse.osee.ats.actions.FavoriteAction;
-import org.eclipse.osee.ats.actions.OpenInArtifactEditorAction;
-import org.eclipse.osee.ats.actions.OpenInAtsWorldAction;
-import org.eclipse.osee.ats.actions.OpenInSkyWalkerAction;
-import org.eclipse.osee.ats.actions.OpenParentAction;
-import org.eclipse.osee.ats.actions.RefreshDirtyAction;
-import org.eclipse.osee.ats.actions.ReloadAction;
-import org.eclipse.osee.ats.actions.ResourceHistoryAction;
-import org.eclipse.osee.ats.actions.ShowBranchChangeDataAction;
-import org.eclipse.osee.ats.actions.SubscribedAction;
-import org.eclipse.osee.ats.actions.WorkflowDebugAction;
-import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact;
-import org.eclipse.osee.ats.internal.AtsPlugin;
-import org.eclipse.osee.ats.util.AtsUtil;
-import org.eclipse.osee.framework.logging.OseeLevel;
-import org.eclipse.osee.framework.logging.OseeLog;
-import org.eclipse.osee.framework.plugin.core.util.ExtensionDefinedObjects;
-import org.eclipse.osee.framework.ui.skynet.widgets.XButtonViaAction;
-import org.eclipse.osee.framework.ui.swt.ALayout;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.ui.forms.IManagedForm;
-import org.eclipse.ui.forms.SectionPart;
-import org.eclipse.ui.forms.widgets.ExpandableComposite;
-import org.eclipse.ui.forms.widgets.FormToolkit;
-import org.eclipse.ui.forms.widgets.Section;
-
-/**
- * @author Donald G. Dunne
- */
-public class SMAOperationsSection extends SectionPart {
-
- protected final SMAEditor editor;
- private ISMAOperationsSection advOperation = null;
- private boolean sectionCreated = false;
-
- public SMAOperationsSection(SMAEditor editor, Composite parent, FormToolkit toolkit, int style) {
- super(parent, toolkit, style | ExpandableComposite.TWISTIE | ExpandableComposite.TITLE_BAR);
- this.editor = editor;
- registerAdvancedSectionsFromExtensionPoints();
- }
-
- private void registerAdvancedSectionsFromExtensionPoints() {
-
- ExtensionDefinedObjects<ISMAOperationsSection> extensions =
- new ExtensionDefinedObjects<ISMAOperationsSection>(AtsPlugin.PLUGIN_ID + ".AtsAdvancedOperationAction",
- "AtsAdvancedOperationAction", "classname");
- for (ISMAOperationsSection item : extensions.getObjects()) {
- try {
- advOperation = item;
- } catch (Exception ex) {
+/*******************************************************************************
+ * 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.editor;
+
+import java.util.Collections;
+import java.util.logging.Level;
+import org.eclipse.osee.ats.actions.AccessControlAction;
+import org.eclipse.osee.ats.actions.ConvertActionableItemsAction;
+import org.eclipse.osee.ats.actions.DeletePurgeAtsArtifactsAction;
+import org.eclipse.osee.ats.actions.DirtyReportAction;
+import org.eclipse.osee.ats.actions.DuplicateWorkflowAction;
+import org.eclipse.osee.ats.actions.EditActionableItemsAction;
+import org.eclipse.osee.ats.actions.EmailActionAction;
+import org.eclipse.osee.ats.actions.FavoriteAction;
+import org.eclipse.osee.ats.actions.OpenInArtifactEditorAction;
+import org.eclipse.osee.ats.actions.OpenInAtsWorldAction;
+import org.eclipse.osee.ats.actions.OpenInSkyWalkerAction;
+import org.eclipse.osee.ats.actions.OpenParentAction;
+import org.eclipse.osee.ats.actions.RefreshDirtyAction;
+import org.eclipse.osee.ats.actions.ReloadAction;
+import org.eclipse.osee.ats.actions.ResourceHistoryAction;
+import org.eclipse.osee.ats.actions.ShowBranchChangeDataAction;
+import org.eclipse.osee.ats.actions.SubscribedAction;
+import org.eclipse.osee.ats.actions.WorkflowDebugAction;
+import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact;
+import org.eclipse.osee.ats.internal.AtsPlugin;
+import org.eclipse.osee.ats.util.AtsUtil;
+import org.eclipse.osee.framework.logging.OseeLevel;
+import org.eclipse.osee.framework.logging.OseeLog;
+import org.eclipse.osee.framework.plugin.core.util.ExtensionDefinedObjects;
+import org.eclipse.osee.framework.ui.skynet.widgets.XButtonViaAction;
+import org.eclipse.osee.framework.ui.swt.ALayout;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.ui.forms.IManagedForm;
+import org.eclipse.ui.forms.SectionPart;
+import org.eclipse.ui.forms.widgets.ExpandableComposite;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+import org.eclipse.ui.forms.widgets.Section;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class SMAOperationsSection extends SectionPart {
+
+ protected final SMAEditor editor;
+ private ISMAOperationsSection advOperation = null;
+ private boolean sectionCreated = false;
+
+ public SMAOperationsSection(SMAEditor editor, Composite parent, FormToolkit toolkit, int style) {
+ super(parent, toolkit, style | ExpandableComposite.TWISTIE | ExpandableComposite.TITLE_BAR);
+ this.editor = editor;
+ registerAdvancedSectionsFromExtensionPoints();
+ }
+
+ private void registerAdvancedSectionsFromExtensionPoints() {
+
+ ExtensionDefinedObjects<ISMAOperationsSection> extensions =
+ new ExtensionDefinedObjects<ISMAOperationsSection>(AtsPlugin.PLUGIN_ID + ".AtsAdvancedOperationAction",
+ "AtsAdvancedOperationAction", "classname");
+ for (ISMAOperationsSection item : extensions.getObjects()) {
+ try {
+ advOperation = item;
+ } catch (Exception ex) {
OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
- }
- }
-
- @Override
- public void initialize(final IManagedForm form) {
- super.initialize(form);
- final FormToolkit toolkit = form.getToolkit();
-
- final Section section = getSection();
- section.setText("Operations");
-
- section.setLayout(new GridLayout());
- section.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
-
- // Only load when users selects section
- section.addListener(SWT.Activate, new Listener() {
-
- @Override
- public void handleEvent(Event e) {
- createSection(section, toolkit);
- }
- });
- }
-
- private synchronized void createSection(Section section, FormToolkit toolkit) {
- if (sectionCreated) {
- return;
- }
-
- final Composite sectionBody = toolkit.createComposite(section, SWT.NONE);
- sectionBody.setLayout(ALayout.getZeroMarginLayout(3, false));
- sectionBody.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
-
- createImpactsSection(sectionBody, toolkit);
- createViewsEditorsSection(sectionBody, toolkit);
- createNotificationsSection(sectionBody, toolkit);
-
- if (advOperation != null && advOperation.isValid(editor)) {
- advOperation.createAdvancedSection(editor, sectionBody, toolkit);
- } else {
- createAdvancedSection(sectionBody, toolkit);
- }
-
- createAdminSection(sectionBody, toolkit);
-
- section.setClient(sectionBody);
- toolkit.paintBordersFor(section);
- sectionCreated = true;
-
- }
-
- private void createImpactsSection(Composite parent, FormToolkit toolkit) {
- if (!editor.getSma().isTeamWorkflow()) {
- return;
- }
- Section section = toolkit.createSection(parent, ExpandableComposite.TITLE_BAR);
- section.setText("Impacts and Workflows");
-
- section.setLayout(new GridLayout());
- section.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
-
- final Composite sectionBody = toolkit.createComposite(section, SWT.NONE);
- sectionBody.setLayout(ALayout.getZeroMarginLayout(1, false));
- sectionBody.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
-
- if (editor.getSma().isTeamWorkflow()) {
- new XButtonViaAction(new EditActionableItemsAction((TeamWorkFlowArtifact) editor.getSma())).createWidgets(
- sectionBody, 2);
- new XButtonViaAction(
- new DuplicateWorkflowAction(Collections.singleton((TeamWorkFlowArtifact) editor.getSma()))).createWidgets(
- sectionBody, 2);
- new XButtonViaAction(new AccessControlAction(editor.getSma())).createWidgets(sectionBody, 2);
- }
- section.setClient(sectionBody);
- }
-
- private void createAdvancedSection(Composite parent, FormToolkit toolkit) {
- if (!editor.getSma().isTeamWorkflow()) {
- return;
- }
-
- Section section = toolkit.createSection(parent, ExpandableComposite.TITLE_BAR);
- section.setText("Advanced");
-
- section.setLayout(new GridLayout());
- section.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
-
- final Composite sectionBody = toolkit.createComposite(section, SWT.NONE);
- sectionBody.setLayout(ALayout.getZeroMarginLayout(1, false));
- sectionBody.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
-
- if (editor.getSma().isTeamWorkflow()) {
- new XButtonViaAction(new DirtyReportAction(editor.getSma())).createWidgets(sectionBody, 2);
- new XButtonViaAction(new ReloadAction(editor.getSma())).createWidgets(sectionBody, 2);
- new XButtonViaAction(new ConvertActionableItemsAction(editor)).createWidgets(sectionBody, 2);
- }
- section.setClient(sectionBody);
- }
-
- private void createAdminSection(Composite parent, FormToolkit toolkit) {
- if (!AtsUtil.isAtsAdmin()) {
- return;
- }
- Section section = toolkit.createSection(parent, ExpandableComposite.TITLE_BAR);
- section.setText("Admin");
-
- section.setLayout(new GridLayout());
- section.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
-
- final Composite sectionBody = toolkit.createComposite(section, SWT.NONE);
- sectionBody.setLayout(ALayout.getZeroMarginLayout(1, false));
- sectionBody.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
-
- new XButtonViaAction(new RefreshDirtyAction(editor.getSma())).createWidgets(sectionBody, 2);
- new XButtonViaAction(new DeletePurgeAtsArtifactsAction(editor)).createWidgets(sectionBody, 2);
- new XButtonViaAction(new WorkflowDebugAction(editor.getSma())).createWidgets(sectionBody, 2);
- if (ShowBranchChangeDataAction.isApplicable(editor.getSma())) {
- new XButtonViaAction(new ShowBranchChangeDataAction(editor.getSma())).createWidgets(sectionBody, 2);
- }
-
- section.setClient(sectionBody);
- }
-
- private void createViewsEditorsSection(Composite parent, FormToolkit toolkit) {
- Section section = toolkit.createSection(parent, ExpandableComposite.TITLE_BAR);
- section.setText("Views and Editors");
-
- section.setLayout(new GridLayout());
- section.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
-
- final Composite sectionBody = toolkit.createComposite(section, SWT.NONE);
- sectionBody.setLayout(ALayout.getZeroMarginLayout(1, false));
- sectionBody.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
-
- try {
- new XButtonViaAction(new OpenInAtsWorldAction(editor.getSma())).createWidgets(sectionBody, 2);
- new XButtonViaAction(new OpenInSkyWalkerAction(editor.getSma())).createWidgets(sectionBody, 2);
- new XButtonViaAction(new ResourceHistoryAction(editor.getSma())).createWidgets(sectionBody, 2);
- if (editor.getSma().getParentSMA() != null) {
- new XButtonViaAction(new OpenParentAction(editor.getSma())).createWidgets(sectionBody, 2);
- }
- if (AtsUtil.isAtsAdmin()) {
- new XButtonViaAction(new OpenInArtifactEditorAction(editor)).createWidgets(sectionBody, 2);
- }
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
- }
-
- section.setClient(sectionBody);
- }
-
- private void createNotificationsSection(Composite parent, FormToolkit toolkit) {
- Section section = toolkit.createSection(parent, ExpandableComposite.TITLE_BAR);
- section.setText("Notifications and Favorites");
-
- section.setLayout(new GridLayout());
- section.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
-
- final Composite sectionBody = toolkit.createComposite(section, SWT.NONE);
- sectionBody.setLayout(ALayout.getZeroMarginLayout(1, false));
- sectionBody.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
-
- try {
- new XButtonViaAction(new SubscribedAction(editor)).createWidgets(sectionBody, 2);
- new XButtonViaAction(new FavoriteAction(editor)).createWidgets(sectionBody, 2);
- new XButtonViaAction(new EmailActionAction(editor)).createWidgets(sectionBody, 2);
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
- }
-
- section.setClient(sectionBody);
- }
-
- @Override
- public void dispose() {
- super.dispose();
- }
-
-}
+ }
+ }
+ }
+
+ @Override
+ public void initialize(final IManagedForm form) {
+ super.initialize(form);
+ final FormToolkit toolkit = form.getToolkit();
+
+ final Section section = getSection();
+ section.setText("Operations");
+
+ section.setLayout(new GridLayout());
+ section.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
+
+ // Only load when users selects section
+ section.addListener(SWT.Activate, new Listener() {
+
+ @Override
+ public void handleEvent(Event e) {
+ createSection(section, toolkit);
+ }
+ });
+ }
+
+ private synchronized void createSection(Section section, FormToolkit toolkit) {
+ if (sectionCreated) {
+ return;
+ }
+
+ final Composite sectionBody = toolkit.createComposite(section, SWT.NONE);
+ sectionBody.setLayout(ALayout.getZeroMarginLayout(3, false));
+ sectionBody.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+
+ createImpactsSection(sectionBody, toolkit);
+ createViewsEditorsSection(sectionBody, toolkit);
+ createNotificationsSection(sectionBody, toolkit);
+
+ if (advOperation != null && advOperation.isValid(editor)) {
+ advOperation.createAdvancedSection(editor, sectionBody, toolkit);
+ } else {
+ createAdvancedSection(sectionBody, toolkit);
+ }
+
+ createAdminSection(sectionBody, toolkit);
+
+ section.setClient(sectionBody);
+ toolkit.paintBordersFor(section);
+ sectionCreated = true;
+
+ }
+
+ private void createImpactsSection(Composite parent, FormToolkit toolkit) {
+ if (!editor.getSma().isTeamWorkflow()) {
+ return;
+ }
+ Section section = toolkit.createSection(parent, ExpandableComposite.TITLE_BAR);
+ section.setText("Impacts and Workflows");
+
+ section.setLayout(new GridLayout());
+ section.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
+
+ final Composite sectionBody = toolkit.createComposite(section, SWT.NONE);
+ sectionBody.setLayout(ALayout.getZeroMarginLayout(1, false));
+ sectionBody.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+
+ if (editor.getSma().isTeamWorkflow()) {
+ new XButtonViaAction(new EditActionableItemsAction((TeamWorkFlowArtifact) editor.getSma())).createWidgets(
+ sectionBody, 2);
+ new XButtonViaAction(
+ new DuplicateWorkflowAction(Collections.singleton((TeamWorkFlowArtifact) editor.getSma()))).createWidgets(
+ sectionBody, 2);
+ new XButtonViaAction(new AccessControlAction(editor.getSma())).createWidgets(sectionBody, 2);
+ }
+ section.setClient(sectionBody);
+ }
+
+ private void createAdvancedSection(Composite parent, FormToolkit toolkit) {
+ if (!editor.getSma().isTeamWorkflow()) {
+ return;
+ }
+
+ Section section = toolkit.createSection(parent, ExpandableComposite.TITLE_BAR);
+ section.setText("Advanced");
+
+ section.setLayout(new GridLayout());
+ section.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
+
+ final Composite sectionBody = toolkit.createComposite(section, SWT.NONE);
+ sectionBody.setLayout(ALayout.getZeroMarginLayout(1, false));
+ sectionBody.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+
+ if (editor.getSma().isTeamWorkflow()) {
+ new XButtonViaAction(new DirtyReportAction(editor.getSma())).createWidgets(sectionBody, 2);
+ new XButtonViaAction(new ReloadAction(editor.getSma())).createWidgets(sectionBody, 2);
+ new XButtonViaAction(new ConvertActionableItemsAction(editor)).createWidgets(sectionBody, 2);
+ }
+ section.setClient(sectionBody);
+ }
+
+ private void createAdminSection(Composite parent, FormToolkit toolkit) {
+ if (!AtsUtil.isAtsAdmin()) {
+ return;
+ }
+ Section section = toolkit.createSection(parent, ExpandableComposite.TITLE_BAR);
+ section.setText("Admin");
+
+ section.setLayout(new GridLayout());
+ section.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
+
+ final Composite sectionBody = toolkit.createComposite(section, SWT.NONE);
+ sectionBody.setLayout(ALayout.getZeroMarginLayout(1, false));
+ sectionBody.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+
+ new XButtonViaAction(new RefreshDirtyAction(editor.getSma())).createWidgets(sectionBody, 2);
+ new XButtonViaAction(new DeletePurgeAtsArtifactsAction(editor)).createWidgets(sectionBody, 2);
+ new XButtonViaAction(new WorkflowDebugAction(editor.getSma())).createWidgets(sectionBody, 2);
+ if (ShowBranchChangeDataAction.isApplicable(editor.getSma())) {
+ new XButtonViaAction(new ShowBranchChangeDataAction(editor.getSma())).createWidgets(sectionBody, 2);
+ }
+
+ section.setClient(sectionBody);
+ }
+
+ private void createViewsEditorsSection(Composite parent, FormToolkit toolkit) {
+ Section section = toolkit.createSection(parent, ExpandableComposite.TITLE_BAR);
+ section.setText("Views and Editors");
+
+ section.setLayout(new GridLayout());
+ section.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
+
+ final Composite sectionBody = toolkit.createComposite(section, SWT.NONE);
+ sectionBody.setLayout(ALayout.getZeroMarginLayout(1, false));
+ sectionBody.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+
+ try {
+ new XButtonViaAction(new OpenInAtsWorldAction(editor.getSma())).createWidgets(sectionBody, 2);
+ new XButtonViaAction(new OpenInSkyWalkerAction(editor.getSma())).createWidgets(sectionBody, 2);
+ new XButtonViaAction(new ResourceHistoryAction(editor.getSma())).createWidgets(sectionBody, 2);
+ if (editor.getSma().getParentSMA() != null) {
+ new XButtonViaAction(new OpenParentAction(editor.getSma())).createWidgets(sectionBody, 2);
+ }
+ if (AtsUtil.isAtsAdmin()) {
+ new XButtonViaAction(new OpenInArtifactEditorAction(editor)).createWidgets(sectionBody, 2);
+ }
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
+ }
+
+ section.setClient(sectionBody);
+ }
+
+ private void createNotificationsSection(Composite parent, FormToolkit toolkit) {
+ Section section = toolkit.createSection(parent, ExpandableComposite.TITLE_BAR);
+ section.setText("Notifications and Favorites");
+
+ section.setLayout(new GridLayout());
+ section.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
+
+ final Composite sectionBody = toolkit.createComposite(section, SWT.NONE);
+ sectionBody.setLayout(ALayout.getZeroMarginLayout(1, false));
+ sectionBody.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+
+ try {
+ new XButtonViaAction(new SubscribedAction(editor)).createWidgets(sectionBody, 2);
+ new XButtonViaAction(new FavoriteAction(editor)).createWidgets(sectionBody, 2);
+ new XButtonViaAction(new EmailActionAction(editor)).createWidgets(sectionBody, 2);
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
+ }
+
+ section.setClient(sectionBody);
+ }
+
+ @Override
+ public void dispose() {
+ super.dispose();
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAPrint.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAPrint.java
index b70a752e875..9a8e1971c72 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAPrint.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAPrint.java
@@ -1,189 +1,199 @@
-/*******************************************************************************
- * 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.editor;
-
-import java.util.Arrays;
-import java.util.logging.Level;
-import org.eclipse.jface.action.Action;
-import org.eclipse.osee.ats.artifact.AtsAttributeTypes;
-import org.eclipse.osee.ats.artifact.NoteItem;
-import org.eclipse.osee.ats.artifact.StateMachineArtifact;
-import org.eclipse.osee.ats.artifact.TaskArtifact;
-import org.eclipse.osee.ats.artifact.TaskableStateMachineArtifact;
-import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact;
-import org.eclipse.osee.ats.editor.widget.ReviewInfoXWidget;
-import org.eclipse.osee.ats.internal.AtsPlugin;
-import org.eclipse.osee.ats.util.AtsUtil;
-import org.eclipse.osee.ats.util.Overview;
-import org.eclipse.osee.ats.workflow.AtsWorkPage;
-import org.eclipse.osee.ats.world.IWorldViewArtifact;
-import org.eclipse.osee.framework.core.exception.OseeCoreException;
-import org.eclipse.osee.framework.jdk.core.util.AHTML;
-import org.eclipse.osee.framework.logging.OseeLevel;
-import org.eclipse.osee.framework.logging.OseeLog;
-import org.eclipse.osee.framework.ui.skynet.results.XResultData;
-import org.eclipse.osee.framework.ui.skynet.results.html.XResultPage.Manipulations;
-import org.eclipse.osee.framework.ui.skynet.widgets.XDate;
-import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkPage;
-
-/**
- * @author Donald G. Dunne
- */
-public class SMAPrint extends Action {
-
- private final StateMachineArtifact sma;
- boolean includeTaskList = true;
-
- public SMAPrint(StateMachineArtifact sma) {
- super();
- this.sma = sma;
- }
-
- @Override
- public void run() {
- try {
- XResultData xResultData = getResultData();
- xResultData.report("Print Preview of " + sma.getName(), Manipulations.RAW_HTML);
- } catch (OseeCoreException ex) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
- }
-
- }
-
- public XResultData getResultData() throws OseeCoreException {
- XResultData resultData = new XResultData();
- resultData.addRaw(AHTML.beginMultiColumnTable(100));
- resultData.addRaw(AHTML.addRowMultiColumnTable(new String[] {AHTML.getLabelValueStr(AHTML.LABEL_FONT, "Title: ",
- sma.getName())}));
- resultData.addRaw(AHTML.endMultiColumnTable());
- resultData.addRaw(AHTML.beginMultiColumnTable(100));
- resultData.addRaw(AHTML.addRowMultiColumnTable(new String[] {
- //
- AHTML.getLabelValueStr(AHTML.LABEL_FONT, "Current State: ", ((IWorldViewArtifact) sma).getWorldViewState()),
- //
- AHTML.getLabelValueStr(AHTML.LABEL_FONT, "Team: ", ((IWorldViewArtifact) sma).getWorldViewTeam()),
- //
- AHTML.getLabelValueStr(AHTML.LABEL_FONT, "Assignees: ", ((IWorldViewArtifact) sma).getWorldViewActivePoc()),
- //
- AHTML.getLabelValueStr(AHTML.LABEL_FONT, "Originator: ", ((IWorldViewArtifact) sma).getWorldViewOriginator()),
- //
- AHTML.getLabelValueStr(AHTML.LABEL_FONT, "Created: ",
- XDate.getDateStr(sma.getLog().getCreationDate(), XDate.MMDDYYHHMM))
-
- }));
- resultData.addRaw(AHTML.endMultiColumnTable());
- resultData.addRaw(AHTML.beginMultiColumnTable(100));
- resultData.addRaw(AHTML.addRowMultiColumnTable(new String[] {
- //
- AHTML.getLabelValueStr(AHTML.LABEL_FONT, "Change Type: ", sma.getWorldViewChangeTypeStr()),
- AHTML.getLabelValueStr(AHTML.LABEL_FONT, "Priority: ", sma.getWorldViewPriority()),
- AHTML.getLabelValueStr(AHTML.LABEL_FONT, "Need By: ", sma.getWorldViewDeadlineDateStr())}));
-
- resultData.addRaw(AHTML.addRowMultiColumnTable(new String[] {
- //
- AHTML.getLabelValueStr(AHTML.LABEL_FONT, "Workflow: ", sma.getArtifactTypeName()),
- AHTML.getLabelValueStr(AHTML.LABEL_FONT, "HRID: ", sma.getHumanReadableId()),
- (sma.getParentActionArtifact() == null ? "" : AHTML.getLabelValueStr(AHTML.LABEL_FONT, "Action HRID: ",
- sma.getParentActionArtifact().getHumanReadableId()))}));
- resultData.addRaw(AHTML.endMultiColumnTable());
- for (NoteItem note : sma.getNotes().getNoteItems()) {
- if (note.getState().equals("")) {
- resultData.addRaw(note.toHTML() + AHTML.newline());
- }
- }
- getWorkFlowHtml(resultData);
- if (includeTaskList) {
- getTaskHtml(resultData);
- }
- resultData.addRaw(AHTML.newline());
- resultData.addRaw(sma.getLog().getHtml());
-
- XResultData rd = new XResultData();
- rd.addRaw(AHTML.beginMultiColumnTable(100, 1));
- rd.addRaw(AHTML.addRowMultiColumnTable(new String[] {resultData.getReport("").getManipulatedHtml(
- Arrays.asList(Manipulations.NONE))}));
- rd.addRaw(AHTML.endMultiColumnTable());
-
- return rd;
- }
-
- private void getTaskHtml(XResultData rd) throws OseeCoreException {
- if (!sma.isTaskable()) {
- return;
- }
- try {
- rd.addRaw(AHTML.addSpace(1) + AHTML.getLabelStr(AHTML.LABEL_FONT, "Tasks"));
- rd.addRaw(AHTML.startBorderTable(100, Overview.normalColor, ""));
- rd.addRaw(AHTML.addHeaderRowMultiColumnTable(new String[] {"Title", "State", "POC", "%", "Hrs", "Resolution",
- "ID"}));
- for (TaskArtifact art : ((TaskableStateMachineArtifact) sma).getTaskArtifacts()) {
- rd.addRaw(AHTML.addRowMultiColumnTable(new String[] {art.getName(),
- art.getStateMgr().getCurrentStateName().replaceAll("(Task|State)", ""), art.getWorldViewActivePoc(),
- art.getPercentCompleteSMATotal() + "", art.getHoursSpentSMATotal() + "",
- art.getSoleAttributeValue(AtsAttributeTypes.Resolution, ""), art.getHumanReadableId()}));
- }
- rd.addRaw(AHTML.endBorderTable());
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- rd.addRaw("Task Exception - " + ex.getLocalizedMessage());
- }
- }
-
- private void getWorkFlowHtml(XResultData rd) throws OseeCoreException {
- // Only display current or past states
- for (AtsWorkPage atsWorkPage : sma.getAtsWorkPages()) {
- if (sma.isCurrentState(atsWorkPage.getName()) || sma.getStateMgr().isStateVisited(atsWorkPage.getName())) {
- // Don't show completed or cancelled state if not currently those state
- if (atsWorkPage.isCompletePage() && !sma.isCompleted()) {
- continue;
- }
- if (atsWorkPage.isCancelledPage() && !sma.isCancelled()) {
- continue;
- }
- StringBuffer notesSb = new StringBuffer();
- for (NoteItem note : sma.getNotes().getNoteItems()) {
- if (note.getState().equals(atsWorkPage.getName())) {
- notesSb.append(note.toHTML() + AHTML.newline());
- }
- }
- if (sma.isCurrentState(atsWorkPage.getName()) || sma.getStateMgr().isStateVisited(atsWorkPage.getName()) && sma.isTeamWorkflow()) {
- atsWorkPage.generateLayoutDatas(sma);
- rd.addRaw(atsWorkPage.getHtml(
- sma.isCurrentState(atsWorkPage.getName()) ? AtsUtil.activeColor : AtsUtil.normalColor,
- notesSb.toString(), getStateHoursSpentHtml(atsWorkPage) + getReviewData(sma, atsWorkPage)));
- rd.addRaw(AHTML.newline());
- }
- }
- }
- }
-
- private String getReviewData(StateMachineArtifact sma, AtsWorkPage page) throws OseeCoreException {
- if (sma instanceof TeamWorkFlowArtifact) {
- return ReviewInfoXWidget.toHTML((TeamWorkFlowArtifact) sma, page.getName());
- }
- return "";
- }
-
- private String getStateHoursSpentHtml(WorkPage page) throws OseeCoreException {
- return AHTML.getLabelValueStr("State Hours Spent",
- AtsUtil.doubleToI18nString(sma.getStateMgr().getHoursSpent(page.getName())) + "<br>");
- }
-
- public boolean isIncludeTaskList() {
- return includeTaskList;
- }
-
- public void setIncludeTaskList(boolean includeTaskList) {
- this.includeTaskList = includeTaskList;
- }
-
-}
+/*******************************************************************************
+ * 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.editor;
+
+import java.util.Arrays;
+import java.util.logging.Level;
+import org.eclipse.jface.action.Action;
+import org.eclipse.osee.ats.artifact.AtsAttributeTypes;
+import org.eclipse.osee.ats.artifact.NoteItem;
+import org.eclipse.osee.ats.artifact.StateMachineArtifact;
+import org.eclipse.osee.ats.artifact.TaskArtifact;
+import org.eclipse.osee.ats.artifact.TaskableStateMachineArtifact;
+import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact;
+import org.eclipse.osee.ats.editor.widget.ReviewInfoXWidget;
+import org.eclipse.osee.ats.internal.AtsPlugin;
+import org.eclipse.osee.ats.util.AtsUtil;
+import org.eclipse.osee.ats.util.Overview;
+import org.eclipse.osee.ats.workflow.AtsWorkPage;
+import org.eclipse.osee.ats.world.IWorldViewArtifact;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.jdk.core.util.AHTML;
+import org.eclipse.osee.framework.logging.OseeLevel;
+import org.eclipse.osee.framework.logging.OseeLog;
+import org.eclipse.osee.framework.ui.skynet.results.XResultData;
+import org.eclipse.osee.framework.ui.skynet.results.html.XResultPage.Manipulations;
+import org.eclipse.osee.framework.ui.skynet.widgets.XDate;
+import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkPage;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class SMAPrint extends Action {
+
+ private final StateMachineArtifact sma;
+ boolean includeTaskList = true;
+
+ public SMAPrint(StateMachineArtifact sma) {
+ super();
+ this.sma = sma;
+ }
+
+ @Override
+ public void run() {
+ try {
+ XResultData xResultData = getResultData();
+ xResultData.report("Print Preview of " + sma.getName(), Manipulations.RAW_HTML);
+ } catch (OseeCoreException ex) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
+ }
+
+ }
+
+ public XResultData getResultData() throws OseeCoreException {
+ XResultData resultData = new XResultData();
+ resultData.addRaw(AHTML.beginMultiColumnTable(100));
+ resultData.addRaw(AHTML.addRowMultiColumnTable(new String[] {AHTML.getLabelValueStr(AHTML.LABEL_FONT, "Title: ",
+ sma.getName())}));
+ resultData.addRaw(AHTML.endMultiColumnTable());
+ resultData.addRaw(AHTML.beginMultiColumnTable(100));
+ resultData.addRaw(AHTML.addRowMultiColumnTable(new String[] {
+ //
+ AHTML.getLabelValueStr(AHTML.LABEL_FONT, "Current State: ", ((IWorldViewArtifact) sma).getWorldViewState()),
+ //
+ AHTML.getLabelValueStr(AHTML.LABEL_FONT, "Team: ", ((IWorldViewArtifact) sma).getWorldViewTeam()),
+ //
+ AHTML.getLabelValueStr(AHTML.LABEL_FONT, "Assignees: ", ((IWorldViewArtifact) sma).getWorldViewActivePoc()),
+ //
+ AHTML.getLabelValueStr(AHTML.LABEL_FONT, "Originator: ", ((IWorldViewArtifact) sma).getWorldViewOriginator()),
+ //
+ AHTML.getLabelValueStr(AHTML.LABEL_FONT, "Created: ",
+ XDate.getDateStr(sma.getLog().getCreationDate(), XDate.MMDDYYHHMM))
+
+ }));
+ resultData.addRaw(AHTML.endMultiColumnTable());
+ resultData.addRaw(AHTML.beginMultiColumnTable(100));
+ resultData.addRaw(AHTML.addRowMultiColumnTable(new String[] {
+ //
+ AHTML.getLabelValueStr(AHTML.LABEL_FONT, "Change Type: ", sma.getWorldViewChangeTypeStr()),
+ AHTML.getLabelValueStr(AHTML.LABEL_FONT, "Priority: ", sma.getWorldViewPriority()),
+ AHTML.getLabelValueStr(AHTML.LABEL_FONT, "Need By: ", sma.getWorldViewDeadlineDateStr())}));
+
+ resultData.addRaw(AHTML.addRowMultiColumnTable(new String[] {
+ //
+ AHTML.getLabelValueStr(AHTML.LABEL_FONT, "Workflow: ", sma.getArtifactTypeName()),
+ AHTML.getLabelValueStr(AHTML.LABEL_FONT, "HRID: ", sma.getHumanReadableId()),
+ (sma.getParentActionArtifact() == null ? "" : AHTML.getLabelValueStr(AHTML.LABEL_FONT, "Action HRID: ",
+ sma.getParentActionArtifact().getHumanReadableId()))}));
+ resultData.addRaw(AHTML.endMultiColumnTable());
+ for (NoteItem note : sma.getNotes().getNoteItems()) {
+ if (note.getState().equals("")) {
+ resultData.addRaw(note.toHTML() + AHTML.newline());
+ }
+ }
+ getWorkFlowHtml(resultData);
+ if (includeTaskList) {
+ getTaskHtml(resultData);
+ }
+ resultData.addRaw(AHTML.newline());
+ resultData.addRaw(sma.getLog().getHtml());
+
+ XResultData rd = new XResultData();
+ rd.addRaw(AHTML.beginMultiColumnTable(100, 1));
+ rd.addRaw(AHTML.addRowMultiColumnTable(new String[] {resultData.getReport("").getManipulatedHtml(
+ Arrays.asList(Manipulations.NONE))}));
+ rd.addRaw(AHTML.endMultiColumnTable());
+
+ return rd;
+ }
+
+ private void getTaskHtml(XResultData rd) throws OseeCoreException {
+ if (!sma.isTaskable()) {
+ return;
+ }
+ try {
+ rd.addRaw(AHTML.addSpace(1) + AHTML.getLabelStr(AHTML.LABEL_FONT, "Tasks"));
+ rd.addRaw(AHTML.startBorderTable(100, Overview.normalColor, ""));
+ rd.addRaw(AHTML.addHeaderRowMultiColumnTable(new String[] {
+ "Title",
+ "State",
+ "POC",
+ "%",
+ "Hrs",
+ "Resolution",
+ "ID"}));
+ for (TaskArtifact art : ((TaskableStateMachineArtifact) sma).getTaskArtifacts()) {
+ rd.addRaw(AHTML.addRowMultiColumnTable(new String[] {
+ art.getName(),
+ art.getStateMgr().getCurrentStateName().replaceAll("(Task|State)", ""),
+ art.getWorldViewActivePoc(),
+ art.getPercentCompleteSMATotal() + "",
+ art.getHoursSpentSMATotal() + "",
+ art.getSoleAttributeValue(AtsAttributeTypes.Resolution, ""),
+ art.getHumanReadableId()}));
+ }
+ rd.addRaw(AHTML.endBorderTable());
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ rd.addRaw("Task Exception - " + ex.getLocalizedMessage());
+ }
+ }
+
+ private void getWorkFlowHtml(XResultData rd) throws OseeCoreException {
+ // Only display current or past states
+ for (AtsWorkPage atsWorkPage : sma.getAtsWorkPages()) {
+ if (sma.isCurrentState(atsWorkPage.getName()) || sma.getStateMgr().isStateVisited(atsWorkPage.getName())) {
+ // Don't show completed or cancelled state if not currently those state
+ if (atsWorkPage.isCompletePage() && !sma.isCompleted()) {
+ continue;
+ }
+ if (atsWorkPage.isCancelledPage() && !sma.isCancelled()) {
+ continue;
+ }
+ StringBuffer notesSb = new StringBuffer();
+ for (NoteItem note : sma.getNotes().getNoteItems()) {
+ if (note.getState().equals(atsWorkPage.getName())) {
+ notesSb.append(note.toHTML() + AHTML.newline());
+ }
+ }
+ if (sma.isCurrentState(atsWorkPage.getName()) || sma.getStateMgr().isStateVisited(atsWorkPage.getName()) && sma.isTeamWorkflow()) {
+ atsWorkPage.generateLayoutDatas(sma);
+ rd.addRaw(atsWorkPage.getHtml(
+ sma.isCurrentState(atsWorkPage.getName()) ? AtsUtil.activeColor : AtsUtil.normalColor,
+ notesSb.toString(), getStateHoursSpentHtml(atsWorkPage) + getReviewData(sma, atsWorkPage)));
+ rd.addRaw(AHTML.newline());
+ }
+ }
+ }
+ }
+
+ private String getReviewData(StateMachineArtifact sma, AtsWorkPage page) throws OseeCoreException {
+ if (sma instanceof TeamWorkFlowArtifact) {
+ return ReviewInfoXWidget.toHTML((TeamWorkFlowArtifact) sma, page.getName());
+ }
+ return "";
+ }
+
+ private String getStateHoursSpentHtml(WorkPage page) throws OseeCoreException {
+ return AHTML.getLabelValueStr("State Hours Spent",
+ AtsUtil.doubleToI18nString(sma.getStateMgr().getHoursSpent(page.getName())) + "<br>");
+ }
+
+ public boolean isIncludeTaskList() {
+ return includeTaskList;
+ }
+
+ public void setIncludeTaskList(boolean includeTaskList) {
+ this.includeTaskList = includeTaskList;
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMARelationsHyperlinkComposite.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMARelationsHyperlinkComposite.java
index 2d34ec819b3..85c86b90b9d 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMARelationsHyperlinkComposite.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMARelationsHyperlinkComposite.java
@@ -42,17 +42,17 @@ public class SMARelationsHyperlinkComposite extends Composite {
private final XFormToolkit toolkit;
private static IRelationEnumeration[] sides = new IRelationEnumeration[] {
- AtsRelationTypes.TeamWorkflowToReview_Review, AtsRelationTypes.TeamWorkflowToReview_Team,
- CoreRelationTypes.Supercedes_Superceded, CoreRelationTypes.Supercedes_Supercedes,
- CoreRelationTypes.SupportingInfo_SupportedBy, CoreRelationTypes.SupportingInfo_SupportingInfo,
- CoreRelationTypes.Dependency__Artifact, CoreRelationTypes.Dependency__Dependency};
+ AtsRelationTypes.TeamWorkflowToReview_Review,
+ AtsRelationTypes.TeamWorkflowToReview_Team,
+ CoreRelationTypes.Supercedes_Superceded,
+ CoreRelationTypes.Supercedes_Supercedes,
+ CoreRelationTypes.SupportingInfo_SupportedBy,
+ CoreRelationTypes.SupportingInfo_SupportingInfo,
+ CoreRelationTypes.Dependency__Artifact,
+ CoreRelationTypes.Dependency__Dependency};
private StateMachineArtifact sma;
private Label actionableItemsLabel;
- /**
- * @param parent
- * @param style
- */
public SMARelationsHyperlinkComposite(Composite parent, XFormToolkit toolkit, int style) {
super(parent, style);
this.toolkit = toolkit;
@@ -78,7 +78,7 @@ public class SMARelationsHyperlinkComposite extends Composite {
createArtifactRelationHyperlinks("This", sma, "has supporting info",
CoreRelationTypes.SupportingInfo_SupportingInfo);
- // Create label for review's related actionable items (if any)
+ // Create label for review's related actionable items (if any)
if (sma instanceof ReviewSMArtifact) {
processReviewArtifact((ReviewSMArtifact) sma);
}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMARelationsSection.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMARelationsSection.java
index 941efcc594b..2576b7ba16c 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMARelationsSection.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMARelationsSection.java
@@ -1,87 +1,87 @@
-/*******************************************************************************
- * 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.editor;
-
-import java.util.Arrays;
-import java.util.List;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerFilter;
-import org.eclipse.osee.ats.artifact.StateMachineArtifact;
-import org.eclipse.osee.ats.util.AtsRelationTypes;
-import org.eclipse.osee.ats.util.AtsUtil;
-import org.eclipse.osee.framework.core.enums.CoreRelationTypes;
-import org.eclipse.osee.framework.core.model.type.RelationType;
-import org.eclipse.osee.framework.ui.skynet.artifact.editor.BaseArtifactEditorInput;
-import org.eclipse.osee.framework.ui.skynet.artifact.editor.sections.RelationsFormSection;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.ui.forms.widgets.ExpandableComposite;
-import org.eclipse.ui.forms.widgets.FormToolkit;
-import org.eclipse.ui.forms.widgets.Section;
-
-/**
- * @author Roberto E. Escobar
- * @author Donald G. Dunne
- */
-public class SMARelationsSection extends RelationsFormSection {
-
- public SMARelationsSection(SMAEditor editor, Composite parent, FormToolkit toolkit, int style) {
- super(editor, parent, toolkit, style | ExpandableComposite.TWISTIE | ExpandableComposite.TITLE_BAR);
- }
-
- @Override
- public SMAEditor getEditor() {
- return (SMAEditor) super.getEditor();
- }
-
- @Override
- public BaseArtifactEditorInput getEditorInput() {
- return super.getEditorInput();
- }
-
- @Override
- protected synchronized void createSection(Section section, FormToolkit toolkit) {
- super.createSection(section, toolkit);
- // Don't allow users to see all relations
- if (!AtsUtil.isAtsAdmin()) {
- getRelationComposite().getTreeViewer().addFilter(userRelationsFilter);
- }
- }
-
- @Override
- protected void handleExpandAndCollapse() {
- ((SMAWorkFlowTab) getEditor().getSelectedPage()).getManagedForm().getForm().layout();
- }
-
- @Override
- protected void addDragAndDrop(Control dropArea) {
- new SMADragAndDrop(dropArea, (StateMachineArtifact) getEditorInput().getArtifact(), SMAEditor.EDITOR_ID);
- }
-
- private static ViewerFilter userRelationsFilter = new ViewerFilter() {
- @Override
- public boolean select(Viewer viewer, Object parentElement, Object element) {
- if (element instanceof RelationType) {
- return !filteredRelationTypeNames.contains(((RelationType) element).getName());
- }
- return true;
- }
- };
-
- private static List<String> filteredRelationTypeNames = Arrays.asList(
- AtsRelationTypes.ActionToWorkflow_Action.getName(), AtsRelationTypes.SmaToTask_Sma.getName(),
- AtsRelationTypes.TeamActionableItem_ActionableItem.getName(),
- AtsRelationTypes.TeamWorkflowTargetedForVersion_Version.getName(), AtsRelationTypes.TeamLead_Lead.getName(),
- AtsRelationTypes.TeamMember_Member.getName(), AtsRelationTypes.TeamWorkflowToReview_Review.getName(),
- CoreRelationTypes.WorkItem__Child.getName(), CoreRelationTypes.Default_Hierarchical__Child.getName(),
- CoreRelationTypes.Users_Artifact.getName());
-
-}
+/*******************************************************************************
+ * 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.editor;
+
+import java.util.Arrays;
+import java.util.List;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerFilter;
+import org.eclipse.osee.ats.artifact.StateMachineArtifact;
+import org.eclipse.osee.ats.util.AtsRelationTypes;
+import org.eclipse.osee.ats.util.AtsUtil;
+import org.eclipse.osee.framework.core.enums.CoreRelationTypes;
+import org.eclipse.osee.framework.core.model.type.RelationType;
+import org.eclipse.osee.framework.ui.skynet.artifact.editor.BaseArtifactEditorInput;
+import org.eclipse.osee.framework.ui.skynet.artifact.editor.sections.RelationsFormSection;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.ui.forms.widgets.ExpandableComposite;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+import org.eclipse.ui.forms.widgets.Section;
+
+/**
+ * @author Roberto E. Escobar
+ * @author Donald G. Dunne
+ */
+public class SMARelationsSection extends RelationsFormSection {
+
+ public SMARelationsSection(SMAEditor editor, Composite parent, FormToolkit toolkit, int style) {
+ super(editor, parent, toolkit, style | ExpandableComposite.TWISTIE | ExpandableComposite.TITLE_BAR);
+ }
+
+ @Override
+ public SMAEditor getEditor() {
+ return (SMAEditor) super.getEditor();
+ }
+
+ @Override
+ public BaseArtifactEditorInput getEditorInput() {
+ return super.getEditorInput();
+ }
+
+ @Override
+ protected synchronized void createSection(Section section, FormToolkit toolkit) {
+ super.createSection(section, toolkit);
+ // Don't allow users to see all relations
+ if (!AtsUtil.isAtsAdmin()) {
+ getRelationComposite().getTreeViewer().addFilter(userRelationsFilter);
+ }
+ }
+
+ @Override
+ protected void handleExpandAndCollapse() {
+ ((SMAWorkFlowTab) getEditor().getSelectedPage()).getManagedForm().getForm().layout();
+ }
+
+ @Override
+ protected void addDragAndDrop(Control dropArea) {
+ new SMADragAndDrop(dropArea, (StateMachineArtifact) getEditorInput().getArtifact(), SMAEditor.EDITOR_ID);
+ }
+
+ private static ViewerFilter userRelationsFilter = new ViewerFilter() {
+ @Override
+ public boolean select(Viewer viewer, Object parentElement, Object element) {
+ if (element instanceof RelationType) {
+ return !filteredRelationTypeNames.contains(((RelationType) element).getName());
+ }
+ return true;
+ }
+ };
+
+ private static List<String> filteredRelationTypeNames = Arrays.asList(
+ AtsRelationTypes.ActionToWorkflow_Action.getName(), AtsRelationTypes.SmaToTask_Sma.getName(),
+ AtsRelationTypes.TeamActionableItem_ActionableItem.getName(),
+ AtsRelationTypes.TeamWorkflowTargetedForVersion_Version.getName(), AtsRelationTypes.TeamLead_Lead.getName(),
+ AtsRelationTypes.TeamMember_Member.getName(), AtsRelationTypes.TeamWorkflowToReview_Review.getName(),
+ CoreRelationTypes.WorkItem__Child.getName(), CoreRelationTypes.Default_Hierarchical__Child.getName(),
+ CoreRelationTypes.Users_Artifact.getName());
+
+}
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 abaa6145347..7fe89d6f8cb 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
@@ -1,895 +1,895 @@
-/*******************************************************************************
- * 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.editor;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Date;
-import java.util.HashSet;
-import java.util.List;
-import java.util.logging.Level;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.jface.viewers.ArrayContentProvider;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.osee.ats.artifact.ATSLog.LogType;
-import org.eclipse.osee.ats.artifact.LogItem;
-import org.eclipse.osee.ats.artifact.ReviewSMArtifact;
-import org.eclipse.osee.ats.artifact.ReviewSMArtifact.ReviewBlockType;
-import org.eclipse.osee.ats.artifact.StateMachineArtifact;
-import org.eclipse.osee.ats.artifact.StateMachineArtifact.TransitionOption;
-import org.eclipse.osee.ats.artifact.TaskArtifact;
-import org.eclipse.osee.ats.artifact.TaskableStateMachineArtifact;
-import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact;
-import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact.DefaultTeamState;
-import org.eclipse.osee.ats.editor.stateItem.IAtsStateItem;
-import org.eclipse.osee.ats.editor.widget.ReviewInfoXWidget;
-import org.eclipse.osee.ats.editor.widget.StateHoursSpentXWidget;
-import org.eclipse.osee.ats.editor.widget.StatePercentCompleteXWidget;
-import org.eclipse.osee.ats.editor.widget.TaskInfoXWidget;
-import org.eclipse.osee.ats.internal.AtsPlugin;
-import org.eclipse.osee.ats.util.AtsUtil;
-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.workflow.AtsWorkPage;
-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.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.skynet.core.User;
-import org.eclipse.osee.framework.skynet.core.UserManager;
-import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction;
-import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
-import org.eclipse.osee.framework.ui.plugin.util.Result;
-import org.eclipse.osee.framework.ui.skynet.XFormToolkit;
-import org.eclipse.osee.framework.ui.skynet.widgets.IArtifactStoredWidget;
-import org.eclipse.osee.framework.ui.skynet.widgets.XComboViewer;
-import org.eclipse.osee.framework.ui.skynet.widgets.XDate;
-import org.eclipse.osee.framework.ui.skynet.widgets.XLabelValue;
-import org.eclipse.osee.framework.ui.skynet.widgets.XModifiedListener;
-import org.eclipse.osee.framework.ui.skynet.widgets.XWidget;
-import org.eclipse.osee.framework.ui.skynet.widgets.dialog.EntryDialog;
-import org.eclipse.osee.framework.ui.skynet.widgets.dialog.UserCheckTreeDialog;
-import org.eclipse.osee.framework.ui.skynet.widgets.workflow.DynamicXWidgetLayout;
-import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkPageDefinition;
-import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkPageDefinitionLabelProvider;
-import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkPageDefinitionViewSorter;
-import org.eclipse.osee.framework.ui.swt.ALayout;
-import org.eclipse.osee.framework.ui.swt.Displays;
-import org.eclipse.osee.framework.ui.swt.FontManager;
-import org.eclipse.osee.framework.ui.swt.Widgets;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.forms.IManagedForm;
-import org.eclipse.ui.forms.SectionPart;
-import org.eclipse.ui.forms.events.HyperlinkEvent;
-import org.eclipse.ui.forms.events.IHyperlinkListener;
-import org.eclipse.ui.forms.widgets.ExpandableComposite;
-import org.eclipse.ui.forms.widgets.Hyperlink;
-import org.eclipse.ui.forms.widgets.Section;
-
-/**
- * @author Donald G. Dunne
- */
-public class SMAWorkFlowSection extends SectionPart {
-
- private XComboViewer transitionToStateCombo;
- private Button transitionButton;
- private Label transitionAssigneesLabel;
- protected final StateMachineArtifact sma;
- private final AtsWorkPage atsWorkPage;
- private final boolean isEditable, isCurrentState, isGlobalEditable;
- private final XFormToolkit toolkit;
- private Composite mainComp;
- private final List<XWidget> allXWidgets = new ArrayList<XWidget>();
- private boolean sectionCreated = false;
- private Section section;
-
- public SMAWorkFlowSection(Composite parent, XFormToolkit toolkit, int style, AtsWorkPage page, StateMachineArtifact sma) throws OseeCoreException {
- super(parent, toolkit, style | ExpandableComposite.TWISTIE | ExpandableComposite.TITLE_BAR);
- this.toolkit = toolkit;
- this.atsWorkPage = page;
- this.sma = sma;
-
- isEditable = isEditable(sma, page);
- isGlobalEditable =
- !sma.isReadOnly() && sma.isAccessControlWrite() && sma.getEditor().isPriviledgedEditModeEnabled();
- isCurrentState = sma.isCurrentState(page.getName());
- // parent.setBackground(Displays.getSystemColor(SWT.COLOR_CYAN));
- }
-
- @Override
- public void initialize(final IManagedForm form) {
- super.initialize(form);
-
- section = getSection();
- try {
- section.setText(getCurrentStateTitle());
- if (sma.isCurrentState(atsWorkPage.getName())) {
- section.setTitleBarForeground(Displays.getSystemColor(SWT.COLOR_DARK_GREEN));
- section.setBackground(AtsUtil.ACTIVE_COLOR);
- }
- section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- // section.setBackground(Displays.getSystemColor(SWT.COLOR_MAGENTA));
-
- boolean isCurrentSectionExpanded = sma.isCurrentSectionExpanded(atsWorkPage.getName());
-
- if (isCurrentSectionExpanded) {
- createSection(section);
- }
- // Only load when users selects section
- section.addListener(SWT.Activate, new Listener() {
-
- @Override
- public void handleEvent(Event e) {
- try {
- createSection(section);
- } catch (OseeCoreException ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
- }
- });
-
- section.layout();
- section.setExpanded(isCurrentSectionExpanded);
- } catch (OseeCoreException ex) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
- }
- }
-
- private synchronized void createSection(Section section) throws OseeCoreException {
- if (sectionCreated) {
- return;
- }
-
- mainComp = toolkit.createClientContainer(section, 2);
- mainComp.setLayoutData(new GridData(GridData.FILL_BOTH | GridData.VERTICAL_ALIGN_BEGINNING));
- mainComp.setLayout(ALayout.getZeroMarginLayout(1, false));
- // mainComp.setBackground(Displays.getSystemColor(SWT.COLOR_DARK_YELLOW));
- mainComp.layout();
-
- SMAWorkFlowTab.createStateNotesHeader(mainComp, toolkit, sma, 2, atsWorkPage.getName());
-
- Composite workComp = createWorkArea(mainComp, atsWorkPage, toolkit);
-
- if (isCurrentState) {
- createCurrentPageTransitionLine(mainComp, atsWorkPage, toolkit);
- }
-
- GridData gridData = new GridData(GridData.FILL_BOTH | GridData.VERTICAL_ALIGN_BEGINNING);
- gridData.widthHint = 400;
- workComp.setLayoutData(gridData);
- sectionCreated = true;
- }
-
- protected Composite createWorkArea(Composite comp, AtsWorkPage atsWorkPage, XFormToolkit toolkit) throws OseeCoreException {
-
- atsWorkPage.generateLayoutDatas(sma);
-
- // Create Page
- Composite workComp = toolkit.createContainer(comp, 1);
- workComp.setLayoutData(new GridData(GridData.FILL_BOTH | GridData.VERTICAL_ALIGN_BEGINNING));
- // workComp.setBackground(Displays.getSystemColor(SWT.COLOR_GREEN));
-
- createMetricsHeader(workComp);
-
- // Add any dynamic XWidgets declared for page by IAtsStateItem extensions
- for (IAtsStateItem item : sma.getStateItems().getStateItems(atsWorkPage.getId())) {
- for (XWidget xWidget : item.getDynamicXWidgetsPreBody(sma)) {
- xWidget.createWidgets(workComp, 2);
- allXWidgets.add(xWidget);
- }
- }
-
- if (atsWorkPage.isCompleteCancelledState()) {
- Composite completeComp = new Composite(workComp, SWT.None);
- GridLayout layout = new GridLayout(1, false);
- completeComp.setLayout(layout);
- completeComp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- if (atsWorkPage.isCancelledPage()) {
- createCancelledPageWidgets(completeComp);
- } else if (atsWorkPage.isCompletePage()) {
- createCompletedPageWidgets(completeComp);
- }
- }
-
- // Create dynamic XWidgets
- DynamicXWidgetLayout dynamicXWidgetLayout =
- atsWorkPage.createBody(getManagedForm(), workComp, sma, xModListener, isEditable || isGlobalEditable);
- allXWidgets.addAll(dynamicXWidgetLayout.getXWidgets());
-
- // Add any dynamic XWidgets declared for page by IAtsStateItem extensions
- for (IAtsStateItem item : sma.getStateItems().getStateItems(atsWorkPage.getId())) {
- for (XWidget xWidget : item.getDynamicXWidgetsPostBody(sma)) {
- xWidget.createWidgets(workComp, 2);
- allXWidgets.add(xWidget);
- }
- }
-
- createTaskFooter(workComp, atsWorkPage.getName());
- createReviewFooter(workComp, atsWorkPage.getName());
-
- // Set all XWidget labels to bold font
- for (XWidget xWidget : allXWidgets) {
- if (xWidget.getLabelWidget() != null) {
- SMAEditor.setLabelFonts(xWidget.getLabelWidget(), FontManager.getDefaultLabelFont());
- }
- }
-
- // Check extension points for page creation
- for (IAtsStateItem item : sma.getStateItems().getStateItems(atsWorkPage.getId())) {
- Result result = item.pageCreated(toolkit, atsWorkPage, sma, xModListener, isEditable || isGlobalEditable);
- if (result.isFalse()) {
- result.popup();
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, "Error in page creation => " + result.getText());
- }
- }
-
- return workComp;
- }
-
- private void createCancelledPageWidgets(Composite parent) throws OseeCoreException {
- XWidget xWidget = null;
- xWidget = new XLabelValue("Cancelled from State", sma.getLog().getCancelledFromState());
- xWidget.createWidgets(parent, 1);
- allXWidgets.add(xWidget);
-
- if (sma.getEditor().isPriviledgedEditModeEnabled()) {
- xWidget = new XCancellationReasonTextWidget(sma);
- xWidget.addXModifiedListener(xModListener);
- } else {
- xWidget = new XLabelValue("Cancellation Reason", sma.getLog().getCancellationReason());
- }
- xWidget.createWidgets(parent, 1);
- allXWidgets.add(xWidget);
- }
-
- private void createCompletedPageWidgets(Composite parent) throws OseeCoreException {
- XWidget xWidget = null;
- xWidget = new XLabelValue("Completed from State", sma.getLog().getCompletedFromState());
- xWidget.createWidgets(parent, 1);
- allXWidgets.add(xWidget);
- }
-
- private void createMetricsHeader(Composite parent) {
- if (!atsWorkPage.isCompleteCancelledState()) {
- Composite comp = new Composite(parent, SWT.None);
- GridLayout layout = ALayout.getZeroMarginLayout(4, false);
- layout.marginLeft = 2;
- comp.setLayout(layout);
- comp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- allXWidgets.add(new StatePercentCompleteXWidget(getManagedForm(), atsWorkPage, sma, comp, 2, xModListener,
- isCurrentState));
- allXWidgets.add(new StateHoursSpentXWidget(getManagedForm(), atsWorkPage, sma, comp, 2, xModListener,
- isCurrentState));
- }
- }
-
- private void createReviewFooter(Composite parent, String forStateName) {
- if (isShowReviewInfo() && sma.isTeamWorkflow()) {
- Composite comp = new Composite(parent, SWT.None);
- GridLayout layout = new GridLayout(1, false);
- comp.setLayout(layout);
- comp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- allXWidgets.add(new ReviewInfoXWidget(getManagedForm(), toolkit, (TeamWorkFlowArtifact) sma, forStateName,
- comp, 1));
- }
- }
-
- private void createTaskFooter(Composite parent, String forStateName) throws OseeCoreException {
- if (isShowTaskInfo()) {
- Composite comp = new Composite(parent, SWT.None);
- GridLayout layout = new GridLayout(6, false);
- comp.setLayout(layout);
- comp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- allXWidgets.add(new TaskInfoXWidget(getManagedForm(), ((TaskableStateMachineArtifact) sma), forStateName,
- comp, 2));
- }
- }
-
- protected boolean isShowTaskInfo() throws OseeCoreException {
- return sma.isTaskable();
- }
-
- protected boolean isShowReviewInfo() {
- return sma.isTeamWorkflow();
- }
-
- public Result isXWidgetSavable() {
- for (XWidget widget : allXWidgets) {
- if (widget instanceof IArtifactStoredWidget) {
- IStatus status = widget.isValid();
- if (!status.isOK()) {
- return new Result(false, status.getMessage());
- }
- }
- }
- return Result.TrueResult;
- }
-
- @Override
- public String toString() {
- return atsWorkPage + " for " + getSma();
- }
-
- public Result isXWidgetDirty() throws OseeCoreException {
- for (XWidget widget : allXWidgets) {
- if (widget instanceof IArtifactStoredWidget) {
- IArtifactStoredWidget artifactStoredWidget = ((IArtifactStoredWidget) widget);
- Result result = artifactStoredWidget.isDirty();
- if (result.isTrue()) {
- return result;
- }
- }
- }
- return Result.FalseResult;
- }
-
- public void getDirtyIArtifactWidgets(List<IArtifactStoredWidget> widgets) throws OseeCoreException {
- for (XWidget widget : allXWidgets) {
- if (widget instanceof IArtifactStoredWidget) {
- IArtifactStoredWidget artifactStoredWidget = ((IArtifactStoredWidget) widget);
- if (artifactStoredWidget.isDirty().isTrue()) {
- widgets.add(artifactStoredWidget);
- }
- }
- }
- }
-
- private String getCurrentStateTitle() throws OseeCoreException {
- StringBuffer sb = new StringBuffer(atsWorkPage.getName());
- if (isEditable && !sma.isCompleted() && !sma.isCancelled()) {
- sb.append(" - Current State");
- }
- if (sma.isCancelled()) {
- LogItem item = sma.getLog().getStateEvent(LogType.StateCancelled);
- if (item == null) {
- throw new OseeStateException("ats.Log: Cancelled state has no logItem for " + sma.getHumanReadableId());
- }
- if (item.getState().equals(atsWorkPage.getName())) {
- sb.append(" - Cancelled");
- if (!item.getMsg().equals("")) {
- sb.append(" - Reason: " + item.getMsg());
- }
- }
- }
- if (isCurrentState) {
- if (sma.isCompleted()) {
- sb.append(" - ");
- sb.append(sma.getWorldViewCompletedDateStr());
- LogItem item = sma.getLog().getStateEvent(LogType.StateEntered, atsWorkPage.getName());
- sb.append(" by " + item.getUser().getName());
- } else if (sma.isCancelled()) {
- sb.append(" - ");
- sb.append(sma.getWorldViewCancelledDateStr());
- LogItem item = sma.getLog().getStateEvent(LogType.StateEntered, atsWorkPage.getName());
- sb.append(" by " + item.getUser().getName());
- }
- if (sma.getStateMgr().getAssignees().size() > 0) {
- sb.append(" assigned to ");
- sb.append(sma.getStateMgr().getAssigneesStr(80));
- }
- } else {
- LogItem item = sma.getLog().getStateEvent(LogType.StateComplete, atsWorkPage.getName());
- if (item != null) {
- sb.append(" - State Completed " + item.getDate(XDate.MMDDYYHHMM));
- sb.append(" by " + item.getUser().getName());
- }
- }
- return sb.toString();
- }
-
- @Override
- public void dispose() {
- super.dispose();
- for (XWidget xWidget : allXWidgets) {
- xWidget.dispose();
- }
- atsWorkPage.dispose();
- }
-
- final SMAWorkFlowSection fSection = this;
- final XModifiedListener xModListener = new XModifiedListener() {
- @Override
- public void widgetModified(XWidget xWidget) {
- try {
- if (sma.isDeleted()) {
- return;
- }
- // Notify extensions of widget modified
- for (IAtsStateItem item : sma.getStateItems().getStateItems(atsWorkPage.getId())) {
- try {
- item.widgetModified(fSection, xWidget);
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
- }
- updateTransitionToState();
- updateTransitionToAssignees();
- sma.getEditor().onDirtied();
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
- }
- };
-
- @Override
- public void refresh() {
- if (!Widgets.isAccessible(mainComp)) {
- return;
- }
- super.refresh();
- try {
- if (Widgets.isAccessible(transitionAssigneesLabel)) {
- WorkPageDefinition toWorkPage = (WorkPageDefinition) transitionToStateCombo.getSelected();
- if (toWorkPage == null) {
- transitionAssigneesLabel.setText("");
- } else {
- transitionAssigneesLabel.setText(sma.getTransitionAssigneesStr());
- }
- transitionAssigneesLabel.getParent().layout();
- }
- sma.getEditor().onDirtied();
- for (XWidget xWidget : allXWidgets) {
- xWidget.refresh();
- }
- } catch (OseeCoreException ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
- }
-
- private void handleChangeTransitionAssignees() throws OseeCoreException {
- WorkPageDefinition toWorkPage = (WorkPageDefinition) transitionToStateCombo.getSelected();
- if (toWorkPage == null) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, "No Transition State Selected");
- return;
- }
- if (toWorkPage.isCancelledPage() || toWorkPage.isCompletePage()) {
- AWorkbench.popup("ERROR", "No Assignees in Completed and Cancelled states");
- return;
- }
- UserCheckTreeDialog uld = new UserCheckTreeDialog();
- uld.setMessage("Select users to transition to.");
- uld.setInitialSelections(sma.getTransitionAssignees());
- if (sma.getParentTeamWorkflow() != null) {
- uld.setTeamMembers(sma.getParentTeamWorkflow().getTeamDefinition().getMembersAndLeads());
- }
- if (uld.open() != 0) {
- return;
- }
- Collection<User> users = uld.getUsersSelected();
- if (users.isEmpty()) {
- AWorkbench.popup("ERROR", "Must have at least one assignee");
- return;
- }
- sma.setTransitionAssignees(users);
- refresh();
- sma.getEditor().onDirtied();
- }
-
- private void createCurrentPageTransitionLine(Composite parent, AtsWorkPage atsWorkPage, XFormToolkit toolkit) throws OseeCoreException {
- Composite comp = toolkit.createComposite(parent, SWT.NONE);
- comp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- comp.setLayout(new GridLayout(5, false));
- comp.setBackground(AtsUtil.ACTIVE_COLOR);
-
- transitionButton = toolkit.createButton(comp, "Transition", SWT.PUSH);
- transitionButton.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- handleTransition();
- }
- });
- transitionButton.setBackground(AtsUtil.ACTIVE_COLOR);
-
- Label label = toolkit.createLabel(comp, "to");
- label.setBackground(AtsUtil.ACTIVE_COLOR);
-
- transitionToStateCombo = new XComboViewer("Transition To State Combo");
- transitionToStateCombo.setDisplayLabel(false);
- ArrayList<Object> allPages = new ArrayList<Object>();
- for (WorkPageDefinition nextPage : sma.getToWorkPages()) {
- allPages.add(nextPage);
- }
- transitionToStateCombo.setInput(allPages);
- transitionToStateCombo.setLabelProvider(new WorkPageDefinitionLabelProvider());
- transitionToStateCombo.setContentProvider(new ArrayContentProvider());
- transitionToStateCombo.setSorter(new WorkPageDefinitionViewSorter());
-
- transitionToStateCombo.createWidgets(comp, 1);
-
- // Set default page from workflow default
- ArrayList<Object> defaultPage = new ArrayList<Object>();
- if (atsWorkPage.getDefaultToPage() != null) {
- defaultPage.add(atsWorkPage.getDefaultToPage());
- transitionToStateCombo.setSelected(defaultPage);
- }
- if (atsWorkPage.isCancelledPage()) {
- LogItem item = sma.getLog().getStateEvent(LogType.StateCancelled);
- if (item != null) {
- defaultPage.add(sma.getWorkPageDefinitionByName(item.getState()));
- transitionToStateCombo.setSelected(defaultPage);
- }
- }
- // Update transition based on state items
- updateTransitionToState();
-
- transitionToStateCombo.getCombo().setVisibleItemCount(20);
- transitionToStateCombo.addSelectionChangedListener(new ISelectionChangedListener() {
- @Override
- public void selectionChanged(SelectionChangedEvent event) {
- try {
- updateTransitionToAssignees();
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
- }
- });
-
- Hyperlink assigneesLabelLink = toolkit.createHyperlink(comp, "Next State Assignee(s)", SWT.NONE);
- assigneesLabelLink.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 {
- handleChangeTransitionAssignees();
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
- }
- }
-
- });
- assigneesLabelLink.setBackground(AtsUtil.ACTIVE_COLOR);
-
- transitionAssigneesLabel =
- toolkit.createLabel(comp, Strings.truncate(sma.getTransitionAssigneesStr(), 100, true));
- transitionAssigneesLabel.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- transitionAssigneesLabel.setBackground(AtsUtil.ACTIVE_COLOR);
-
- }
-
- public void updateTransitionToAssignees() throws OseeCoreException {
- Collection<User> assignees = null;
- // Determine if the is an override set of assigness
- for (IAtsStateItem item : sma.getStateItems().getStateItems(atsWorkPage.getId())) {
- assignees = item.getOverrideTransitionToAssignees(this);
- if (assignees != null) {
- break;
- }
- }
- // If override set and isn't the same as already selected, update
- if (assignees != null && !sma.getTransitionAssignees().equals(assignees)) {
- sma.setTransitionAssignees(assignees);
- sma.getEditor().onDirtied();
- }
- refresh();
- }
-
- public void updateTransitionToState() throws OseeCoreException {
- // Determine if there is a transitionToStateOverride for this page
- String transitionStateOverride = null;
- for (IAtsStateItem item : sma.getStateItems().getStateItems(atsWorkPage.getId())) {
- transitionStateOverride = item.getOverrideTransitionToStateName(this);
- if (transitionStateOverride != null) {
- break;
- }
- }
- if (transitionStateOverride != null) {
- // Return if override state is same as selected
- if (((WorkPageDefinition) transitionToStateCombo.getSelected()).getName().equals(transitionStateOverride)) {
- return;
- }
- // Find page corresponding to override state name
- for (WorkPageDefinition toWorkPageDefinition : sma.getToWorkPages()) {
- if (toWorkPageDefinition.getPageName().equals(transitionStateOverride)) {
- // Reset selection
- ArrayList<Object> defaultPage = new ArrayList<Object>();
- defaultPage.add(toWorkPageDefinition);
- transitionToStateCombo.setSelected(defaultPage);
- return;
- }
- }
- }
- }
-
- public void setTransitionToStateSelection(String stateName) throws OseeCoreException {
- ArrayList<Object> allPages = new ArrayList<Object>();
- for (WorkPageDefinition nextPage : sma.getToWorkPages()) {
- if (nextPage.getPageName().equals(stateName)) {
- allPages.add(nextPage);
- }
- }
- transitionToStateCombo.setSelected(allPages);
- }
-
- private void handleTransition() {
-
- try {
-
- if (!isEditable && !sma.getStateMgr().getAssignees().contains(UserManager.getUser(SystemUser.UnAssigned))) {
- AWorkbench.popup(
- "ERROR",
- "You must be assigned to transition this workflow.\nContact Assignee or Select Priviledged Edit for Authorized Overriders.");
- return;
- }
- // As a convenience, if assignee is UnAssigned and user selects to transition, make user current assignee
- if (sma.getStateMgr().getAssignees().contains(UserManager.getUser(SystemUser.UnAssigned))) {
- sma.getStateMgr().removeAssignee(UserManager.getUser(SystemUser.UnAssigned));
- sma.getStateMgr().addAssignee(UserManager.getUser());
- }
- if (sma.isTeamWorkflow() && ((TeamWorkFlowArtifact) sma).getBranchMgr().isWorkingBranchInWork()) {
-
- if (((WorkPageDefinition) transitionToStateCombo.getSelected()).getPageName().equals(
- DefaultTeamState.Cancelled.name())) {
- AWorkbench.popup("Transition Blocked",
- "Working Branch exists.\n\nPlease delete working branch before transition to cancel.");
- return;
- }
- if (((TeamWorkFlowArtifact) sma).getBranchMgr().isBranchInCommit()) {
- AWorkbench.popup("Transition Blocked",
- "Working Branch is being Committed.\n\nPlease wait till commit completes to transition.");
- return;
- }
- if (!atsWorkPage.isAllowTransitionWithWorkingBranch()) {
- AWorkbench.popup("Transition Blocked",
- "Working Branch exists.\n\nPlease commit or delete working branch before transition.");
- return;
- }
-
- }
-
- sma.setInTransition(true);
- sma.getEditor().doSave(null);
-
- // Get transition to state
- WorkPageDefinition toWorkPageDefinition = (WorkPageDefinition) transitionToStateCombo.getSelected();
-
- if (toWorkPageDefinition == null) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, "No Transition State Selected");
- return;
- }
- if (toWorkPageDefinition.getPageName().equals(DefaultTeamState.Cancelled.name())) {
- EntryDialog cancelDialog = new EntryDialog("Cancellation Reason", "Enter cancellation reason.");
- if (cancelDialog.open() != 0) {
- return;
- }
- SkynetTransaction transaction =
- new SkynetTransaction(AtsUtil.getAtsBranch(), "ATS Transition to Cancelled");
- Result result = sma.transitionToCancelled(cancelDialog.getEntry(), transaction, TransitionOption.Persist);
- transaction.execute();
- if (result.isFalse()) {
- result.popup();
- return;
- }
- sma.setInTransition(false);
- sma.getEditor().refreshPages();
- return;
- }
-
- // Validate assignees
- if (sma.getStateMgr().getAssignees().contains(UserManager.getUser(SystemUser.OseeSystem)) || sma.getStateMgr().getAssignees().contains(
- UserManager.getUser(SystemUser.Guest)) || sma.getStateMgr().getAssignees().contains(
- UserManager.getUser(SystemUser.UnAssigned))) {
- AWorkbench.popup("Transition Blocked",
- "Can not transition with \"Guest\", \"UnAssigned\" or \"OseeSystem\" user as assignee.");
- return;
- }
-
- // Get transition to assignees
- Collection<User> toAssignees;
- if (toWorkPageDefinition.isCancelledPage() || toWorkPageDefinition.isCompletePage()) {
- toAssignees = new HashSet<User>();
- } else {
- toAssignees = sma.getTransitionAssignees();
- }
-
- // If this is a return transition, don't require page/tasks to be complete
- if (!sma.isReturnPage(toWorkPageDefinition)) {
-
- // Validate XWidgets for transition
- Result result = atsWorkPage.isPageComplete();
- if (result.isFalse()) {
- result.popup();
- return;
- }
-
- // Loop through this state's tasks to confirm complete
- if (sma.isTaskable()) {
- if (sma instanceof TaskableStateMachineArtifact) {
- for (TaskArtifact taskArt : ((TaskableStateMachineArtifact) sma).getTaskArtifactsFromCurrentState()) {
- if (taskArt.isInWork()) {
- AWorkbench.popup(
- "Transition Blocked",
- "Task Not Complete\n\nTitle: " + taskArt.getName() + "\n\nHRID: " + taskArt.getHumanReadableId());
- return;
- }
- }
- }
- }
-
- // Don't transition without targeted version if so configured
- if (sma.teamDefHasWorkRule(AtsWorkDefinitions.RuleWorkItemId.atsRequireTargetedVersion.name()) || sma.getWorkPageDefinition().hasWorkRule(
- AtsWorkDefinitions.RuleWorkItemId.atsRequireTargetedVersion.name())) {
- if (sma.getWorldViewTargetedVersion() == null && !toWorkPageDefinition.isCancelledPage()) {
- AWorkbench.popup("Transition Blocked",
- "Actions must be targeted for a Version.\nPlease set \"Target Version\" before transition.");
- return;
- }
- }
-
- // Loop through this state's blocking reviews to confirm complete
- if (sma.isTeamWorkflow()) {
- for (ReviewSMArtifact reviewArt : ReviewManager.getReviewsFromCurrentState((TeamWorkFlowArtifact) sma)) {
- if (reviewArt.getReviewBlockType() == ReviewBlockType.Transition && !reviewArt.isCancelledOrCompleted()) {
- AWorkbench.popup("Transition Blocked", "All Blocking Reviews must be completed before transition.");
- return;
- }
- }
- }
-
- // Check extension points for valid transition
- for (IAtsStateItem item : sma.getStateItems().getStateItems(atsWorkPage.getId())) {
- try {
- result =
- item.transitioning(sma, sma.getStateMgr().getCurrentStateName(),
- toWorkPageDefinition.getPageName(), toAssignees);
- if (result.isFalse()) {
- result.popup();
- return;
- }
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
- }
-
- // Ask for metrics for this page (store in state versus task?)
- if (!handlePopulateStateMetrics()) {
- return;
- }
- }
-
- // Persist must be done prior and separate from transition
- sma.persist();
-
- // Perform transition separate from persist of previous changes to state machine artifact
- SkynetTransaction transaction = new SkynetTransaction(AtsUtil.getAtsBranch(), "ATS Transition");
- Result result =
- sma.transition(toWorkPageDefinition.getPageName(), toAssignees, transaction, TransitionOption.Persist);
- transaction.execute();
- if (result.isFalse()) {
- result.popup();
- return;
- }
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
- } finally {
- sma.setInTransition(false);
- }
- }
-
- public boolean isCurrentState() {
- return isCurrentState;
- }
-
- public boolean handlePopulateStateMetrics() throws OseeCoreException {
-
- // Page has the ability to override the autofill of the metrics
- if (!atsWorkPage.isRequireStateHoursSpentPrompt() && sma.getStateMgr().getHoursSpent() == 0) {
- // First, try to autofill if it's only been < 5 min since creation
- double minSinceCreation = getCreationToNowDateDeltaMinutes();
- // System.out.println("minSinceCreation *" + minSinceCreation + "*");
- double hoursSinceCreation = minSinceCreation / 60.0;
- if (hoursSinceCreation < 0.02) {
- hoursSinceCreation = 0.02;
- }
- // System.out.println("hoursSinceCreation *" + hoursSinceCreation + "*");
- if (minSinceCreation < 5) {
- sma.getStateMgr().updateMetrics(hoursSinceCreation, 100, true);
- return true;
- }
- }
-
- // Otherwise, open dialog to ask for hours complete
- String msg =
- sma.getStateMgr().getCurrentStateName() + " State\n\n" + AtsUtil.doubleToI18nString(sma.getStateMgr().getHoursSpent()) + " hours already spent on this state.\n" + "Enter the additional number of hours you spent on this state.";
- SMAStatusDialog tsd =
- new SMAStatusDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), "Enter Hours Spent", msg,
- false, Arrays.asList(sma));
- int result = tsd.open();
- if (result == 0) {
- sma.getStateMgr().updateMetrics(tsd.getHours().getFloat(), 100, true);
- return true;
- }
- return false;
- }
-
- public int getCreationToNowDateDeltaMinutes() throws OseeCoreException {
- Date createDate = sma.getLog().getStateEvent(LogType.StateEntered, atsWorkPage.getName()).getDate();
- long createDateLong = createDate.getTime();
- Date date = new Date();
- float diff = date.getTime() - createDateLong;
- // System.out.println("diff *" + diff + "*");
- Float min = diff / 60000;
- // System.out.println("min *" + min + "*");
- return min.intValue();
- }
-
- public XComboViewer getTransitionToStateCombo() {
- return transitionToStateCombo;
- }
-
- public StateMachineArtifact getSma() {
- return sma;
- }
-
- public AtsWorkPage getPage() {
- return atsWorkPage;
- }
-
- public Composite getMainComp() {
- return mainComp;
- }
-
- public List<XWidget> getXWidgets(Class<?> clazz) {
- List<XWidget> widgets = new ArrayList<XWidget>();
- for (XWidget widget : allXWidgets) {
- if (clazz.isInstance(widget)) {
- widgets.add(widget);
- }
- }
- return widgets;
- }
-
- public static boolean isEditable(StateMachineArtifact sma, AtsWorkPage page) throws OseeCoreException {
- // must be writeable
- return !sma.isReadOnly() &&
- // and access control writeable
- sma.isAccessControlWrite() &&
- // and current state
- (page == null || sma.isCurrentState(page.getName())) &&
- // and one of these
- //
- // page is define to allow anyone to edit
- (sma.getWorkPageDefinition().hasWorkRule(AtsWorkDefinitions.RuleWorkItemId.atsAllowEditToAll.name()) ||
- // team definition has allowed anyone to edit
- sma.teamDefHasWorkRule(AtsWorkDefinitions.RuleWorkItemId.atsAllowEditToAll.name()) ||
- // priviledged edit mode is on
- sma.getEditor().isPriviledgedEditModeEnabled() ||
- // current user is assigned
- sma.isAssigneeMe() ||
- // current user is ats admin
- AtsUtil.isAtsAdmin());
- }
-}
+/*******************************************************************************
+ * 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.editor;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.List;
+import java.util.logging.Level;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.jface.viewers.ArrayContentProvider;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.osee.ats.artifact.ATSLog.LogType;
+import org.eclipse.osee.ats.artifact.LogItem;
+import org.eclipse.osee.ats.artifact.ReviewSMArtifact;
+import org.eclipse.osee.ats.artifact.ReviewSMArtifact.ReviewBlockType;
+import org.eclipse.osee.ats.artifact.StateMachineArtifact;
+import org.eclipse.osee.ats.artifact.StateMachineArtifact.TransitionOption;
+import org.eclipse.osee.ats.artifact.TaskArtifact;
+import org.eclipse.osee.ats.artifact.TaskableStateMachineArtifact;
+import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact;
+import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact.DefaultTeamState;
+import org.eclipse.osee.ats.editor.stateItem.IAtsStateItem;
+import org.eclipse.osee.ats.editor.widget.ReviewInfoXWidget;
+import org.eclipse.osee.ats.editor.widget.StateHoursSpentXWidget;
+import org.eclipse.osee.ats.editor.widget.StatePercentCompleteXWidget;
+import org.eclipse.osee.ats.editor.widget.TaskInfoXWidget;
+import org.eclipse.osee.ats.internal.AtsPlugin;
+import org.eclipse.osee.ats.util.AtsUtil;
+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.workflow.AtsWorkPage;
+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.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.skynet.core.User;
+import org.eclipse.osee.framework.skynet.core.UserManager;
+import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
+import org.eclipse.osee.framework.ui.plugin.util.Result;
+import org.eclipse.osee.framework.ui.skynet.XFormToolkit;
+import org.eclipse.osee.framework.ui.skynet.widgets.IArtifactStoredWidget;
+import org.eclipse.osee.framework.ui.skynet.widgets.XComboViewer;
+import org.eclipse.osee.framework.ui.skynet.widgets.XDate;
+import org.eclipse.osee.framework.ui.skynet.widgets.XLabelValue;
+import org.eclipse.osee.framework.ui.skynet.widgets.XModifiedListener;
+import org.eclipse.osee.framework.ui.skynet.widgets.XWidget;
+import org.eclipse.osee.framework.ui.skynet.widgets.dialog.EntryDialog;
+import org.eclipse.osee.framework.ui.skynet.widgets.dialog.UserCheckTreeDialog;
+import org.eclipse.osee.framework.ui.skynet.widgets.workflow.DynamicXWidgetLayout;
+import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkPageDefinition;
+import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkPageDefinitionLabelProvider;
+import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkPageDefinitionViewSorter;
+import org.eclipse.osee.framework.ui.swt.ALayout;
+import org.eclipse.osee.framework.ui.swt.Displays;
+import org.eclipse.osee.framework.ui.swt.FontManager;
+import org.eclipse.osee.framework.ui.swt.Widgets;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.forms.IManagedForm;
+import org.eclipse.ui.forms.SectionPart;
+import org.eclipse.ui.forms.events.HyperlinkEvent;
+import org.eclipse.ui.forms.events.IHyperlinkListener;
+import org.eclipse.ui.forms.widgets.ExpandableComposite;
+import org.eclipse.ui.forms.widgets.Hyperlink;
+import org.eclipse.ui.forms.widgets.Section;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class SMAWorkFlowSection extends SectionPart {
+
+ private XComboViewer transitionToStateCombo;
+ private Button transitionButton;
+ private Label transitionAssigneesLabel;
+ protected final StateMachineArtifact sma;
+ private final AtsWorkPage atsWorkPage;
+ private final boolean isEditable, isCurrentState, isGlobalEditable;
+ private final XFormToolkit toolkit;
+ private Composite mainComp;
+ private final List<XWidget> allXWidgets = new ArrayList<XWidget>();
+ private boolean sectionCreated = false;
+ private Section section;
+
+ public SMAWorkFlowSection(Composite parent, XFormToolkit toolkit, int style, AtsWorkPage page, StateMachineArtifact sma) throws OseeCoreException {
+ super(parent, toolkit, style | ExpandableComposite.TWISTIE | ExpandableComposite.TITLE_BAR);
+ this.toolkit = toolkit;
+ this.atsWorkPage = page;
+ this.sma = sma;
+
+ isEditable = isEditable(sma, page);
+ isGlobalEditable =
+ !sma.isReadOnly() && sma.isAccessControlWrite() && sma.getEditor().isPriviledgedEditModeEnabled();
+ isCurrentState = sma.isCurrentState(page.getName());
+ // parent.setBackground(Displays.getSystemColor(SWT.COLOR_CYAN));
+ }
+
+ @Override
+ public void initialize(final IManagedForm form) {
+ super.initialize(form);
+
+ section = getSection();
+ try {
+ section.setText(getCurrentStateTitle());
+ if (sma.isCurrentState(atsWorkPage.getName())) {
+ section.setTitleBarForeground(Displays.getSystemColor(SWT.COLOR_DARK_GREEN));
+ section.setBackground(AtsUtil.ACTIVE_COLOR);
+ }
+ section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ // section.setBackground(Displays.getSystemColor(SWT.COLOR_MAGENTA));
+
+ boolean isCurrentSectionExpanded = sma.isCurrentSectionExpanded(atsWorkPage.getName());
+
+ if (isCurrentSectionExpanded) {
+ createSection(section);
+ }
+ // Only load when users selects section
+ section.addListener(SWT.Activate, new Listener() {
+
+ @Override
+ public void handleEvent(Event e) {
+ try {
+ createSection(section);
+ } catch (OseeCoreException ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ }
+ }
+ });
+
+ section.layout();
+ section.setExpanded(isCurrentSectionExpanded);
+ } catch (OseeCoreException ex) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
+ }
+ }
+
+ private synchronized void createSection(Section section) throws OseeCoreException {
+ if (sectionCreated) {
+ return;
+ }
+
+ mainComp = toolkit.createClientContainer(section, 2);
+ mainComp.setLayoutData(new GridData(GridData.FILL_BOTH | GridData.VERTICAL_ALIGN_BEGINNING));
+ mainComp.setLayout(ALayout.getZeroMarginLayout(1, false));
+ // mainComp.setBackground(Displays.getSystemColor(SWT.COLOR_DARK_YELLOW));
+ mainComp.layout();
+
+ SMAWorkFlowTab.createStateNotesHeader(mainComp, toolkit, sma, 2, atsWorkPage.getName());
+
+ Composite workComp = createWorkArea(mainComp, atsWorkPage, toolkit);
+
+ if (isCurrentState) {
+ createCurrentPageTransitionLine(mainComp, atsWorkPage, toolkit);
+ }
+
+ GridData gridData = new GridData(GridData.FILL_BOTH | GridData.VERTICAL_ALIGN_BEGINNING);
+ gridData.widthHint = 400;
+ workComp.setLayoutData(gridData);
+ sectionCreated = true;
+ }
+
+ protected Composite createWorkArea(Composite comp, AtsWorkPage atsWorkPage, XFormToolkit toolkit) throws OseeCoreException {
+
+ atsWorkPage.generateLayoutDatas(sma);
+
+ // Create Page
+ Composite workComp = toolkit.createContainer(comp, 1);
+ workComp.setLayoutData(new GridData(GridData.FILL_BOTH | GridData.VERTICAL_ALIGN_BEGINNING));
+ // workComp.setBackground(Displays.getSystemColor(SWT.COLOR_GREEN));
+
+ createMetricsHeader(workComp);
+
+ // Add any dynamic XWidgets declared for page by IAtsStateItem extensions
+ for (IAtsStateItem item : sma.getStateItems().getStateItems(atsWorkPage.getId())) {
+ for (XWidget xWidget : item.getDynamicXWidgetsPreBody(sma)) {
+ xWidget.createWidgets(workComp, 2);
+ allXWidgets.add(xWidget);
+ }
+ }
+
+ if (atsWorkPage.isCompleteCancelledState()) {
+ Composite completeComp = new Composite(workComp, SWT.None);
+ GridLayout layout = new GridLayout(1, false);
+ completeComp.setLayout(layout);
+ completeComp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ if (atsWorkPage.isCancelledPage()) {
+ createCancelledPageWidgets(completeComp);
+ } else if (atsWorkPage.isCompletePage()) {
+ createCompletedPageWidgets(completeComp);
+ }
+ }
+
+ // Create dynamic XWidgets
+ DynamicXWidgetLayout dynamicXWidgetLayout =
+ atsWorkPage.createBody(getManagedForm(), workComp, sma, xModListener, isEditable || isGlobalEditable);
+ allXWidgets.addAll(dynamicXWidgetLayout.getXWidgets());
+
+ // Add any dynamic XWidgets declared for page by IAtsStateItem extensions
+ for (IAtsStateItem item : sma.getStateItems().getStateItems(atsWorkPage.getId())) {
+ for (XWidget xWidget : item.getDynamicXWidgetsPostBody(sma)) {
+ xWidget.createWidgets(workComp, 2);
+ allXWidgets.add(xWidget);
+ }
+ }
+
+ createTaskFooter(workComp, atsWorkPage.getName());
+ createReviewFooter(workComp, atsWorkPage.getName());
+
+ // Set all XWidget labels to bold font
+ for (XWidget xWidget : allXWidgets) {
+ if (xWidget.getLabelWidget() != null) {
+ SMAEditor.setLabelFonts(xWidget.getLabelWidget(), FontManager.getDefaultLabelFont());
+ }
+ }
+
+ // Check extension points for page creation
+ for (IAtsStateItem item : sma.getStateItems().getStateItems(atsWorkPage.getId())) {
+ Result result = item.pageCreated(toolkit, atsWorkPage, sma, xModListener, isEditable || isGlobalEditable);
+ if (result.isFalse()) {
+ result.popup();
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, "Error in page creation => " + result.getText());
+ }
+ }
+
+ return workComp;
+ }
+
+ private void createCancelledPageWidgets(Composite parent) throws OseeCoreException {
+ XWidget xWidget = null;
+ xWidget = new XLabelValue("Cancelled from State", sma.getLog().getCancelledFromState());
+ xWidget.createWidgets(parent, 1);
+ allXWidgets.add(xWidget);
+
+ if (sma.getEditor().isPriviledgedEditModeEnabled()) {
+ xWidget = new XCancellationReasonTextWidget(sma);
+ xWidget.addXModifiedListener(xModListener);
+ } else {
+ xWidget = new XLabelValue("Cancellation Reason", sma.getLog().getCancellationReason());
+ }
+ xWidget.createWidgets(parent, 1);
+ allXWidgets.add(xWidget);
+ }
+
+ private void createCompletedPageWidgets(Composite parent) throws OseeCoreException {
+ XWidget xWidget = null;
+ xWidget = new XLabelValue("Completed from State", sma.getLog().getCompletedFromState());
+ xWidget.createWidgets(parent, 1);
+ allXWidgets.add(xWidget);
+ }
+
+ private void createMetricsHeader(Composite parent) {
+ if (!atsWorkPage.isCompleteCancelledState()) {
+ Composite comp = new Composite(parent, SWT.None);
+ GridLayout layout = ALayout.getZeroMarginLayout(4, false);
+ layout.marginLeft = 2;
+ comp.setLayout(layout);
+ comp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ allXWidgets.add(new StatePercentCompleteXWidget(getManagedForm(), atsWorkPage, sma, comp, 2, xModListener,
+ isCurrentState));
+ allXWidgets.add(new StateHoursSpentXWidget(getManagedForm(), atsWorkPage, sma, comp, 2, xModListener,
+ isCurrentState));
+ }
+ }
+
+ private void createReviewFooter(Composite parent, String forStateName) {
+ if (isShowReviewInfo() && sma.isTeamWorkflow()) {
+ Composite comp = new Composite(parent, SWT.None);
+ GridLayout layout = new GridLayout(1, false);
+ comp.setLayout(layout);
+ comp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ allXWidgets.add(new ReviewInfoXWidget(getManagedForm(), toolkit, (TeamWorkFlowArtifact) sma, forStateName,
+ comp, 1));
+ }
+ }
+
+ private void createTaskFooter(Composite parent, String forStateName) throws OseeCoreException {
+ if (isShowTaskInfo()) {
+ Composite comp = new Composite(parent, SWT.None);
+ GridLayout layout = new GridLayout(6, false);
+ comp.setLayout(layout);
+ comp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ allXWidgets.add(new TaskInfoXWidget(getManagedForm(), ((TaskableStateMachineArtifact) sma), forStateName,
+ comp, 2));
+ }
+ }
+
+ protected boolean isShowTaskInfo() throws OseeCoreException {
+ return sma.isTaskable();
+ }
+
+ protected boolean isShowReviewInfo() {
+ return sma.isTeamWorkflow();
+ }
+
+ public Result isXWidgetSavable() {
+ for (XWidget widget : allXWidgets) {
+ if (widget instanceof IArtifactStoredWidget) {
+ IStatus status = widget.isValid();
+ if (!status.isOK()) {
+ return new Result(false, status.getMessage());
+ }
+ }
+ }
+ return Result.TrueResult;
+ }
+
+ @Override
+ public String toString() {
+ return atsWorkPage + " for " + getSma();
+ }
+
+ public Result isXWidgetDirty() throws OseeCoreException {
+ for (XWidget widget : allXWidgets) {
+ if (widget instanceof IArtifactStoredWidget) {
+ IArtifactStoredWidget artifactStoredWidget = (IArtifactStoredWidget) widget;
+ Result result = artifactStoredWidget.isDirty();
+ if (result.isTrue()) {
+ return result;
+ }
+ }
+ }
+ return Result.FalseResult;
+ }
+
+ public void getDirtyIArtifactWidgets(List<IArtifactStoredWidget> widgets) throws OseeCoreException {
+ for (XWidget widget : allXWidgets) {
+ if (widget instanceof IArtifactStoredWidget) {
+ IArtifactStoredWidget artifactStoredWidget = (IArtifactStoredWidget) widget;
+ if (artifactStoredWidget.isDirty().isTrue()) {
+ widgets.add(artifactStoredWidget);
+ }
+ }
+ }
+ }
+
+ private String getCurrentStateTitle() throws OseeCoreException {
+ StringBuffer sb = new StringBuffer(atsWorkPage.getName());
+ if (isEditable && !sma.isCompleted() && !sma.isCancelled()) {
+ sb.append(" - Current State");
+ }
+ if (sma.isCancelled()) {
+ LogItem item = sma.getLog().getStateEvent(LogType.StateCancelled);
+ if (item == null) {
+ throw new OseeStateException("ats.Log: Cancelled state has no logItem for " + sma.getHumanReadableId());
+ }
+ if (item.getState().equals(atsWorkPage.getName())) {
+ sb.append(" - Cancelled");
+ if (!item.getMsg().equals("")) {
+ sb.append(" - Reason: " + item.getMsg());
+ }
+ }
+ }
+ if (isCurrentState) {
+ if (sma.isCompleted()) {
+ sb.append(" - ");
+ sb.append(sma.getWorldViewCompletedDateStr());
+ LogItem item = sma.getLog().getStateEvent(LogType.StateEntered, atsWorkPage.getName());
+ sb.append(" by " + item.getUser().getName());
+ } else if (sma.isCancelled()) {
+ sb.append(" - ");
+ sb.append(sma.getWorldViewCancelledDateStr());
+ LogItem item = sma.getLog().getStateEvent(LogType.StateEntered, atsWorkPage.getName());
+ sb.append(" by " + item.getUser().getName());
+ }
+ if (sma.getStateMgr().getAssignees().size() > 0) {
+ sb.append(" assigned to ");
+ sb.append(sma.getStateMgr().getAssigneesStr(80));
+ }
+ } else {
+ LogItem item = sma.getLog().getStateEvent(LogType.StateComplete, atsWorkPage.getName());
+ if (item != null) {
+ sb.append(" - State Completed " + item.getDate(XDate.MMDDYYHHMM));
+ sb.append(" by " + item.getUser().getName());
+ }
+ }
+ return sb.toString();
+ }
+
+ @Override
+ public void dispose() {
+ super.dispose();
+ for (XWidget xWidget : allXWidgets) {
+ xWidget.dispose();
+ }
+ atsWorkPage.dispose();
+ }
+
+ final SMAWorkFlowSection fSection = this;
+ final XModifiedListener xModListener = new XModifiedListener() {
+ @Override
+ public void widgetModified(XWidget xWidget) {
+ try {
+ if (sma.isDeleted()) {
+ return;
+ }
+ // Notify extensions of widget modified
+ for (IAtsStateItem item : sma.getStateItems().getStateItems(atsWorkPage.getId())) {
+ try {
+ item.widgetModified(fSection, xWidget);
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ }
+ }
+ updateTransitionToState();
+ updateTransitionToAssignees();
+ sma.getEditor().onDirtied();
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ }
+ }
+ };
+
+ @Override
+ public void refresh() {
+ if (!Widgets.isAccessible(mainComp)) {
+ return;
+ }
+ super.refresh();
+ try {
+ if (Widgets.isAccessible(transitionAssigneesLabel)) {
+ WorkPageDefinition toWorkPage = (WorkPageDefinition) transitionToStateCombo.getSelected();
+ if (toWorkPage == null) {
+ transitionAssigneesLabel.setText("");
+ } else {
+ transitionAssigneesLabel.setText(sma.getTransitionAssigneesStr());
+ }
+ transitionAssigneesLabel.getParent().layout();
+ }
+ sma.getEditor().onDirtied();
+ for (XWidget xWidget : allXWidgets) {
+ xWidget.refresh();
+ }
+ } catch (OseeCoreException ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ }
+ }
+
+ private void handleChangeTransitionAssignees() throws OseeCoreException {
+ WorkPageDefinition toWorkPage = (WorkPageDefinition) transitionToStateCombo.getSelected();
+ if (toWorkPage == null) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, "No Transition State Selected");
+ return;
+ }
+ if (toWorkPage.isCancelledPage() || toWorkPage.isCompletePage()) {
+ AWorkbench.popup("ERROR", "No Assignees in Completed and Cancelled states");
+ return;
+ }
+ UserCheckTreeDialog uld = new UserCheckTreeDialog();
+ uld.setMessage("Select users to transition to.");
+ uld.setInitialSelections(sma.getTransitionAssignees());
+ if (sma.getParentTeamWorkflow() != null) {
+ uld.setTeamMembers(sma.getParentTeamWorkflow().getTeamDefinition().getMembersAndLeads());
+ }
+ if (uld.open() != 0) {
+ return;
+ }
+ Collection<User> users = uld.getUsersSelected();
+ if (users.isEmpty()) {
+ AWorkbench.popup("ERROR", "Must have at least one assignee");
+ return;
+ }
+ sma.setTransitionAssignees(users);
+ refresh();
+ sma.getEditor().onDirtied();
+ }
+
+ private void createCurrentPageTransitionLine(Composite parent, AtsWorkPage atsWorkPage, XFormToolkit toolkit) throws OseeCoreException {
+ Composite comp = toolkit.createComposite(parent, SWT.NONE);
+ comp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ comp.setLayout(new GridLayout(5, false));
+ comp.setBackground(AtsUtil.ACTIVE_COLOR);
+
+ transitionButton = toolkit.createButton(comp, "Transition", SWT.PUSH);
+ transitionButton.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ handleTransition();
+ }
+ });
+ transitionButton.setBackground(AtsUtil.ACTIVE_COLOR);
+
+ Label label = toolkit.createLabel(comp, "to");
+ label.setBackground(AtsUtil.ACTIVE_COLOR);
+
+ transitionToStateCombo = new XComboViewer("Transition To State Combo");
+ transitionToStateCombo.setDisplayLabel(false);
+ ArrayList<Object> allPages = new ArrayList<Object>();
+ for (WorkPageDefinition nextPage : sma.getToWorkPages()) {
+ allPages.add(nextPage);
+ }
+ transitionToStateCombo.setInput(allPages);
+ transitionToStateCombo.setLabelProvider(new WorkPageDefinitionLabelProvider());
+ transitionToStateCombo.setContentProvider(new ArrayContentProvider());
+ transitionToStateCombo.setSorter(new WorkPageDefinitionViewSorter());
+
+ transitionToStateCombo.createWidgets(comp, 1);
+
+ // Set default page from workflow default
+ ArrayList<Object> defaultPage = new ArrayList<Object>();
+ if (atsWorkPage.getDefaultToPage() != null) {
+ defaultPage.add(atsWorkPage.getDefaultToPage());
+ transitionToStateCombo.setSelected(defaultPage);
+ }
+ if (atsWorkPage.isCancelledPage()) {
+ LogItem item = sma.getLog().getStateEvent(LogType.StateCancelled);
+ if (item != null) {
+ defaultPage.add(sma.getWorkPageDefinitionByName(item.getState()));
+ transitionToStateCombo.setSelected(defaultPage);
+ }
+ }
+ // Update transition based on state items
+ updateTransitionToState();
+
+ transitionToStateCombo.getCombo().setVisibleItemCount(20);
+ transitionToStateCombo.addSelectionChangedListener(new ISelectionChangedListener() {
+ @Override
+ public void selectionChanged(SelectionChangedEvent event) {
+ try {
+ updateTransitionToAssignees();
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ }
+ }
+ });
+
+ Hyperlink assigneesLabelLink = toolkit.createHyperlink(comp, "Next State Assignee(s)", SWT.NONE);
+ assigneesLabelLink.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 {
+ handleChangeTransitionAssignees();
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
+ }
+ }
+
+ });
+ assigneesLabelLink.setBackground(AtsUtil.ACTIVE_COLOR);
+
+ transitionAssigneesLabel =
+ toolkit.createLabel(comp, Strings.truncate(sma.getTransitionAssigneesStr(), 100, true));
+ transitionAssigneesLabel.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ transitionAssigneesLabel.setBackground(AtsUtil.ACTIVE_COLOR);
+
+ }
+
+ public void updateTransitionToAssignees() throws OseeCoreException {
+ Collection<User> assignees = null;
+ // Determine if the is an override set of assigness
+ for (IAtsStateItem item : sma.getStateItems().getStateItems(atsWorkPage.getId())) {
+ assignees = item.getOverrideTransitionToAssignees(this);
+ if (assignees != null) {
+ break;
+ }
+ }
+ // If override set and isn't the same as already selected, update
+ if (assignees != null && !sma.getTransitionAssignees().equals(assignees)) {
+ sma.setTransitionAssignees(assignees);
+ sma.getEditor().onDirtied();
+ }
+ refresh();
+ }
+
+ public void updateTransitionToState() throws OseeCoreException {
+ // Determine if there is a transitionToStateOverride for this page
+ String transitionStateOverride = null;
+ for (IAtsStateItem item : sma.getStateItems().getStateItems(atsWorkPage.getId())) {
+ transitionStateOverride = item.getOverrideTransitionToStateName(this);
+ if (transitionStateOverride != null) {
+ break;
+ }
+ }
+ if (transitionStateOverride != null) {
+ // Return if override state is same as selected
+ if (((WorkPageDefinition) transitionToStateCombo.getSelected()).getName().equals(transitionStateOverride)) {
+ return;
+ }
+ // Find page corresponding to override state name
+ for (WorkPageDefinition toWorkPageDefinition : sma.getToWorkPages()) {
+ if (toWorkPageDefinition.getPageName().equals(transitionStateOverride)) {
+ // Reset selection
+ ArrayList<Object> defaultPage = new ArrayList<Object>();
+ defaultPage.add(toWorkPageDefinition);
+ transitionToStateCombo.setSelected(defaultPage);
+ return;
+ }
+ }
+ }
+ }
+
+ public void setTransitionToStateSelection(String stateName) throws OseeCoreException {
+ ArrayList<Object> allPages = new ArrayList<Object>();
+ for (WorkPageDefinition nextPage : sma.getToWorkPages()) {
+ if (nextPage.getPageName().equals(stateName)) {
+ allPages.add(nextPage);
+ }
+ }
+ transitionToStateCombo.setSelected(allPages);
+ }
+
+ private void handleTransition() {
+
+ try {
+
+ if (!isEditable && !sma.getStateMgr().getAssignees().contains(UserManager.getUser(SystemUser.UnAssigned))) {
+ AWorkbench.popup(
+ "ERROR",
+ "You must be assigned to transition this workflow.\nContact Assignee or Select Priviledged Edit for Authorized Overriders.");
+ return;
+ }
+ // As a convenience, if assignee is UnAssigned and user selects to transition, make user current assignee
+ if (sma.getStateMgr().getAssignees().contains(UserManager.getUser(SystemUser.UnAssigned))) {
+ sma.getStateMgr().removeAssignee(UserManager.getUser(SystemUser.UnAssigned));
+ sma.getStateMgr().addAssignee(UserManager.getUser());
+ }
+ if (sma.isTeamWorkflow() && ((TeamWorkFlowArtifact) sma).getBranchMgr().isWorkingBranchInWork()) {
+
+ if (((WorkPageDefinition) transitionToStateCombo.getSelected()).getPageName().equals(
+ DefaultTeamState.Cancelled.name())) {
+ AWorkbench.popup("Transition Blocked",
+ "Working Branch exists.\n\nPlease delete working branch before transition to cancel.");
+ return;
+ }
+ if (((TeamWorkFlowArtifact) sma).getBranchMgr().isBranchInCommit()) {
+ AWorkbench.popup("Transition Blocked",
+ "Working Branch is being Committed.\n\nPlease wait till commit completes to transition.");
+ return;
+ }
+ if (!atsWorkPage.isAllowTransitionWithWorkingBranch()) {
+ AWorkbench.popup("Transition Blocked",
+ "Working Branch exists.\n\nPlease commit or delete working branch before transition.");
+ return;
+ }
+
+ }
+
+ sma.setInTransition(true);
+ sma.getEditor().doSave(null);
+
+ // Get transition to state
+ WorkPageDefinition toWorkPageDefinition = (WorkPageDefinition) transitionToStateCombo.getSelected();
+
+ if (toWorkPageDefinition == null) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, "No Transition State Selected");
+ return;
+ }
+ if (toWorkPageDefinition.getPageName().equals(DefaultTeamState.Cancelled.name())) {
+ EntryDialog cancelDialog = new EntryDialog("Cancellation Reason", "Enter cancellation reason.");
+ if (cancelDialog.open() != 0) {
+ return;
+ }
+ SkynetTransaction transaction =
+ new SkynetTransaction(AtsUtil.getAtsBranch(), "ATS Transition to Cancelled");
+ Result result = sma.transitionToCancelled(cancelDialog.getEntry(), transaction, TransitionOption.Persist);
+ transaction.execute();
+ if (result.isFalse()) {
+ result.popup();
+ return;
+ }
+ sma.setInTransition(false);
+ sma.getEditor().refreshPages();
+ return;
+ }
+
+ // Validate assignees
+ if (sma.getStateMgr().getAssignees().contains(UserManager.getUser(SystemUser.OseeSystem)) || sma.getStateMgr().getAssignees().contains(
+ UserManager.getUser(SystemUser.Guest)) || sma.getStateMgr().getAssignees().contains(
+ UserManager.getUser(SystemUser.UnAssigned))) {
+ AWorkbench.popup("Transition Blocked",
+ "Can not transition with \"Guest\", \"UnAssigned\" or \"OseeSystem\" user as assignee.");
+ return;
+ }
+
+ // Get transition to assignees
+ Collection<User> toAssignees;
+ if (toWorkPageDefinition.isCancelledPage() || toWorkPageDefinition.isCompletePage()) {
+ toAssignees = new HashSet<User>();
+ } else {
+ toAssignees = sma.getTransitionAssignees();
+ }
+
+ // If this is a return transition, don't require page/tasks to be complete
+ if (!sma.isReturnPage(toWorkPageDefinition)) {
+
+ // Validate XWidgets for transition
+ Result result = atsWorkPage.isPageComplete();
+ if (result.isFalse()) {
+ result.popup();
+ return;
+ }
+
+ // Loop through this state's tasks to confirm complete
+ if (sma.isTaskable()) {
+ if (sma instanceof TaskableStateMachineArtifact) {
+ for (TaskArtifact taskArt : ((TaskableStateMachineArtifact) sma).getTaskArtifactsFromCurrentState()) {
+ if (taskArt.isInWork()) {
+ AWorkbench.popup(
+ "Transition Blocked",
+ "Task Not Complete\n\nTitle: " + taskArt.getName() + "\n\nHRID: " + taskArt.getHumanReadableId());
+ return;
+ }
+ }
+ }
+ }
+
+ // Don't transition without targeted version if so configured
+ if (sma.teamDefHasWorkRule(AtsWorkDefinitions.RuleWorkItemId.atsRequireTargetedVersion.name()) || sma.getWorkPageDefinition().hasWorkRule(
+ AtsWorkDefinitions.RuleWorkItemId.atsRequireTargetedVersion.name())) {
+ if (sma.getWorldViewTargetedVersion() == null && !toWorkPageDefinition.isCancelledPage()) {
+ AWorkbench.popup("Transition Blocked",
+ "Actions must be targeted for a Version.\nPlease set \"Target Version\" before transition.");
+ return;
+ }
+ }
+
+ // Loop through this state's blocking reviews to confirm complete
+ if (sma.isTeamWorkflow()) {
+ for (ReviewSMArtifact reviewArt : ReviewManager.getReviewsFromCurrentState((TeamWorkFlowArtifact) sma)) {
+ if (reviewArt.getReviewBlockType() == ReviewBlockType.Transition && !reviewArt.isCancelledOrCompleted()) {
+ AWorkbench.popup("Transition Blocked", "All Blocking Reviews must be completed before transition.");
+ return;
+ }
+ }
+ }
+
+ // Check extension points for valid transition
+ for (IAtsStateItem item : sma.getStateItems().getStateItems(atsWorkPage.getId())) {
+ try {
+ result =
+ item.transitioning(sma, sma.getStateMgr().getCurrentStateName(),
+ toWorkPageDefinition.getPageName(), toAssignees);
+ if (result.isFalse()) {
+ result.popup();
+ return;
+ }
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ }
+ }
+
+ // Ask for metrics for this page (store in state versus task?)
+ if (!handlePopulateStateMetrics()) {
+ return;
+ }
+ }
+
+ // Persist must be done prior and separate from transition
+ sma.persist();
+
+ // Perform transition separate from persist of previous changes to state machine artifact
+ SkynetTransaction transaction = new SkynetTransaction(AtsUtil.getAtsBranch(), "ATS Transition");
+ Result result =
+ sma.transition(toWorkPageDefinition.getPageName(), toAssignees, transaction, TransitionOption.Persist);
+ transaction.execute();
+ if (result.isFalse()) {
+ result.popup();
+ return;
+ }
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
+ } finally {
+ sma.setInTransition(false);
+ }
+ }
+
+ public boolean isCurrentState() {
+ return isCurrentState;
+ }
+
+ public boolean handlePopulateStateMetrics() throws OseeCoreException {
+
+ // Page has the ability to override the autofill of the metrics
+ if (!atsWorkPage.isRequireStateHoursSpentPrompt() && sma.getStateMgr().getHoursSpent() == 0) {
+ // First, try to autofill if it's only been < 5 min since creation
+ double minSinceCreation = getCreationToNowDateDeltaMinutes();
+ // System.out.println("minSinceCreation *" + minSinceCreation + "*");
+ double hoursSinceCreation = minSinceCreation / 60.0;
+ if (hoursSinceCreation < 0.02) {
+ hoursSinceCreation = 0.02;
+ }
+ // System.out.println("hoursSinceCreation *" + hoursSinceCreation + "*");
+ if (minSinceCreation < 5) {
+ sma.getStateMgr().updateMetrics(hoursSinceCreation, 100, true);
+ return true;
+ }
+ }
+
+ // Otherwise, open dialog to ask for hours complete
+ String msg =
+ sma.getStateMgr().getCurrentStateName() + " State\n\n" + AtsUtil.doubleToI18nString(sma.getStateMgr().getHoursSpent()) + " hours already spent on this state.\n" + "Enter the additional number of hours you spent on this state.";
+ SMAStatusDialog tsd =
+ new SMAStatusDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), "Enter Hours Spent", msg,
+ false, Arrays.asList(sma));
+ int result = tsd.open();
+ if (result == 0) {
+ sma.getStateMgr().updateMetrics(tsd.getHours().getFloat(), 100, true);
+ return true;
+ }
+ return false;
+ }
+
+ public int getCreationToNowDateDeltaMinutes() throws OseeCoreException {
+ Date createDate = sma.getLog().getStateEvent(LogType.StateEntered, atsWorkPage.getName()).getDate();
+ long createDateLong = createDate.getTime();
+ Date date = new Date();
+ float diff = date.getTime() - createDateLong;
+ // System.out.println("diff *" + diff + "*");
+ Float min = diff / 60000;
+ // System.out.println("min *" + min + "*");
+ return min.intValue();
+ }
+
+ public XComboViewer getTransitionToStateCombo() {
+ return transitionToStateCombo;
+ }
+
+ public StateMachineArtifact getSma() {
+ return sma;
+ }
+
+ public AtsWorkPage getPage() {
+ return atsWorkPage;
+ }
+
+ public Composite getMainComp() {
+ return mainComp;
+ }
+
+ public List<XWidget> getXWidgets(Class<?> clazz) {
+ List<XWidget> widgets = new ArrayList<XWidget>();
+ for (XWidget widget : allXWidgets) {
+ if (clazz.isInstance(widget)) {
+ widgets.add(widget);
+ }
+ }
+ return widgets;
+ }
+
+ public static boolean isEditable(StateMachineArtifact sma, AtsWorkPage page) throws OseeCoreException {
+ // must be writeable
+ return !sma.isReadOnly() &&
+ // and access control writeable
+ sma.isAccessControlWrite() &&
+ // and current state
+ (page == null || sma.isCurrentState(page.getName())) &&
+ // and one of these
+ //
+ // page is define to allow anyone to edit
+ (sma.getWorkPageDefinition().hasWorkRule(AtsWorkDefinitions.RuleWorkItemId.atsAllowEditToAll.name()) ||
+ // team definition has allowed anyone to edit
+ sma.teamDefHasWorkRule(AtsWorkDefinitions.RuleWorkItemId.atsAllowEditToAll.name()) ||
+ // priviledged edit mode is on
+ sma.getEditor().isPriviledgedEditModeEnabled() ||
+ // current user is assigned
+ sma.isAssigneeMe() ||
+ // current user is ats admin
+ AtsUtil.isAtsAdmin());
+ }
+}
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 7259d0c50d5..4559511a5ab 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
@@ -1,673 +1,673 @@
-/*******************************************************************************
- * 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.editor;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.logging.Level;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.IJobChangeEvent;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.core.runtime.jobs.JobChangeAdapter;
-import org.eclipse.jface.action.IToolBarManager;
-import org.eclipse.osee.ats.actions.AddNoteAction;
-import org.eclipse.osee.ats.actions.CopyActionDetailsAction;
-import org.eclipse.osee.ats.actions.EmailActionAction;
-import org.eclipse.osee.ats.actions.FavoriteAction;
-import org.eclipse.osee.ats.actions.OpenInArtifactEditorAction;
-import org.eclipse.osee.ats.actions.OpenInAtsWorldAction;
-import org.eclipse.osee.ats.actions.OpenParentAction;
-import org.eclipse.osee.ats.actions.OpenTeamDefinitionAction;
-import org.eclipse.osee.ats.actions.OpenVersionArtifactAction;
-import org.eclipse.osee.ats.actions.PrivilegedEditAction;
-import org.eclipse.osee.ats.actions.ReloadAction;
-import org.eclipse.osee.ats.actions.ResourceHistoryAction;
-import org.eclipse.osee.ats.actions.ShowChangeReportAction;
-import org.eclipse.osee.ats.actions.ShowMergeManagerAction;
-import org.eclipse.osee.ats.artifact.AtsAttributeTypes;
-import org.eclipse.osee.ats.artifact.GoalArtifact;
-import org.eclipse.osee.ats.artifact.NoteItem;
-import org.eclipse.osee.ats.artifact.StateMachineArtifact;
-import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact;
-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.workflow.AtsWorkPage;
-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.Strings;
-import org.eclipse.osee.framework.logging.OseeLog;
-import org.eclipse.osee.framework.plugin.core.IActionable;
-import org.eclipse.osee.framework.ui.plugin.OseeUiActions;
-import org.eclipse.osee.framework.ui.plugin.util.Result;
-import org.eclipse.osee.framework.ui.skynet.ArtifactImageManager;
-import org.eclipse.osee.framework.ui.skynet.XFormToolkit;
-import org.eclipse.osee.framework.ui.skynet.artifact.annotation.AnnotationComposite;
-import org.eclipse.osee.framework.ui.skynet.artifact.editor.parts.MessageSummaryNote;
-import org.eclipse.osee.framework.ui.skynet.util.FormsUtil;
-import org.eclipse.osee.framework.ui.skynet.util.LoadingComposite;
-import org.eclipse.osee.framework.ui.skynet.util.OseeDictionary;
-import org.eclipse.osee.framework.ui.skynet.widgets.IArtifactStoredWidget;
-import org.eclipse.osee.framework.ui.skynet.widgets.XDate;
-import org.eclipse.osee.framework.ui.swt.ALayout;
-import org.eclipse.osee.framework.ui.swt.Displays;
-import org.eclipse.osee.framework.ui.swt.ExceptionComposite;
-import org.eclipse.osee.framework.ui.swt.IDirtiableEditor;
-import org.eclipse.osee.framework.ui.swt.Widgets;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.ScrolledComposite;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.ui.forms.IManagedForm;
-import org.eclipse.ui.forms.IMessage;
-import org.eclipse.ui.forms.editor.FormPage;
-import org.eclipse.ui.forms.events.HyperlinkAdapter;
-import org.eclipse.ui.forms.events.HyperlinkEvent;
-import org.eclipse.ui.forms.widgets.ScrolledForm;
-import org.eclipse.ui.progress.UIJob;
-
-/**
- * @author Donald G. Dunne
- */
-public class SMAWorkFlowTab extends FormPage implements IActionable {
- private final StateMachineArtifact sma;
- private final ArrayList<SMAWorkFlowSection> sections = new ArrayList<SMAWorkFlowSection>();
- private final XFormToolkit toolkit;
- private final List<AtsWorkPage> atsWorkPages = new ArrayList<AtsWorkPage>();
- private ScrolledForm scrolledForm;
- private final Integer HEADER_COMP_COLUMNS = 4;
- private static Map<String, Integer> guidToScrollLocation = new HashMap<String, Integer>();
- private SMARelationsHyperlinkComposite smaRelationsComposite;
- private IManagedForm managedForm;
- private Composite bodyComp;
- private Composite atsBody;
- private SMAActionableItemHeader actionableItemHeader;
- private SMAWorkflowMetricsHeader workflowMetricsHeader;
- private SMADetailsSection smaDetailsSection;
- private SMARelationsSection smaRelationsSection;
- private SMAOperationsSection smaOperationsSection;
- private SMAGoalMembersSection smaGoalMembersSection;
- private SMAHistorySection smaHistorySection;
- private LoadingComposite loadingComposite;
- private static String PRIVILEGED_EDIT = "(Priviledged Edit Enabled)";
-
- public SMAWorkFlowTab(StateMachineArtifact sma) {
- super(sma.getEditor(), "overview", "Workflow");
- this.sma = sma;
- toolkit = sma.getEditor().getToolkit();
- }
-
- @Override
- protected void createFormContent(IManagedForm managedForm) {
- super.createFormContent(managedForm);
-
- this.managedForm = managedForm;
- try {
- scrolledForm = managedForm.getForm();
- scrolledForm.addDisposeListener(new DisposeListener() {
- @Override
- public void widgetDisposed(DisposeEvent e) {
- storeScrollLocation();
- }
- });
- updateTitleBar();
-
- bodyComp = managedForm.getForm().getBody();
- GridLayout gridLayout = new GridLayout(1, false);
- bodyComp.setLayout(gridLayout);
- GridData gd = new GridData(SWT.LEFT, SWT.LEFT, true, false);
- gd.widthHint = 300;
- bodyComp.setLayoutData(gd);
-
- setLoading(true);
- if (sma.getHelpContext() != null) {
- AtsPlugin.getInstance().setHelp(scrolledForm, sma.getHelpContext(), "org.eclipse.osee.ats.help.ui");
- }
-
- refreshData();
-
- } catch (Exception ex) {
- handleException(ex);
- }
- }
-
- private void updateTitleBar() throws OseeCoreException {
- String titleString = sma.getEditor().getTitleStr();
- String displayableTitle = Strings.escapeAmpersands(titleString);
- scrolledForm.setText(displayableTitle);
- scrolledForm.setImage(ArtifactImageManager.getImage(sma));
- }
-
- @Override
- public void showBusy(boolean busy) {
- super.showBusy(busy);
- if (Widgets.isAccessible(getManagedForm().getForm())) {
- getManagedForm().getForm().getForm().setBusy(busy);
- }
- }
-
- public void refreshData() {
+/*******************************************************************************
+ * 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.editor;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.logging.Level;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.IJobChangeEvent;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.core.runtime.jobs.JobChangeAdapter;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.osee.ats.actions.AddNoteAction;
+import org.eclipse.osee.ats.actions.CopyActionDetailsAction;
+import org.eclipse.osee.ats.actions.EmailActionAction;
+import org.eclipse.osee.ats.actions.FavoriteAction;
+import org.eclipse.osee.ats.actions.OpenInArtifactEditorAction;
+import org.eclipse.osee.ats.actions.OpenInAtsWorldAction;
+import org.eclipse.osee.ats.actions.OpenParentAction;
+import org.eclipse.osee.ats.actions.OpenTeamDefinitionAction;
+import org.eclipse.osee.ats.actions.OpenVersionArtifactAction;
+import org.eclipse.osee.ats.actions.PrivilegedEditAction;
+import org.eclipse.osee.ats.actions.ReloadAction;
+import org.eclipse.osee.ats.actions.ResourceHistoryAction;
+import org.eclipse.osee.ats.actions.ShowChangeReportAction;
+import org.eclipse.osee.ats.actions.ShowMergeManagerAction;
+import org.eclipse.osee.ats.artifact.AtsAttributeTypes;
+import org.eclipse.osee.ats.artifact.GoalArtifact;
+import org.eclipse.osee.ats.artifact.NoteItem;
+import org.eclipse.osee.ats.artifact.StateMachineArtifact;
+import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact;
+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.workflow.AtsWorkPage;
+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.Strings;
+import org.eclipse.osee.framework.logging.OseeLog;
+import org.eclipse.osee.framework.plugin.core.IActionable;
+import org.eclipse.osee.framework.ui.plugin.OseeUiActions;
+import org.eclipse.osee.framework.ui.plugin.util.Result;
+import org.eclipse.osee.framework.ui.skynet.ArtifactImageManager;
+import org.eclipse.osee.framework.ui.skynet.XFormToolkit;
+import org.eclipse.osee.framework.ui.skynet.artifact.annotation.AnnotationComposite;
+import org.eclipse.osee.framework.ui.skynet.artifact.editor.parts.MessageSummaryNote;
+import org.eclipse.osee.framework.ui.skynet.util.FormsUtil;
+import org.eclipse.osee.framework.ui.skynet.util.LoadingComposite;
+import org.eclipse.osee.framework.ui.skynet.util.OseeDictionary;
+import org.eclipse.osee.framework.ui.skynet.widgets.IArtifactStoredWidget;
+import org.eclipse.osee.framework.ui.skynet.widgets.XDate;
+import org.eclipse.osee.framework.ui.swt.ALayout;
+import org.eclipse.osee.framework.ui.swt.Displays;
+import org.eclipse.osee.framework.ui.swt.ExceptionComposite;
+import org.eclipse.osee.framework.ui.swt.IDirtiableEditor;
+import org.eclipse.osee.framework.ui.swt.Widgets;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.ScrolledComposite;
+import org.eclipse.swt.events.DisposeEvent;
+import org.eclipse.swt.events.DisposeListener;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.ui.forms.IManagedForm;
+import org.eclipse.ui.forms.IMessage;
+import org.eclipse.ui.forms.editor.FormPage;
+import org.eclipse.ui.forms.events.HyperlinkAdapter;
+import org.eclipse.ui.forms.events.HyperlinkEvent;
+import org.eclipse.ui.forms.widgets.ScrolledForm;
+import org.eclipse.ui.progress.UIJob;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class SMAWorkFlowTab extends FormPage implements IActionable {
+ private final StateMachineArtifact sma;
+ private final ArrayList<SMAWorkFlowSection> sections = new ArrayList<SMAWorkFlowSection>();
+ private final XFormToolkit toolkit;
+ private final List<AtsWorkPage> atsWorkPages = new ArrayList<AtsWorkPage>();
+ private ScrolledForm scrolledForm;
+ private final Integer HEADER_COMP_COLUMNS = 4;
+ private static Map<String, Integer> guidToScrollLocation = new HashMap<String, Integer>();
+ private SMARelationsHyperlinkComposite smaRelationsComposite;
+ private IManagedForm managedForm;
+ private Composite bodyComp;
+ private Composite atsBody;
+ private SMAActionableItemHeader actionableItemHeader;
+ private SMAWorkflowMetricsHeader workflowMetricsHeader;
+ private SMADetailsSection smaDetailsSection;
+ private SMARelationsSection smaRelationsSection;
+ private SMAOperationsSection smaOperationsSection;
+ private SMAGoalMembersSection smaGoalMembersSection;
+ private SMAHistorySection smaHistorySection;
+ private LoadingComposite loadingComposite;
+ private static String PRIVILEGED_EDIT = "(Priviledged Edit Enabled)";
+
+ public SMAWorkFlowTab(StateMachineArtifact sma) {
+ super(sma.getEditor(), "overview", "Workflow");
+ this.sma = sma;
+ toolkit = sma.getEditor().getToolkit();
+ }
+
+ @Override
+ protected void createFormContent(IManagedForm managedForm) {
+ super.createFormContent(managedForm);
+
+ this.managedForm = managedForm;
+ try {
+ scrolledForm = managedForm.getForm();
+ scrolledForm.addDisposeListener(new DisposeListener() {
+ @Override
+ public void widgetDisposed(DisposeEvent e) {
+ storeScrollLocation();
+ }
+ });
+ updateTitleBar();
+
+ bodyComp = managedForm.getForm().getBody();
+ GridLayout gridLayout = new GridLayout(1, false);
+ bodyComp.setLayout(gridLayout);
+ GridData gd = new GridData(SWT.LEFT, SWT.LEFT, true, false);
+ gd.widthHint = 300;
+ bodyComp.setLayoutData(gd);
+
+ setLoading(true);
+ if (sma.getHelpContext() != null) {
+ AtsPlugin.getInstance().setHelp(scrolledForm, sma.getHelpContext(), "org.eclipse.osee.ats.help.ui");
+ }
+
+ refreshData();
+
+ } catch (Exception ex) {
+ handleException(ex);
+ }
+ }
+
+ private void updateTitleBar() throws OseeCoreException {
+ String titleString = sma.getEditor().getTitleStr();
+ String displayableTitle = Strings.escapeAmpersands(titleString);
+ scrolledForm.setText(displayableTitle);
+ scrolledForm.setImage(ArtifactImageManager.getImage(sma));
+ }
+
+ @Override
+ public void showBusy(boolean busy) {
+ super.showBusy(busy);
+ if (Widgets.isAccessible(getManagedForm().getForm())) {
+ getManagedForm().getForm().getForm().setBusy(busy);
+ }
+ }
+
+ public void refreshData() {
Operations.executeAsJob(AtsBulkLoad.getConfigLoadingOperation(), true, Job.LONG,
new ReloadJobChangeAdapter(sma.getEditor()));
- // Don't put in operation cause doesn't have to be loaded before editor displays
- OseeDictionary.load();
- }
- private final class ReloadJobChangeAdapter extends JobChangeAdapter {
-
- private final IDirtiableEditor editor;
-
- private ReloadJobChangeAdapter(IDirtiableEditor editor) {
- this.editor = editor;
- showBusy(true);
- }
-
- @Override
- public void scheduled(IJobChangeEvent event) {
- super.scheduled(event);
- }
-
- @Override
- public void aboutToRun(IJobChangeEvent event) {
- super.aboutToRun(event);
- }
-
- @Override
- public void done(IJobChangeEvent event) {
- super.done(event);
- Job job = new UIJob("Draw Workflow Tab") {
-
- @Override
- public IStatus runInUIThread(IProgressMonitor monitor) {
- try {
- updateTitleBar();
- refreshToolbar();
- setLoading(false);
- createAtsBody();
- addMessageDecoration(scrolledForm);
- FormsUtil.addHeadingGradient(toolkit, scrolledForm, true);
- editor.onDirtied();
- } catch (OseeCoreException ex) {
- handleException(ex);
- } finally {
- showBusy(false);
- }
- return Status.OK_STATUS;
- }
- };
- Operations.scheduleJob(job, false, Job.SHORT, null);
- }
- }
-
- private void handleException(Exception ex) {
- setLoading(false);
- if (Widgets.isAccessible(atsBody)) {
- atsBody.dispose();
- }
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- new ExceptionComposite(bodyComp, ex);
- bodyComp.layout();
- }
-
- private void setLoading(boolean set) {
- if (set) {
- loadingComposite = new LoadingComposite(bodyComp);
- bodyComp.layout();
- } else {
- if (Widgets.isAccessible(loadingComposite)) {
- loadingComposite.dispose();
- }
- }
- showBusy(set);
- }
-
- private void createAtsBody() throws OseeCoreException {
- if (Widgets.isAccessible(atsBody)) {
- atsBody.dispose();
- }
- atsBody = toolkit.createComposite(bodyComp);
- atsBody.setLayoutData(new GridData(GridData.FILL_BOTH));
- atsBody.setLayout(new GridLayout(1, false));
-
- createHeaderSection(sma.getCurrentAtsWorkPage());
- createGoalSection();
- createPageSections();
- createHistorySection();
- createRelationsSection();
- createOperationsSection();
- createDetailsSection();
-
- atsBody.layout();
- atsBody.setFocus();
- // Jump to scroll location if set
- Integer selection = guidToScrollLocation.get(sma.getGuid());
- if (selection != null) {
- JumpScrollbarJob job = new JumpScrollbarJob("");
- job.schedule(500);
- }
-
- }
-
- private void createDetailsSection() {
- try {
- smaDetailsSection = new SMADetailsSection(sma.getEditor(), atsBody, toolkit, SWT.NONE);
- managedForm.addPart(smaDetailsSection);
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
- }
-
- private void createOperationsSection() {
- try {
- smaOperationsSection = new SMAOperationsSection(sma.getEditor(), atsBody, toolkit, SWT.NONE);
- managedForm.addPart(smaOperationsSection);
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
- }
-
- private void createRelationsSection() {
- try {
- smaRelationsSection = new SMARelationsSection(sma.getEditor(), atsBody, toolkit, SWT.NONE);
- managedForm.addPart(smaRelationsSection);
-
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
- }
-
- private void createHistorySection() {
- try {
- smaHistorySection = new SMAHistorySection(sma.getEditor(), atsBody, toolkit, SWT.NONE);
- managedForm.addPart(smaHistorySection);
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
- }
-
- private void createGoalSection() {
- try {
- if (sma instanceof GoalArtifact) {
- smaGoalMembersSection = new SMAGoalMembersSection(sma.getEditor(), atsBody, toolkit, SWT.NONE);
- managedForm.addPart(smaGoalMembersSection);
- }
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
- }
-
- private void createPageSections() {
- try {
- // Only display current or past states
- for (AtsWorkPage atsWorkPage : sma.getAtsWorkPages()) {
- try {
- if (sma.isCurrentState(atsWorkPage.getName()) || sma.getStateMgr().isStateVisited(atsWorkPage.getName())) {
- // Don't show completed or cancelled state if not currently those state
- if (atsWorkPage.isCompletePage() && !sma.isCompleted()) {
- continue;
- }
- if (atsWorkPage.isCancelledPage() && !sma.isCancelled()) {
- continue;
- }
- SMAWorkFlowSection section = new SMAWorkFlowSection(atsBody, toolkit, SWT.NONE, atsWorkPage, sma);
- managedForm.addPart(section);
- control = section.getMainComp();
- sections.add(section);
- atsWorkPages.add(atsWorkPage);
- }
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
- }
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
- }
-
- private void createHeaderSection(AtsWorkPage currentAtsWorkPage) {
- Composite headerComp = toolkit.createComposite(atsBody);
- GridData gd = new GridData(GridData.FILL_HORIZONTAL);
- gd.widthHint = 100;
- headerComp.setLayoutData(gd);
- headerComp.setLayout(ALayout.getZeroMarginLayout(1, false));
- // mainComp.setBackground(Displays.getSystemColor(SWT.COLOR_RED));
-
- // Display relations
- try {
- createCurrentStateAndTeamHeaders(headerComp, toolkit);
- createTargetVersionAndAssigneeHeader(headerComp, currentAtsWorkPage, toolkit);
-
- createLatestHeader(headerComp, toolkit);
- if (sma.isTeamWorkflow()) {
- actionableItemHeader = new SMAActionableItemHeader(headerComp, toolkit, sma);
- }
- workflowMetricsHeader = new SMAWorkflowMetricsHeader(headerComp, toolkit, sma);
- createSMANotesHeader(headerComp, toolkit, sma, HEADER_COMP_COLUMNS);
- createStateNotesHeader(headerComp, toolkit, sma, HEADER_COMP_COLUMNS, null);
- createAnnotationsHeader(headerComp, toolkit);
-
- sections.clear();
- atsWorkPages.clear();
-
- if (SMARelationsHyperlinkComposite.relationExists(sma)) {
- smaRelationsComposite = new SMARelationsHyperlinkComposite(atsBody, toolkit, SWT.NONE);
- smaRelationsComposite.create(sma);
- }
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
- }
-
- protected boolean isShowTargetedVersion() throws OseeCoreException {
- return sma.isTargetedVersionable();
- }
-
- private void createTargetVersionAndAssigneeHeader(Composite parent, AtsWorkPage page, XFormToolkit toolkit) throws OseeCoreException {
- boolean isShowTargetedVersion = isShowTargetedVersion();
- boolean isCurrentNonCompleteCanceledState = page.isCurrentNonCompleteCancelledState(sma);
- if (!isShowTargetedVersion && !isCurrentNonCompleteCanceledState) {
- return;
- }
-
- Composite comp = toolkit.createContainer(parent, 6);
- comp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- comp.setLayout(ALayout.getZeroMarginLayout(6, false));
-
- // Targeted Version
- if (isShowTargetedVersion) {
- new SMATargetedVersionHeader(comp, SWT.NONE, sma, toolkit);
- toolkit.createLabel(comp, " ");
- }
-
- // Create Privileged Edit label
- if (sma.getEditor().isPriviledgedEditModeEnabled()) {
- Label label = toolkit.createLabel(comp, PRIVILEGED_EDIT);
- label.setForeground(Displays.getSystemColor(SWT.COLOR_RED));
- label.setToolTipText("Priviledged Edit Mode is Enabled. Editing any field in any state is authorized. Select icon to disable");
- }
-
- // Current Assignees
- if (isCurrentNonCompleteCanceledState) {
- boolean editable = !sma.isCancelledOrCompleted() && !sma.isReadOnly() &&
- // and access control writeable
- sma.isAccessControlWrite() && //
-
- (SMAWorkFlowSection.isEditable(sma, page) || //
- // page is define to allow anyone to edit
- sma.getWorkPageDefinition().hasWorkRule(AtsWorkDefinitions.RuleWorkItemId.atsAllowAssigneeToAll.name()) ||
- // team definition has allowed anyone to edit
- sma.teamDefHasWorkRule(AtsWorkDefinitions.RuleWorkItemId.atsAllowAssigneeToAll.name()));
-
- new SMAAssigneesHeader(comp, SWT.NONE, sma, toolkit, editable);
- }
- }
-
- private void addMessageDecoration(ScrolledForm form) {
- form.getForm().addMessageHyperlinkListener(new HyperlinkAdapter() {
-
- @Override
- public void linkActivated(HyperlinkEvent e) {
- String title = e.getLabel();
- Object href = e.getHref();
- if (href instanceof IMessage[]) {
- Point noteLocation = ((Control) e.widget).toDisplay(0, 0);
- noteLocation.x += 10;
- noteLocation.y += 10;
-
- MessageSummaryNote note = new MessageSummaryNote(getManagedForm(), title, (IMessage[]) href);
- note.setLocation(noteLocation);
- note.open();
- }
- }
-
- });
- }
-
- private void refreshToolbar() throws OseeCoreException {
- IToolBarManager toolBarMgr = scrolledForm.getToolBarManager();
- toolBarMgr.removeAll();
-
- if (sma.isTeamWorkflow() && (((TeamWorkFlowArtifact) sma).getBranchMgr().isCommittedBranchExists() || ((TeamWorkFlowArtifact) sma).getBranchMgr().isWorkingBranchInWork())) {
- toolBarMgr.add(new ShowMergeManagerAction((TeamWorkFlowArtifact) sma));
- toolBarMgr.add(new ShowChangeReportAction((TeamWorkFlowArtifact) sma));
- }
- toolBarMgr.add(new FavoriteAction(sma.getEditor()));
- if (sma.getParentSMA() != null) {
- toolBarMgr.add(new OpenParentAction(sma));
- }
- toolBarMgr.add(new EmailActionAction(sma.getEditor()));
- toolBarMgr.add(new AddNoteAction(sma));
- toolBarMgr.add(new OpenInAtsWorldAction(sma));
- if (AtsUtil.isAtsAdmin()) {
- toolBarMgr.add(new OpenInArtifactEditorAction(sma.getEditor()));
- }
- toolBarMgr.add(new OpenVersionArtifactAction(sma));
- toolBarMgr.add(new OpenTeamDefinitionAction(sma));
- toolBarMgr.add(new CopyActionDetailsAction(sma));
- toolBarMgr.add(new PrivilegedEditAction(sma));
- toolBarMgr.add(new ResourceHistoryAction(sma));
- toolBarMgr.add(new ReloadAction(sma));
-
- OseeUiActions.addButtonToEditorToolBar(sma.getEditor(), this, AtsPlugin.getInstance(),
- scrolledForm.getToolBarManager(), SMAEditor.EDITOR_ID, "ATS Editor");
-
- scrolledForm.updateToolBar();
- }
-
- public Result isXWidgetDirty() throws OseeCoreException {
- for (SMAWorkFlowSection section : sections) {
- Result result = section.isXWidgetDirty();
- if (result.isTrue()) {
- return result;
- }
- }
- return Result.FalseResult;
- }
-
- public Result isXWidgetSavable() {
- for (SMAWorkFlowSection section : sections) {
- Result result = section.isXWidgetSavable();
- if (result.isFalse()) {
- return result;
- }
- }
- return Result.TrueResult;
- }
-
- public void saveXWidgetToArtifact() throws OseeCoreException {
- List<IArtifactStoredWidget> artWidgets = new ArrayList<IArtifactStoredWidget>();
- // Collect all dirty widgets first (so same attribute shown on different sections don't colide
- for (SMAWorkFlowSection section : sections) {
- section.getDirtyIArtifactWidgets(artWidgets);
- }
- for (IArtifactStoredWidget widget : artWidgets) {
- widget.saveToArtifact();
- }
- }
-
- @Override
- public void dispose() {
- if (actionableItemHeader != null) {
- actionableItemHeader.dispose();
- }
- if (workflowMetricsHeader != null) {
- workflowMetricsHeader.dispose();
- }
- if (smaDetailsSection != null) {
- smaDetailsSection.dispose();
- }
- if (smaHistorySection != null) {
- smaHistorySection.dispose();
- }
- if (smaRelationsSection != null) {
- smaRelationsSection.dispose();
- }
- if (smaGoalMembersSection != null) {
- smaGoalMembersSection.dispose();
- }
- for (SMAWorkFlowSection section : sections) {
- section.dispose();
- }
-
- if (toolkit != null) {
- toolkit.dispose();
- }
- }
-
- @Override
- public String getActionDescription() {
- return "Workflow Tab";
- }
-
- private Control control = null;
-
- private void storeScrollLocation() {
- if (scrolledForm != null) {
- Integer selection = scrolledForm.getVerticalBar().getSelection();
- // System.out.println("Storing selection => " + selection);
- guidToScrollLocation.put(sma.getGuid(), selection);
- }
- }
-
- private class JumpScrollbarJob extends Job {
- public JumpScrollbarJob(String name) {
- super(name);
- }
-
- @Override
- protected IStatus run(IProgressMonitor monitor) {
- Displays.ensureInDisplayThread(new Runnable() {
- @Override
- public void run() {
- Integer selection = guidToScrollLocation.get(sma.getGuid());
- // System.out.println("Restoring selection => " + selection);
-
- // Find the ScrolledComposite operating on the control.
- ScrolledComposite sComp = null;
- if (control == null || control.isDisposed()) {
- return;
- }
- Composite parent = control.getParent();
- while (parent != null) {
- if (parent instanceof ScrolledComposite) {
- sComp = (ScrolledComposite) parent;
- break;
- }
- parent = parent.getParent();
- }
-
- if (sComp != null) {
- sComp.setOrigin(0, selection);
- }
- }
- });
- return Status.OK_STATUS;
-
- }
- }
-
- private void createCurrentStateAndTeamHeaders(Composite comp, XFormToolkit toolkit) {
- Composite topLineComp = new Composite(comp, SWT.NONE);
- topLineComp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- topLineComp.setLayout(ALayout.getZeroMarginLayout(3, false));
- toolkit.adapt(topLineComp);
-
- try {
- FormsUtil.createLabelText(toolkit, topLineComp, "Current State: ", sma.getStateMgr().getCurrentStateName());
- FormsUtil.createLabelText(toolkit, topLineComp, "Created: ",
- XDate.getDateStr(sma.getLog().getCreationDate(), XDate.MMDDYYHHMM));
- } catch (OseeCoreException ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
-
- new SMAOriginatorHeader(topLineComp, SWT.NONE, sma, toolkit);
-
- if (sma.isTeamWorkflow()) {
- FormsUtil.createLabelText(toolkit, topLineComp, "Team: ", ((TeamWorkFlowArtifact) sma).getTeamName());
- }
- FormsUtil.createLabelText(toolkit, topLineComp, sma.getArtifactSuperTypeName() + "Id: ", sma.getHumanReadableId());
-
- try {
- if (Strings.isValid(sma.getPcrId())) {
- FormsUtil.createLabelText(toolkit, topLineComp, " Id: ", sma.getPcrId());
- }
- } catch (OseeCoreException ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
- }
-
- private void createLatestHeader(Composite comp, XFormToolkit toolkit) {
- if (sma.isHistoricalVersion()) {
- Label label =
- toolkit.createLabel(
- comp,
- "This is a historical version of this " + sma.getArtifactTypeName() + " and can not be edited; Select \"Open Latest\" to view/edit latest version.");
- label.setForeground(Displays.getSystemColor(SWT.COLOR_RED));
- }
- }
-
- private void createAnnotationsHeader(Composite comp, XFormToolkit toolkit) {
- if (sma.getAnnotations().size() > 0) {
- new AnnotationComposite(toolkit, comp, SWT.None, sma);
- }
- }
-
- public static void createSMANotesHeader(Composite comp, XFormToolkit toolkit, StateMachineArtifact sma, int horizontalSpan) throws OseeCoreException {
- // Display SMA Note
+ // Don't put in operation cause doesn't have to be loaded before editor displays
+ OseeDictionary.load();
+ }
+ private final class ReloadJobChangeAdapter extends JobChangeAdapter {
+
+ private final IDirtiableEditor editor;
+
+ private ReloadJobChangeAdapter(IDirtiableEditor editor) {
+ this.editor = editor;
+ showBusy(true);
+ }
+
+ @Override
+ public void scheduled(IJobChangeEvent event) {
+ super.scheduled(event);
+ }
+
+ @Override
+ public void aboutToRun(IJobChangeEvent event) {
+ super.aboutToRun(event);
+ }
+
+ @Override
+ public void done(IJobChangeEvent event) {
+ super.done(event);
+ Job job = new UIJob("Draw Workflow Tab") {
+
+ @Override
+ public IStatus runInUIThread(IProgressMonitor monitor) {
+ try {
+ updateTitleBar();
+ refreshToolbar();
+ setLoading(false);
+ createAtsBody();
+ addMessageDecoration(scrolledForm);
+ FormsUtil.addHeadingGradient(toolkit, scrolledForm, true);
+ editor.onDirtied();
+ } catch (OseeCoreException ex) {
+ handleException(ex);
+ } finally {
+ showBusy(false);
+ }
+ return Status.OK_STATUS;
+ }
+ };
+ Operations.scheduleJob(job, false, Job.SHORT, null);
+ }
+ }
+
+ private void handleException(Exception ex) {
+ setLoading(false);
+ if (Widgets.isAccessible(atsBody)) {
+ atsBody.dispose();
+ }
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ new ExceptionComposite(bodyComp, ex);
+ bodyComp.layout();
+ }
+
+ private void setLoading(boolean set) {
+ if (set) {
+ loadingComposite = new LoadingComposite(bodyComp);
+ bodyComp.layout();
+ } else {
+ if (Widgets.isAccessible(loadingComposite)) {
+ loadingComposite.dispose();
+ }
+ }
+ showBusy(set);
+ }
+
+ private void createAtsBody() throws OseeCoreException {
+ if (Widgets.isAccessible(atsBody)) {
+ atsBody.dispose();
+ }
+ atsBody = toolkit.createComposite(bodyComp);
+ atsBody.setLayoutData(new GridData(GridData.FILL_BOTH));
+ atsBody.setLayout(new GridLayout(1, false));
+
+ createHeaderSection(sma.getCurrentAtsWorkPage());
+ createGoalSection();
+ createPageSections();
+ createHistorySection();
+ createRelationsSection();
+ createOperationsSection();
+ createDetailsSection();
+
+ atsBody.layout();
+ atsBody.setFocus();
+ // Jump to scroll location if set
+ Integer selection = guidToScrollLocation.get(sma.getGuid());
+ if (selection != null) {
+ JumpScrollbarJob job = new JumpScrollbarJob("");
+ job.schedule(500);
+ }
+
+ }
+
+ private void createDetailsSection() {
+ try {
+ smaDetailsSection = new SMADetailsSection(sma.getEditor(), atsBody, toolkit, SWT.NONE);
+ managedForm.addPart(smaDetailsSection);
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ }
+ }
+
+ private void createOperationsSection() {
+ try {
+ smaOperationsSection = new SMAOperationsSection(sma.getEditor(), atsBody, toolkit, SWT.NONE);
+ managedForm.addPart(smaOperationsSection);
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ }
+ }
+
+ private void createRelationsSection() {
+ try {
+ smaRelationsSection = new SMARelationsSection(sma.getEditor(), atsBody, toolkit, SWT.NONE);
+ managedForm.addPart(smaRelationsSection);
+
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ }
+ }
+
+ private void createHistorySection() {
+ try {
+ smaHistorySection = new SMAHistorySection(sma.getEditor(), atsBody, toolkit, SWT.NONE);
+ managedForm.addPart(smaHistorySection);
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ }
+ }
+
+ private void createGoalSection() {
+ try {
+ if (sma instanceof GoalArtifact) {
+ smaGoalMembersSection = new SMAGoalMembersSection(sma.getEditor(), atsBody, toolkit, SWT.NONE);
+ managedForm.addPart(smaGoalMembersSection);
+ }
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ }
+ }
+
+ private void createPageSections() {
+ try {
+ // Only display current or past states
+ for (AtsWorkPage atsWorkPage : sma.getAtsWorkPages()) {
+ try {
+ if (sma.isCurrentState(atsWorkPage.getName()) || sma.getStateMgr().isStateVisited(atsWorkPage.getName())) {
+ // Don't show completed or cancelled state if not currently those state
+ if (atsWorkPage.isCompletePage() && !sma.isCompleted()) {
+ continue;
+ }
+ if (atsWorkPage.isCancelledPage() && !sma.isCancelled()) {
+ continue;
+ }
+ SMAWorkFlowSection section = new SMAWorkFlowSection(atsBody, toolkit, SWT.NONE, atsWorkPage, sma);
+ managedForm.addPart(section);
+ control = section.getMainComp();
+ sections.add(section);
+ atsWorkPages.add(atsWorkPage);
+ }
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ }
+ }
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ }
+ }
+
+ private void createHeaderSection(AtsWorkPage currentAtsWorkPage) {
+ Composite headerComp = toolkit.createComposite(atsBody);
+ GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+ gd.widthHint = 100;
+ headerComp.setLayoutData(gd);
+ headerComp.setLayout(ALayout.getZeroMarginLayout(1, false));
+ // mainComp.setBackground(Displays.getSystemColor(SWT.COLOR_RED));
+
+ // Display relations
+ try {
+ createCurrentStateAndTeamHeaders(headerComp, toolkit);
+ createTargetVersionAndAssigneeHeader(headerComp, currentAtsWorkPage, toolkit);
+
+ createLatestHeader(headerComp, toolkit);
+ if (sma.isTeamWorkflow()) {
+ actionableItemHeader = new SMAActionableItemHeader(headerComp, toolkit, sma);
+ }
+ workflowMetricsHeader = new SMAWorkflowMetricsHeader(headerComp, toolkit, sma);
+ createSMANotesHeader(headerComp, toolkit, sma, HEADER_COMP_COLUMNS);
+ createStateNotesHeader(headerComp, toolkit, sma, HEADER_COMP_COLUMNS, null);
+ createAnnotationsHeader(headerComp, toolkit);
+
+ sections.clear();
+ atsWorkPages.clear();
+
+ if (SMARelationsHyperlinkComposite.relationExists(sma)) {
+ smaRelationsComposite = new SMARelationsHyperlinkComposite(atsBody, toolkit, SWT.NONE);
+ smaRelationsComposite.create(sma);
+ }
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ }
+ }
+
+ protected boolean isShowTargetedVersion() throws OseeCoreException {
+ return sma.isTargetedVersionable();
+ }
+
+ private void createTargetVersionAndAssigneeHeader(Composite parent, AtsWorkPage page, XFormToolkit toolkit) throws OseeCoreException {
+ boolean isShowTargetedVersion = isShowTargetedVersion();
+ boolean isCurrentNonCompleteCanceledState = page.isCurrentNonCompleteCancelledState(sma);
+ if (!isShowTargetedVersion && !isCurrentNonCompleteCanceledState) {
+ return;
+ }
+
+ Composite comp = toolkit.createContainer(parent, 6);
+ comp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ comp.setLayout(ALayout.getZeroMarginLayout(6, false));
+
+ // Targeted Version
+ if (isShowTargetedVersion) {
+ new SMATargetedVersionHeader(comp, SWT.NONE, sma, toolkit);
+ toolkit.createLabel(comp, " ");
+ }
+
+ // Create Privileged Edit label
+ if (sma.getEditor().isPriviledgedEditModeEnabled()) {
+ Label label = toolkit.createLabel(comp, PRIVILEGED_EDIT);
+ label.setForeground(Displays.getSystemColor(SWT.COLOR_RED));
+ label.setToolTipText("Priviledged Edit Mode is Enabled. Editing any field in any state is authorized. Select icon to disable");
+ }
+
+ // Current Assignees
+ if (isCurrentNonCompleteCanceledState) {
+ boolean editable = !sma.isCancelledOrCompleted() && !sma.isReadOnly() &&
+ // and access control writeable
+ sma.isAccessControlWrite() && //
+
+ (SMAWorkFlowSection.isEditable(sma, page) || //
+ // page is define to allow anyone to edit
+ sma.getWorkPageDefinition().hasWorkRule(AtsWorkDefinitions.RuleWorkItemId.atsAllowAssigneeToAll.name()) ||
+ // team definition has allowed anyone to edit
+ sma.teamDefHasWorkRule(AtsWorkDefinitions.RuleWorkItemId.atsAllowAssigneeToAll.name()));
+
+ new SMAAssigneesHeader(comp, SWT.NONE, sma, toolkit, editable);
+ }
+ }
+
+ private void addMessageDecoration(ScrolledForm form) {
+ form.getForm().addMessageHyperlinkListener(new HyperlinkAdapter() {
+
+ @Override
+ public void linkActivated(HyperlinkEvent e) {
+ String title = e.getLabel();
+ Object href = e.getHref();
+ if (href instanceof IMessage[]) {
+ Point noteLocation = ((Control) e.widget).toDisplay(0, 0);
+ noteLocation.x += 10;
+ noteLocation.y += 10;
+
+ MessageSummaryNote note = new MessageSummaryNote(getManagedForm(), title, (IMessage[]) href);
+ note.setLocation(noteLocation);
+ note.open();
+ }
+ }
+
+ });
+ }
+
+ private void refreshToolbar() throws OseeCoreException {
+ IToolBarManager toolBarMgr = scrolledForm.getToolBarManager();
+ toolBarMgr.removeAll();
+
+ if (sma.isTeamWorkflow() && (((TeamWorkFlowArtifact) sma).getBranchMgr().isCommittedBranchExists() || ((TeamWorkFlowArtifact) sma).getBranchMgr().isWorkingBranchInWork())) {
+ toolBarMgr.add(new ShowMergeManagerAction((TeamWorkFlowArtifact) sma));
+ toolBarMgr.add(new ShowChangeReportAction((TeamWorkFlowArtifact) sma));
+ }
+ toolBarMgr.add(new FavoriteAction(sma.getEditor()));
+ if (sma.getParentSMA() != null) {
+ toolBarMgr.add(new OpenParentAction(sma));
+ }
+ toolBarMgr.add(new EmailActionAction(sma.getEditor()));
+ toolBarMgr.add(new AddNoteAction(sma));
+ toolBarMgr.add(new OpenInAtsWorldAction(sma));
+ if (AtsUtil.isAtsAdmin()) {
+ toolBarMgr.add(new OpenInArtifactEditorAction(sma.getEditor()));
+ }
+ toolBarMgr.add(new OpenVersionArtifactAction(sma));
+ toolBarMgr.add(new OpenTeamDefinitionAction(sma));
+ toolBarMgr.add(new CopyActionDetailsAction(sma));
+ toolBarMgr.add(new PrivilegedEditAction(sma));
+ toolBarMgr.add(new ResourceHistoryAction(sma));
+ toolBarMgr.add(new ReloadAction(sma));
+
+ OseeUiActions.addButtonToEditorToolBar(sma.getEditor(), this, AtsPlugin.getInstance(),
+ scrolledForm.getToolBarManager(), SMAEditor.EDITOR_ID, "ATS Editor");
+
+ scrolledForm.updateToolBar();
+ }
+
+ public Result isXWidgetDirty() throws OseeCoreException {
+ for (SMAWorkFlowSection section : sections) {
+ Result result = section.isXWidgetDirty();
+ if (result.isTrue()) {
+ return result;
+ }
+ }
+ return Result.FalseResult;
+ }
+
+ public Result isXWidgetSavable() {
+ for (SMAWorkFlowSection section : sections) {
+ Result result = section.isXWidgetSavable();
+ if (result.isFalse()) {
+ return result;
+ }
+ }
+ return Result.TrueResult;
+ }
+
+ public void saveXWidgetToArtifact() throws OseeCoreException {
+ List<IArtifactStoredWidget> artWidgets = new ArrayList<IArtifactStoredWidget>();
+ // Collect all dirty widgets first (so same attribute shown on different sections don't colide
+ for (SMAWorkFlowSection section : sections) {
+ section.getDirtyIArtifactWidgets(artWidgets);
+ }
+ for (IArtifactStoredWidget widget : artWidgets) {
+ widget.saveToArtifact();
+ }
+ }
+
+ @Override
+ public void dispose() {
+ if (actionableItemHeader != null) {
+ actionableItemHeader.dispose();
+ }
+ if (workflowMetricsHeader != null) {
+ workflowMetricsHeader.dispose();
+ }
+ if (smaDetailsSection != null) {
+ smaDetailsSection.dispose();
+ }
+ if (smaHistorySection != null) {
+ smaHistorySection.dispose();
+ }
+ if (smaRelationsSection != null) {
+ smaRelationsSection.dispose();
+ }
+ if (smaGoalMembersSection != null) {
+ smaGoalMembersSection.dispose();
+ }
+ for (SMAWorkFlowSection section : sections) {
+ section.dispose();
+ }
+
+ if (toolkit != null) {
+ toolkit.dispose();
+ }
+ }
+
+ @Override
+ public String getActionDescription() {
+ return "Workflow Tab";
+ }
+
+ private Control control = null;
+
+ private void storeScrollLocation() {
+ if (scrolledForm != null) {
+ Integer selection = scrolledForm.getVerticalBar().getSelection();
+ // System.out.println("Storing selection => " + selection);
+ guidToScrollLocation.put(sma.getGuid(), selection);
+ }
+ }
+
+ private class JumpScrollbarJob extends Job {
+ public JumpScrollbarJob(String name) {
+ super(name);
+ }
+
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ Displays.ensureInDisplayThread(new Runnable() {
+ @Override
+ public void run() {
+ Integer selection = guidToScrollLocation.get(sma.getGuid());
+ // System.out.println("Restoring selection => " + selection);
+
+ // Find the ScrolledComposite operating on the control.
+ ScrolledComposite sComp = null;
+ if (control == null || control.isDisposed()) {
+ return;
+ }
+ Composite parent = control.getParent();
+ while (parent != null) {
+ if (parent instanceof ScrolledComposite) {
+ sComp = (ScrolledComposite) parent;
+ break;
+ }
+ parent = parent.getParent();
+ }
+
+ if (sComp != null) {
+ sComp.setOrigin(0, selection);
+ }
+ }
+ });
+ return Status.OK_STATUS;
+
+ }
+ }
+
+ private void createCurrentStateAndTeamHeaders(Composite comp, XFormToolkit toolkit) {
+ Composite topLineComp = new Composite(comp, SWT.NONE);
+ topLineComp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ topLineComp.setLayout(ALayout.getZeroMarginLayout(3, false));
+ toolkit.adapt(topLineComp);
+
+ try {
+ FormsUtil.createLabelText(toolkit, topLineComp, "Current State: ", sma.getStateMgr().getCurrentStateName());
+ FormsUtil.createLabelText(toolkit, topLineComp, "Created: ",
+ XDate.getDateStr(sma.getLog().getCreationDate(), XDate.MMDDYYHHMM));
+ } catch (OseeCoreException ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ }
+
+ new SMAOriginatorHeader(topLineComp, SWT.NONE, sma, toolkit);
+
+ if (sma.isTeamWorkflow()) {
+ FormsUtil.createLabelText(toolkit, topLineComp, "Team: ", ((TeamWorkFlowArtifact) sma).getTeamName());
+ }
+ FormsUtil.createLabelText(toolkit, topLineComp, sma.getArtifactSuperTypeName() + "Id: ", sma.getHumanReadableId());
+
+ try {
+ if (Strings.isValid(sma.getPcrId())) {
+ FormsUtil.createLabelText(toolkit, topLineComp, " Id: ", sma.getPcrId());
+ }
+ } catch (OseeCoreException ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ }
+ }
+
+ private void createLatestHeader(Composite comp, XFormToolkit toolkit) {
+ if (sma.isHistoricalVersion()) {
+ Label label =
+ toolkit.createLabel(
+ comp,
+ "This is a historical version of this " + sma.getArtifactTypeName() + " and can not be edited; Select \"Open Latest\" to view/edit latest version.");
+ label.setForeground(Displays.getSystemColor(SWT.COLOR_RED));
+ }
+ }
+
+ private void createAnnotationsHeader(Composite comp, XFormToolkit toolkit) {
+ if (sma.getAnnotations().size() > 0) {
+ new AnnotationComposite(toolkit, comp, SWT.None, sma);
+ }
+ }
+
+ public static void createSMANotesHeader(Composite comp, XFormToolkit toolkit, StateMachineArtifact sma, int horizontalSpan) throws OseeCoreException {
+ // Display SMA Note
String note = sma.getSoleAttributeValue(AtsAttributeTypes.SmaNote, "");
- if (!note.equals("")) {
- FormsUtil.createLabelOrHyperlink(comp, toolkit, horizontalSpan, "Note: " + note);
- }
- }
-
- public static void createStateNotesHeader(Composite comp, XFormToolkit toolkit, StateMachineArtifact sma, int horizontalSpan, String forStateName) {
- // Display global Notes
- for (NoteItem noteItem : sma.getNotes().getNoteItems()) {
- if (forStateName == null || noteItem.getState().equals(forStateName)) {
- FormsUtil.createLabelOrHyperlink(comp, toolkit, horizontalSpan, noteItem.toString());
- }
- }
- }
-
- public void refresh() {
- if (sma.getEditor() != null && !sma.isInTransition()) {
- // remove all pages
- for (SMAWorkFlowSection section : sections) {
- section.dispose();
- }
- // add pages back
- refreshData();
- }
- }
-
- public List<AtsWorkPage> getPages() {
- return atsWorkPages;
- }
-
- public List<SMAWorkFlowSection> getSections() {
- return sections;
- }
-
- public SMAWorkFlowSection getSectionForCurrentState() {
- return null;
- }
+ if (!note.equals("")) {
+ FormsUtil.createLabelOrHyperlink(comp, toolkit, horizontalSpan, "Note: " + note);
+ }
+ }
+
+ public static void createStateNotesHeader(Composite comp, XFormToolkit toolkit, StateMachineArtifact sma, int horizontalSpan, String forStateName) {
+ // Display global Notes
+ for (NoteItem noteItem : sma.getNotes().getNoteItems()) {
+ if (forStateName == null || noteItem.getState().equals(forStateName)) {
+ FormsUtil.createLabelOrHyperlink(comp, toolkit, horizontalSpan, noteItem.toString());
+ }
+ }
+ }
+
+ public void refresh() {
+ if (sma.getEditor() != null && !sma.isInTransition()) {
+ // remove all pages
+ for (SMAWorkFlowSection section : sections) {
+ section.dispose();
+ }
+ // add pages back
+ refreshData();
+ }
+ }
+
+ public List<AtsWorkPage> getPages() {
+ return atsWorkPages;
+ }
+
+ public List<SMAWorkFlowSection> getSections() {
+ return sections;
+ }
+
+ public SMAWorkFlowSection getSectionForCurrentState() {
+ return null;
+ }
} \ No newline at end of file
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 7d1b95cf0cb..4abc6634782 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
@@ -1,96 +1,96 @@
-/*******************************************************************************
- * 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.editor;
-
-import java.util.logging.Level;
-import org.eclipse.osee.ats.artifact.StateMachineArtifact;
-import org.eclipse.osee.ats.internal.AtsPlugin;
-import org.eclipse.osee.ats.util.AtsUtil;
-import org.eclipse.osee.ats.world.WorldXViewerFactory;
-import org.eclipse.osee.framework.logging.OseeLog;
-import org.eclipse.osee.framework.ui.plugin.util.Result;
-import org.eclipse.osee.framework.ui.skynet.XFormToolkit;
-import org.eclipse.osee.framework.ui.skynet.util.FormsUtil;
-import org.eclipse.osee.framework.ui.swt.ALayout;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Label;
-
-/**
- * <REM2> handled through SMAEditorEventManager
- *
- * @author Donald G. Dunne
- */
-public class SMAWorkflowMetricsHeader extends Composite {
-
- private final StateMachineArtifact sma;
- private Label percentLabel, estHoursLabel, hoursSpentLabel, remainHoursLabel;
-
- public SMAWorkflowMetricsHeader(Composite parent, XFormToolkit toolkit, StateMachineArtifact sma) {
- super(parent, SWT.NONE);
- this.sma = sma;
- try {
-
- toolkit.adapt(this);
- setLayout(ALayout.getZeroMarginLayout(8, 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");
- hoursSpentLabel =
- FormsUtil.createLabelValue(toolkit, this, "Total Hours Spent: ", "",
- "Calculation: sum of all hours spent for all tasks, reviews and in each state");
- remainHoursLabel =
- FormsUtil.createLabelValue(toolkit, this, "Remaining Hours: ", "",
- WorldXViewerFactory.Remaining_Hours_Col.getDescription());
-
- refresh();
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
- }
-
- private void refresh() {
- if (percentLabel.isDisposed()) {
- return;
- }
- try {
- if (!percentLabel.isDisposed()) {
- percentLabel.setText(String.valueOf(sma.getPercentCompleteSMATotal()));
- }
- if (estHoursLabel != null && !estHoursLabel.isDisposed()) {
- estHoursLabel.setText(String.valueOf(AtsUtil.doubleToI18nString(sma.getEstimatedHoursTotal())));
- }
- if (hoursSpentLabel != null && !hoursSpentLabel.isDisposed()) {
- hoursSpentLabel.setText(String.valueOf(AtsUtil.doubleToI18nString(sma.getHoursSpentSMATotal())));
- }
- if (hoursSpentLabel != null && !hoursSpentLabel.isDisposed()) {
- Result result = sma.isWorldViewRemainHoursValid();
- if (result.isFalse()) {
- remainHoursLabel.setText("Error" + result.getText());
- } else {
- remainHoursLabel.setText(String.valueOf(AtsUtil.doubleToI18nString(sma.getWorldViewRemainHours())));
- }
- }
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
-
- percentLabel.update();
- layout();
- }
-
-}
+/*******************************************************************************
+ * 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.editor;
+
+import java.util.logging.Level;
+import org.eclipse.osee.ats.artifact.StateMachineArtifact;
+import org.eclipse.osee.ats.internal.AtsPlugin;
+import org.eclipse.osee.ats.util.AtsUtil;
+import org.eclipse.osee.ats.world.WorldXViewerFactory;
+import org.eclipse.osee.framework.logging.OseeLog;
+import org.eclipse.osee.framework.ui.plugin.util.Result;
+import org.eclipse.osee.framework.ui.skynet.XFormToolkit;
+import org.eclipse.osee.framework.ui.skynet.util.FormsUtil;
+import org.eclipse.osee.framework.ui.swt.ALayout;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+
+/**
+ * <REM2> handled through SMAEditorEventManager
+ *
+ * @author Donald G. Dunne
+ */
+public class SMAWorkflowMetricsHeader extends Composite {
+
+ private final StateMachineArtifact sma;
+ private Label percentLabel, estHoursLabel, hoursSpentLabel, remainHoursLabel;
+
+ public SMAWorkflowMetricsHeader(Composite parent, XFormToolkit toolkit, StateMachineArtifact sma) {
+ super(parent, SWT.NONE);
+ this.sma = sma;
+ try {
+
+ toolkit.adapt(this);
+ setLayout(ALayout.getZeroMarginLayout(8, 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");
+ hoursSpentLabel =
+ FormsUtil.createLabelValue(toolkit, this, "Total Hours Spent: ", "",
+ "Calculation: sum of all hours spent for all tasks, reviews and in each state");
+ remainHoursLabel =
+ FormsUtil.createLabelValue(toolkit, this, "Remaining Hours: ", "",
+ WorldXViewerFactory.Remaining_Hours_Col.getDescription());
+
+ refresh();
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ }
+ }
+
+ private void refresh() {
+ if (percentLabel.isDisposed()) {
+ return;
+ }
+ try {
+ if (!percentLabel.isDisposed()) {
+ percentLabel.setText(String.valueOf(sma.getPercentCompleteSMATotal()));
+ }
+ if (estHoursLabel != null && !estHoursLabel.isDisposed()) {
+ estHoursLabel.setText(String.valueOf(AtsUtil.doubleToI18nString(sma.getEstimatedHoursTotal())));
+ }
+ if (hoursSpentLabel != null && !hoursSpentLabel.isDisposed()) {
+ hoursSpentLabel.setText(String.valueOf(AtsUtil.doubleToI18nString(sma.getHoursSpentSMATotal())));
+ }
+ if (hoursSpentLabel != null && !hoursSpentLabel.isDisposed()) {
+ Result result = sma.isWorldViewRemainHoursValid();
+ if (result.isFalse()) {
+ remainHoursLabel.setText("Error" + result.getText());
+ } else {
+ remainHoursLabel.setText(String.valueOf(AtsUtil.doubleToI18nString(sma.getWorldViewRemainHours())));
+ }
+ }
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ }
+
+ 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 3596ad42995..4a7f1067290 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
@@ -1,107 +1,107 @@
-/*******************************************************************************
- * 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.editor.stateItem;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import org.eclipse.osee.ats.artifact.AtsAttributeTypes;
-import org.eclipse.osee.ats.artifact.DecisionReviewArtifact;
-import org.eclipse.osee.ats.artifact.StateMachineArtifact;
-import org.eclipse.osee.ats.editor.SMAWorkFlowSection;
-import org.eclipse.osee.ats.util.widgets.DecisionOption;
-import org.eclipse.osee.ats.util.widgets.XDecisionOptions;
-import org.eclipse.osee.ats.workflow.AtsWorkPage;
-import org.eclipse.osee.framework.core.exception.OseeCoreException;
-import org.eclipse.osee.framework.core.exception.OseeStateException;
-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.XComboDam;
-import org.eclipse.osee.framework.ui.skynet.widgets.XModifiedListener;
-import org.eclipse.osee.framework.ui.skynet.widgets.XWidget;
-import org.eclipse.ui.forms.widgets.FormToolkit;
-
-/**
- * @author Donald G. Dunne
- */
-public class AtsDecisionReviewDecisionStateItem extends AtsStateItem {
-
- @Override
- public String getId() {
- return "osee.ats.decisionReview.Decision";
- }
-
- @Override
- public Result xWidgetCreating(XWidget xWidget, FormToolkit toolkit, AtsWorkPage 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 StateMachineArtifact)) {
- throw new OseeCoreException(
- "AtsDecisionReviewDecisionStateItem.xWidgetCreating expected a StateMachineArtifact");
- }
+/*******************************************************************************
+ * 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.editor.stateItem;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import org.eclipse.osee.ats.artifact.AtsAttributeTypes;
+import org.eclipse.osee.ats.artifact.DecisionReviewArtifact;
+import org.eclipse.osee.ats.artifact.StateMachineArtifact;
+import org.eclipse.osee.ats.editor.SMAWorkFlowSection;
+import org.eclipse.osee.ats.util.widgets.DecisionOption;
+import org.eclipse.osee.ats.util.widgets.XDecisionOptions;
+import org.eclipse.osee.ats.workflow.AtsWorkPage;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.core.exception.OseeStateException;
+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.XComboDam;
+import org.eclipse.osee.framework.ui.skynet.widgets.XModifiedListener;
+import org.eclipse.osee.framework.ui.skynet.widgets.XWidget;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class AtsDecisionReviewDecisionStateItem extends AtsStateItem {
+
+ @Override
+ public String getId() {
+ return "osee.ats.decisionReview.Decision";
+ }
+
+ @Override
+ public Result xWidgetCreating(XWidget xWidget, FormToolkit toolkit, AtsWorkPage 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 StateMachineArtifact)) {
+ throw new OseeCoreException(
+ "AtsDecisionReviewDecisionStateItem.xWidgetCreating expected a StateMachineArtifact");
+ }
if (xWidget.getLabel().equals(AtsAttributeTypes.Decision.getUnqualifiedName())) {
- XComboDam decisionComboDam = (XComboDam) xWidget;
- List<String> options = new ArrayList<String>();
- XDecisionOptions xDecOptions = new XDecisionOptions((StateMachineArtifact) art);
- for (DecisionOption opt : xDecOptions.getDecisionOptions()) {
- options.add(opt.getName());
- }
- decisionComboDam.setDataStrings(options.toArray(new String[options.size()]));
- }
- return Result.TrueResult;
- }
-
- @Override
- public String getOverrideTransitionToStateName(SMAWorkFlowSection section) throws OseeCoreException {
- DecisionOption decisionOption = getDecisionOption(section);
- if (decisionOption == null) {
- return null;
- }
- boolean followUpRequired = decisionOption.isFollowupRequired();
- if (section.getTransitionToStateCombo() == null || section.getTransitionToStateCombo().getSelected() == null) {
- return null;
- }
- if (followUpRequired) {
- return DecisionReviewArtifact.DecisionReviewState.Followup.name();
- } else {
- return DecisionReviewArtifact.DecisionReviewState.Completed.name();
- }
- }
-
- @Override
- public Collection<User> getOverrideTransitionToAssignees(SMAWorkFlowSection section) throws OseeCoreException {
- DecisionOption decisionOption = getDecisionOption(section);
- if (decisionOption == null) {
- return null;
- }
- return decisionOption.getAssignees();
- }
-
- private DecisionOption getDecisionOption(SMAWorkFlowSection section) throws OseeCoreException {
+ XComboDam decisionComboDam = (XComboDam) xWidget;
+ List<String> options = new ArrayList<String>();
+ XDecisionOptions xDecOptions = new XDecisionOptions((StateMachineArtifact) art);
+ for (DecisionOption opt : xDecOptions.getDecisionOptions()) {
+ options.add(opt.getName());
+ }
+ decisionComboDam.setDataStrings(options.toArray(new String[options.size()]));
+ }
+ return Result.TrueResult;
+ }
+
+ @Override
+ public String getOverrideTransitionToStateName(SMAWorkFlowSection section) throws OseeCoreException {
+ DecisionOption decisionOption = getDecisionOption(section);
+ if (decisionOption == null) {
+ return null;
+ }
+ boolean followUpRequired = decisionOption.isFollowupRequired();
+ if (section.getTransitionToStateCombo() == null || section.getTransitionToStateCombo().getSelected() == null) {
+ return null;
+ }
+ if (followUpRequired) {
+ return DecisionReviewArtifact.DecisionReviewState.Followup.name();
+ } else {
+ return DecisionReviewArtifact.DecisionReviewState.Completed.name();
+ }
+ }
+
+ @Override
+ public Collection<User> getOverrideTransitionToAssignees(SMAWorkFlowSection section) throws OseeCoreException {
+ DecisionOption decisionOption = getDecisionOption(section);
+ 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;
- String decision = decisionComboDam.get();
- if (decision.equals("")) {
- return null;
- }
- DecisionReviewArtifact decArt = (DecisionReviewArtifact) section.getSma();
- DecisionOption decisionOption = decArt.decisionOptions.getDecisionOption(decision);
- return decisionOption;
- }
-
- @Override
- public String getDescription() {
- return "AtsDecisionReviewDecisionStateItem - Add decision options to review state based on prepare state's entries.";
- }
-
-}
+ XComboDam decisionComboDam = (XComboDam) xWidget;
+ String decision = decisionComboDam.get();
+ if (decision.equals("")) {
+ return null;
+ }
+ DecisionReviewArtifact decArt = (DecisionReviewArtifact) section.getSma();
+ DecisionOption decisionOption = decArt.decisionOptions.getDecisionOption(decision);
+ return decisionOption;
+ }
+
+ @Override
+ public String getDescription() {
+ return "AtsDecisionReviewDecisionStateItem - Add decision options to review state based on prepare state's entries.";
+ }
+
+}
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 3d1bbbf1953..bf9eddc12e0 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
@@ -1,45 +1,45 @@
-/*******************************************************************************
- * 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.editor.stateItem;
-
-import java.util.Collection;
-import org.eclipse.osee.ats.artifact.DecisionReviewArtifact;
-import org.eclipse.osee.ats.artifact.StateMachineArtifact;
-import org.eclipse.osee.ats.util.widgets.XDecisionOptions;
-import org.eclipse.osee.framework.core.exception.OseeCoreException;
-import org.eclipse.osee.framework.skynet.core.User;
-import org.eclipse.osee.framework.ui.plugin.util.Result;
-
-/**
- * @author Donald G. Dunne
- */
-public class AtsDecisionReviewPrepareStateItem extends AtsStateItem {
-
- @Override
- public String getId() {
- return "osee.ats.decisionReview.Prepare";
- }
-
- @Override
- public Result transitioning(StateMachineArtifact sma, String fromState, String toState, Collection<User> toAssignees) throws OseeCoreException {
- if (fromState.equals(DecisionReviewArtifact.DecisionReviewState.Prepare.name()) && toState.equals(DecisionReviewArtifact.DecisionReviewState.Decision.name())) {
- XDecisionOptions decOptions = new XDecisionOptions(sma);
- return decOptions.validateDecisionOptions();
- }
- return Result.TrueResult;
- }
-
- @Override
- public String getDescription() {
- return "AtsDecisionReviewPrepareStateItem - Add validation of decision options prior to transitioning.";
- }
-
-}
+/*******************************************************************************
+ * 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.editor.stateItem;
+
+import java.util.Collection;
+import org.eclipse.osee.ats.artifact.DecisionReviewArtifact;
+import org.eclipse.osee.ats.artifact.StateMachineArtifact;
+import org.eclipse.osee.ats.util.widgets.XDecisionOptions;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.skynet.core.User;
+import org.eclipse.osee.framework.ui.plugin.util.Result;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class AtsDecisionReviewPrepareStateItem extends AtsStateItem {
+
+ @Override
+ public String getId() {
+ return "osee.ats.decisionReview.Prepare";
+ }
+
+ @Override
+ public Result transitioning(StateMachineArtifact sma, String fromState, String toState, Collection<User> toAssignees) throws OseeCoreException {
+ if (fromState.equals(DecisionReviewArtifact.DecisionReviewState.Prepare.name()) && toState.equals(DecisionReviewArtifact.DecisionReviewState.Decision.name())) {
+ XDecisionOptions decOptions = new XDecisionOptions(sma);
+ return decOptions.validateDecisionOptions();
+ }
+ 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/AtsLogWorkPage.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/stateItem/AtsLogWorkPage.java
index 425292c127a..010f843401e 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/stateItem/AtsLogWorkPage.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/stateItem/AtsLogWorkPage.java
@@ -23,20 +23,12 @@ public class AtsLogWorkPage extends AtsWorkPage {
public static class EmptyWorkFlowDefinition extends WorkFlowDefinition {
- /**
- * @param name
- * @param id
- * @param parentId
- */
public EmptyWorkFlowDefinition(String name, String id) {
super(name, id, null);
}
}
- /**
- * @param title
- */
public AtsLogWorkPage(String title) {
super(new EmptyWorkFlowDefinition(title, PAGE_ID), new WorkPageDefinition(title, PAGE_ID, null), null, null);
}
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 18916e558bd..72175372bdc 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
@@ -50,10 +50,6 @@ public interface IAtsStateItem {
public Collection<String> getIds() throws OseeCoreException;
/**
- * @param sma
- * @param fromState
- * @param toState
- * @param toAssignees
* @return Result of operation. If Result.isFalse(), transition will not continue and Result.popup will occur.
* @throws Exception
*/
@@ -62,7 +58,6 @@ public interface IAtsStateItem {
public void transitioned(StateMachineArtifact sma, String fromState, String toState, Collection<User> toAssignees, SkynetTransaction transaction) throws OseeCoreException;
/**
- * @param sma
* @return Result of operation. If Result.isFalse(), commit will not continue and Result.popup will occur.
* @throws Exception
*/
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/widget/EstimatedHoursXWidget.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/widget/EstimatedHoursXWidget.java
index 1d5c5c93ee8..654693b9c07 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/widget/EstimatedHoursXWidget.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/widget/EstimatedHoursXWidget.java
@@ -1,41 +1,41 @@
-/*******************************************************************************
- * 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.editor.widget;
-
-import java.util.logging.Level;
-import org.eclipse.osee.ats.artifact.AtsAttributeTypes;
-import org.eclipse.osee.ats.artifact.StateMachineArtifact;
-import org.eclipse.osee.ats.internal.AtsPlugin;
-import org.eclipse.osee.framework.core.exception.OseeCoreException;
-import org.eclipse.osee.framework.logging.OseeLog;
-import org.eclipse.osee.framework.ui.skynet.widgets.XFloatDam;
-import org.eclipse.osee.framework.ui.skynet.widgets.XModifiedListener;
-import org.eclipse.swt.widgets.Composite;
-
-/**
- * @author Donald G. Dunne
- */
-public class EstimatedHoursXWidget extends XFloatDam {
-
- public EstimatedHoursXWidget(StateMachineArtifact sma, Composite composite, int horizontalSpan, XModifiedListener xModListener) {
+/*******************************************************************************
+ * 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.editor.widget;
+
+import java.util.logging.Level;
+import org.eclipse.osee.ats.artifact.AtsAttributeTypes;
+import org.eclipse.osee.ats.artifact.StateMachineArtifact;
+import org.eclipse.osee.ats.internal.AtsPlugin;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.logging.OseeLog;
+import org.eclipse.osee.framework.ui.skynet.widgets.XFloatDam;
+import org.eclipse.osee.framework.ui.skynet.widgets.XModifiedListener;
+import org.eclipse.swt.widgets.Composite;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class EstimatedHoursXWidget extends XFloatDam {
+
+ public EstimatedHoursXWidget(StateMachineArtifact sma, Composite composite, int horizontalSpan, XModifiedListener xModListener) {
super(AtsAttributeTypes.EstimatedHours.getUnqualifiedName());
- try {
- if (xModListener != null) {
- addXModifiedListener(xModListener);
- }
+ try {
+ if (xModListener != null) {
+ addXModifiedListener(xModListener);
+ }
setAttributeType(sma, AtsAttributeTypes.EstimatedHours);
- setFillHorizontally(true);
- createWidgets(composite, horizontalSpan);
- } catch (OseeCoreException ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
- }
+ setFillHorizontally(true);
+ createWidgets(composite, horizontalSpan);
+ } catch (OseeCoreException ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ }
+ }
} \ No newline at end of file
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/widget/ReviewInfoXWidget.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/widget/ReviewInfoXWidget.java
index f074d7a0082..ee504e63729 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/widget/ReviewInfoXWidget.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/widget/ReviewInfoXWidget.java
@@ -1,310 +1,312 @@
-/*******************************************************************************
- * 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.editor.widget;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.logging.Level;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.jface.dialogs.IMessageProvider;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.osee.ats.actions.NewDecisionReviewJob;
-import org.eclipse.osee.ats.actions.NewPeerToPeerReviewJob;
-import org.eclipse.osee.ats.artifact.PeerToPeerReviewArtifact;
-import org.eclipse.osee.ats.artifact.ReviewSMArtifact;
-import org.eclipse.osee.ats.artifact.StateMachineArtifact.TransitionOption;
-import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact;
-import org.eclipse.osee.ats.editor.SMAEditor;
-import org.eclipse.osee.ats.internal.AtsPlugin;
-import org.eclipse.osee.ats.util.AtsUtil;
-import org.eclipse.osee.ats.util.Overview;
-import org.eclipse.osee.ats.util.widgets.ReviewManager;
-import org.eclipse.osee.ats.util.widgets.dialog.StateListAndTitleDialog;
-import org.eclipse.osee.framework.core.exception.OseeCoreException;
-import org.eclipse.osee.framework.jdk.core.util.AHTML;
-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.skynet.core.UserManager;
-import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction;
-import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
-import org.eclipse.osee.framework.ui.plugin.util.Result;
-import org.eclipse.osee.framework.ui.skynet.XFormToolkit;
-import org.eclipse.osee.framework.ui.skynet.widgets.XLabelValueBase;
-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.Event;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.ui.forms.IManagedForm;
-import org.eclipse.ui.forms.IMessageManager;
-import org.eclipse.ui.forms.events.HyperlinkEvent;
-import org.eclipse.ui.forms.events.IHyperlinkListener;
-import org.eclipse.ui.forms.widgets.Hyperlink;
-
-/**
- * <REM2> handled through SMAEditorEventManager
- *
- * @author Donald G. Dunne
- */
-public class ReviewInfoXWidget extends XLabelValueBase {
-
- private final String forStateName;
- private final ArrayList<Label> labelWidgets = new ArrayList<Label>();
- private Composite destroyableComposite = null;
- private final Composite composite;
- private final IManagedForm managedForm;
- private final int horizontalSpan;
- private final XFormToolkit toolkit;
- private final TeamWorkFlowArtifact teamArt;
-
- public ReviewInfoXWidget(IManagedForm managedForm, XFormToolkit toolkit, final TeamWorkFlowArtifact teamArt, final String forStateName, Composite composite, int horizontalSpan) {
- super("\"" + forStateName + "\" State Reviews");
- this.managedForm = managedForm;
- this.toolkit = toolkit;
- this.teamArt = teamArt;
- this.forStateName = forStateName;
- this.composite = composite;
- this.horizontalSpan = horizontalSpan;
- reDisplay();
- }
-
- public void reDisplay() {
- if (composite != null && composite.isDisposed()) {
- return;
- }
- if (destroyableComposite != null) {
- destroyableComposite.dispose();
- }
- destroyableComposite = new Composite(composite, SWT.None);
- destroyableComposite.setLayout(ALayout.getZeroMarginLayout(4, false));
-
- setToolTip("Blocking Reviews must be completed before transtion. Select Review hyperlink to view.");
- createWidgets(managedForm, destroyableComposite, horizontalSpan);
-
- try {
- addAdminRightClickOption();
- Collection<ReviewSMArtifact> revArts = ReviewManager.getReviews(teamArt, forStateName);
- if (revArts.isEmpty()) {
- setValueText("No Reviews Created");
- }
-
- Hyperlink link = toolkit.createHyperlink(destroyableComposite, "[Add Decision Review]", 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 {
- StateListAndTitleDialog dialog =
- new StateListAndTitleDialog("Create Decision Review",
- "Select state to that review will be associated with.",
- teamArt.getWorkFlowDefinition().getPageNames());
- dialog.setInitialSelections(new Object[] {forStateName});
- if (dialog.open() == 0) {
- if (!Strings.isValid(dialog.getReviewTitle())) {
- AWorkbench.popup("ERROR", "Must enter review title");
- return;
- }
- NewDecisionReviewJob job =
- new NewDecisionReviewJob(teamArt, null, dialog.getReviewTitle(), dialog.getSelectedState(),
- null, ReviewManager.getDefaultDecisionReviewOptions(), null);
- job.setUser(true);
- job.setPriority(Job.LONG);
- job.schedule();
- }
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
- }
- });
-
- link = toolkit.createHyperlink(destroyableComposite, "[Add Peer to Peer Review]", 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 {
- StateListAndTitleDialog dialog =
- new StateListAndTitleDialog("Add Peer to Peer Review",
- "Select state to that review will be associated with.",
- teamArt.getWorkFlowDefinition().getPageNames());
- dialog.setInitialSelections(new Object[] {forStateName});
- dialog.setReviewTitle(PeerToPeerReviewArtifact.getDefaultReviewTitle(teamArt));
- if (dialog.open() == 0) {
- if (!Strings.isValid(dialog.getReviewTitle())) {
- AWorkbench.popup("ERROR", "Must enter review title");
- return;
- }
- NewPeerToPeerReviewJob job =
- new NewPeerToPeerReviewJob(teamArt, dialog.getReviewTitle(), dialog.getSelectedState());
- job.setUser(true);
- job.setPriority(Job.LONG);
- job.schedule();
- }
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
- }
- }
- });
- if (revArts.size() > 0) {
- Composite workComp = toolkit.createContainer(destroyableComposite, 1);
- workComp.setLayoutData(new GridData(GridData.FILL_BOTH | GridData.VERTICAL_ALIGN_BEGINNING));
- GridData gd = new GridData();
- gd.horizontalIndent = 20;
- gd.horizontalSpan = 4;
- workComp.setLayoutData(gd);
-
- for (ReviewSMArtifact revArt : revArts) {
- createReviewHyperlink(workComp, managedForm, toolkit, 2, revArt, forStateName);
- }
- }
-
- } catch (OseeCoreException ex) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
- }
- }
-
- @Override
- public String toString() {
- try {
- return "ReviewInfoXWidget for SMA \"" + teamArt + "\"";
- } catch (Exception ex) {
- return "ReviewInfoXWidget " + ex.getLocalizedMessage();
- }
- }
-
- public static String toHTML(final TeamWorkFlowArtifact teamArt, String forStateName) throws OseeCoreException {
- if (ReviewManager.getReviews(teamArt, forStateName).isEmpty()) {
- return "";
- }
- StringBuffer html = new StringBuffer();
- try {
- html.append(AHTML.addSpace(1) + AHTML.getLabelStr(AHTML.LABEL_FONT, "\"" + forStateName + "\" State Reviews"));
- html.append(AHTML.startBorderTable(100, Overview.normalColor, ""));
- html.append(AHTML.addHeaderRowMultiColumnTable(new String[] {"Review Type", "Title", "ID"}));
- for (ReviewSMArtifact art : ReviewManager.getReviews(teamArt, forStateName)) {
- html.append(AHTML.addRowMultiColumnTable(new String[] {art.getArtifactTypeName(), art.getName(),
- art.getHumanReadableId()}));
- }
- html.append(AHTML.endBorderTable());
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- return "Review Exception - " + ex.getLocalizedMessage();
- }
- return html.toString();
- }
-
- public String toHTML() throws OseeCoreException {
- return ReviewInfoXWidget.toHTML(teamArt, forStateName);
- }
-
- private void createReviewHyperlink(Composite comp, IManagedForm managedForm, XFormToolkit toolkit, final int horizontalSpan, final ReviewSMArtifact revArt, String forStateName) throws OseeCoreException {
-
- Composite workComp = toolkit.createContainer(comp, 1);
- workComp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING));
- workComp.setLayout(ALayout.getZeroMarginLayout(3, false));
-
- Label strLabel = new Label(workComp, SWT.NONE);
- labelWidgets.add(strLabel);
- if (revArt.isBlocking() && !revArt.isCancelledOrCompleted()) {
- strLabel.setText("State Blocking [" + revArt.getArtifactTypeName() + "] must be completed: ");
- IMessageManager messageManager = managedForm.getMessageManager();
- if (messageManager != null) {
- messageManager.addMessage(
- "validation.error",
- "\"" + forStateName + "\" State has a blocking [" + revArt.getArtifactTypeName() + "] that must be completed.",
- null, IMessageProvider.ERROR, strLabel);
- }
- } else if (!revArt.isCancelledOrCompleted()) {
- strLabel.setText("Open [" + revArt.getArtifactTypeName() + "] exists: ");
- IMessageManager messageManager = managedForm.getMessageManager();
- if (messageManager != null) {
- messageManager.addMessage("validation.error",
- "\"" + forStateName + "\" State has an open [" + revArt.getArtifactTypeName() + "].", null,
- IMessageProvider.WARNING, strLabel);
- }
- } else {
- strLabel.setText(revArt.getStateMgr().getCurrentStateName() + " [" + revArt.getArtifactTypeName() + "] exists: ");
- }
-
- String str = "[" + revArt.getName() + "]";
- Hyperlink hyperLabel =
- toolkit.createHyperlink(workComp, (str.length() > 300 ? Strings.truncate(str, 300) + "..." : str), SWT.NONE);
- hyperLabel.setToolTipText("Select to open review");
- hyperLabel.addListener(SWT.MouseUp, new Listener() {
- @Override
- public void handleEvent(Event event) {
- SMAEditor.editArtifact(revArt);
- }
- });
- }
-
- public void addAdminRightClickOption() throws OseeCoreException {
- // If ATS Admin, allow right-click to auto-complete tasks
- if (AtsUtil.isAtsAdmin() && !AtsUtil.isProductionDb()) {
- labelWidget.addListener(SWT.MouseUp, new Listener() {
- @Override
- public void handleEvent(Event event) {
- if (event.button == 3) {
- if (!MessageDialog.openConfirm(Displays.getActiveShell(), "Auto Complete Reviews",
- "ATS Admin\n\nAuto Complete Reviews?")) {
- return;
- }
- try {
- SkynetTransaction transaction =
- new SkynetTransaction(AtsUtil.getAtsBranch(), "ATS Auto Complete Reviews");
- for (ReviewSMArtifact revArt : ReviewManager.getReviewsFromCurrentState(teamArt)) {
- if (!revArt.isCancelledOrCompleted()) {
- if (revArt.getStateMgr().isUnAssigned()) {
- revArt.getStateMgr().setAssignee(UserManager.getUser());
- }
- Result result =
- revArt.transitionToCompleted("", transaction,
- TransitionOption.OverrideTransitionValidityCheck, TransitionOption.Persist);
- if (result.isFalse()) {
- result.popup();
- return;
- }
- }
- }
- transaction.execute();
- } catch (OseeCoreException ex) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
- }
- }
- }
- });
- }
- }
-}
+/*******************************************************************************
+ * 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.editor.widget;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.logging.Level;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.jface.dialogs.IMessageProvider;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.osee.ats.actions.NewDecisionReviewJob;
+import org.eclipse.osee.ats.actions.NewPeerToPeerReviewJob;
+import org.eclipse.osee.ats.artifact.PeerToPeerReviewArtifact;
+import org.eclipse.osee.ats.artifact.ReviewSMArtifact;
+import org.eclipse.osee.ats.artifact.StateMachineArtifact.TransitionOption;
+import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact;
+import org.eclipse.osee.ats.editor.SMAEditor;
+import org.eclipse.osee.ats.internal.AtsPlugin;
+import org.eclipse.osee.ats.util.AtsUtil;
+import org.eclipse.osee.ats.util.Overview;
+import org.eclipse.osee.ats.util.widgets.ReviewManager;
+import org.eclipse.osee.ats.util.widgets.dialog.StateListAndTitleDialog;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.jdk.core.util.AHTML;
+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.skynet.core.UserManager;
+import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
+import org.eclipse.osee.framework.ui.plugin.util.Result;
+import org.eclipse.osee.framework.ui.skynet.XFormToolkit;
+import org.eclipse.osee.framework.ui.skynet.widgets.XLabelValueBase;
+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.Event;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.ui.forms.IManagedForm;
+import org.eclipse.ui.forms.IMessageManager;
+import org.eclipse.ui.forms.events.HyperlinkEvent;
+import org.eclipse.ui.forms.events.IHyperlinkListener;
+import org.eclipse.ui.forms.widgets.Hyperlink;
+
+/**
+ * <REM2> handled through SMAEditorEventManager
+ *
+ * @author Donald G. Dunne
+ */
+public class ReviewInfoXWidget extends XLabelValueBase {
+
+ private final String forStateName;
+ private final ArrayList<Label> labelWidgets = new ArrayList<Label>();
+ private Composite destroyableComposite = null;
+ private final Composite composite;
+ private final IManagedForm managedForm;
+ private final int horizontalSpan;
+ private final XFormToolkit toolkit;
+ private final TeamWorkFlowArtifact teamArt;
+
+ public ReviewInfoXWidget(IManagedForm managedForm, XFormToolkit toolkit, final TeamWorkFlowArtifact teamArt, final String forStateName, Composite composite, int horizontalSpan) {
+ super("\"" + forStateName + "\" State Reviews");
+ this.managedForm = managedForm;
+ this.toolkit = toolkit;
+ this.teamArt = teamArt;
+ this.forStateName = forStateName;
+ this.composite = composite;
+ this.horizontalSpan = horizontalSpan;
+ reDisplay();
+ }
+
+ public void reDisplay() {
+ if (composite != null && composite.isDisposed()) {
+ return;
+ }
+ if (destroyableComposite != null) {
+ destroyableComposite.dispose();
+ }
+ destroyableComposite = new Composite(composite, SWT.None);
+ destroyableComposite.setLayout(ALayout.getZeroMarginLayout(4, false));
+
+ setToolTip("Blocking Reviews must be completed before transtion. Select Review hyperlink to view.");
+ createWidgets(managedForm, destroyableComposite, horizontalSpan);
+
+ try {
+ addAdminRightClickOption();
+ Collection<ReviewSMArtifact> revArts = ReviewManager.getReviews(teamArt, forStateName);
+ if (revArts.isEmpty()) {
+ setValueText("No Reviews Created");
+ }
+
+ Hyperlink link = toolkit.createHyperlink(destroyableComposite, "[Add Decision Review]", 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 {
+ StateListAndTitleDialog dialog =
+ new StateListAndTitleDialog("Create Decision Review",
+ "Select state to that review will be associated with.",
+ teamArt.getWorkFlowDefinition().getPageNames());
+ dialog.setInitialSelections(new Object[] {forStateName});
+ if (dialog.open() == 0) {
+ if (!Strings.isValid(dialog.getReviewTitle())) {
+ AWorkbench.popup("ERROR", "Must enter review title");
+ return;
+ }
+ NewDecisionReviewJob job =
+ new NewDecisionReviewJob(teamArt, null, dialog.getReviewTitle(), dialog.getSelectedState(),
+ null, ReviewManager.getDefaultDecisionReviewOptions(), null);
+ job.setUser(true);
+ job.setPriority(Job.LONG);
+ job.schedule();
+ }
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ }
+ }
+ });
+
+ link = toolkit.createHyperlink(destroyableComposite, "[Add Peer to Peer Review]", 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 {
+ StateListAndTitleDialog dialog =
+ new StateListAndTitleDialog("Add Peer to Peer Review",
+ "Select state to that review will be associated with.",
+ teamArt.getWorkFlowDefinition().getPageNames());
+ dialog.setInitialSelections(new Object[] {forStateName});
+ dialog.setReviewTitle(PeerToPeerReviewArtifact.getDefaultReviewTitle(teamArt));
+ if (dialog.open() == 0) {
+ if (!Strings.isValid(dialog.getReviewTitle())) {
+ AWorkbench.popup("ERROR", "Must enter review title");
+ return;
+ }
+ NewPeerToPeerReviewJob job =
+ new NewPeerToPeerReviewJob(teamArt, dialog.getReviewTitle(), dialog.getSelectedState());
+ job.setUser(true);
+ job.setPriority(Job.LONG);
+ job.schedule();
+ }
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
+ }
+ }
+ });
+ if (revArts.size() > 0) {
+ Composite workComp = toolkit.createContainer(destroyableComposite, 1);
+ workComp.setLayoutData(new GridData(GridData.FILL_BOTH | GridData.VERTICAL_ALIGN_BEGINNING));
+ GridData gd = new GridData();
+ gd.horizontalIndent = 20;
+ gd.horizontalSpan = 4;
+ workComp.setLayoutData(gd);
+
+ for (ReviewSMArtifact revArt : revArts) {
+ createReviewHyperlink(workComp, managedForm, toolkit, 2, revArt, forStateName);
+ }
+ }
+
+ } catch (OseeCoreException ex) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
+ }
+ }
+
+ @Override
+ public String toString() {
+ try {
+ return "ReviewInfoXWidget for SMA \"" + teamArt + "\"";
+ } catch (Exception ex) {
+ return "ReviewInfoXWidget " + ex.getLocalizedMessage();
+ }
+ }
+
+ public static String toHTML(final TeamWorkFlowArtifact teamArt, String forStateName) throws OseeCoreException {
+ if (ReviewManager.getReviews(teamArt, forStateName).isEmpty()) {
+ return "";
+ }
+ StringBuffer html = new StringBuffer();
+ try {
+ html.append(AHTML.addSpace(1) + AHTML.getLabelStr(AHTML.LABEL_FONT, "\"" + forStateName + "\" State Reviews"));
+ html.append(AHTML.startBorderTable(100, Overview.normalColor, ""));
+ html.append(AHTML.addHeaderRowMultiColumnTable(new String[] {"Review Type", "Title", "ID"}));
+ for (ReviewSMArtifact art : ReviewManager.getReviews(teamArt, forStateName)) {
+ html.append(AHTML.addRowMultiColumnTable(new String[] {
+ art.getArtifactTypeName(),
+ art.getName(),
+ art.getHumanReadableId()}));
+ }
+ html.append(AHTML.endBorderTable());
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ return "Review Exception - " + ex.getLocalizedMessage();
+ }
+ return html.toString();
+ }
+
+ public String toHTML() throws OseeCoreException {
+ return ReviewInfoXWidget.toHTML(teamArt, forStateName);
+ }
+
+ private void createReviewHyperlink(Composite comp, IManagedForm managedForm, XFormToolkit toolkit, final int horizontalSpan, final ReviewSMArtifact revArt, String forStateName) throws OseeCoreException {
+
+ Composite workComp = toolkit.createContainer(comp, 1);
+ workComp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING));
+ workComp.setLayout(ALayout.getZeroMarginLayout(3, false));
+
+ Label strLabel = new Label(workComp, SWT.NONE);
+ labelWidgets.add(strLabel);
+ if (revArt.isBlocking() && !revArt.isCancelledOrCompleted()) {
+ strLabel.setText("State Blocking [" + revArt.getArtifactTypeName() + "] must be completed: ");
+ IMessageManager messageManager = managedForm.getMessageManager();
+ if (messageManager != null) {
+ messageManager.addMessage(
+ "validation.error",
+ "\"" + forStateName + "\" State has a blocking [" + revArt.getArtifactTypeName() + "] that must be completed.",
+ null, IMessageProvider.ERROR, strLabel);
+ }
+ } else if (!revArt.isCancelledOrCompleted()) {
+ strLabel.setText("Open [" + revArt.getArtifactTypeName() + "] exists: ");
+ IMessageManager messageManager = managedForm.getMessageManager();
+ if (messageManager != null) {
+ messageManager.addMessage("validation.error",
+ "\"" + forStateName + "\" State has an open [" + revArt.getArtifactTypeName() + "].", null,
+ IMessageProvider.WARNING, strLabel);
+ }
+ } else {
+ strLabel.setText(revArt.getStateMgr().getCurrentStateName() + " [" + revArt.getArtifactTypeName() + "] exists: ");
+ }
+
+ String str = "[" + revArt.getName() + "]";
+ Hyperlink hyperLabel =
+ toolkit.createHyperlink(workComp, (str.length() > 300 ? Strings.truncate(str, 300) + "..." : str), SWT.NONE);
+ hyperLabel.setToolTipText("Select to open review");
+ hyperLabel.addListener(SWT.MouseUp, new Listener() {
+ @Override
+ public void handleEvent(Event event) {
+ SMAEditor.editArtifact(revArt);
+ }
+ });
+ }
+
+ public void addAdminRightClickOption() throws OseeCoreException {
+ // If ATS Admin, allow right-click to auto-complete tasks
+ if (AtsUtil.isAtsAdmin() && !AtsUtil.isProductionDb()) {
+ labelWidget.addListener(SWT.MouseUp, new Listener() {
+ @Override
+ public void handleEvent(Event event) {
+ if (event.button == 3) {
+ if (!MessageDialog.openConfirm(Displays.getActiveShell(), "Auto Complete Reviews",
+ "ATS Admin\n\nAuto Complete Reviews?")) {
+ return;
+ }
+ try {
+ SkynetTransaction transaction =
+ new SkynetTransaction(AtsUtil.getAtsBranch(), "ATS Auto Complete Reviews");
+ for (ReviewSMArtifact revArt : ReviewManager.getReviewsFromCurrentState(teamArt)) {
+ if (!revArt.isCancelledOrCompleted()) {
+ if (revArt.getStateMgr().isUnAssigned()) {
+ revArt.getStateMgr().setAssignee(UserManager.getUser());
+ }
+ Result result =
+ revArt.transitionToCompleted("", transaction,
+ TransitionOption.OverrideTransitionValidityCheck, TransitionOption.Persist);
+ if (result.isFalse()) {
+ result.popup();
+ return;
+ }
+ }
+ }
+ transaction.execute();
+ } catch (OseeCoreException ex) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
+ }
+ }
+ }
+ });
+ }
+ }
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/widget/StateHoursSpentXWidget.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/widget/StateHoursSpentXWidget.java
index de2444a3095..ee233f8d8da 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/widget/StateHoursSpentXWidget.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/widget/StateHoursSpentXWidget.java
@@ -1,106 +1,106 @@
-/*******************************************************************************
- * 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.editor.widget;
-
-import java.util.Collections;
-import java.util.logging.Level;
-import org.eclipse.osee.ats.artifact.StateMachineArtifact;
-import org.eclipse.osee.ats.artifact.TaskableStateMachineArtifact;
-import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact;
-import org.eclipse.osee.ats.editor.SMAPromptChangeStatus;
-import org.eclipse.osee.ats.internal.AtsPlugin;
-import org.eclipse.osee.ats.util.widgets.ReviewManager;
-import org.eclipse.osee.ats.workflow.AtsWorkPage;
-import org.eclipse.osee.framework.logging.OseeLevel;
-import org.eclipse.osee.framework.logging.OseeLog;
-import org.eclipse.osee.framework.ui.skynet.widgets.XHyperlinkLabelValueSelection;
-import org.eclipse.osee.framework.ui.skynet.widgets.XModifiedListener;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.forms.IManagedForm;
-
-/**
- * @author Donald G. Dunne
- */
-public class StateHoursSpentXWidget extends XHyperlinkLabelValueSelection {
-
- private final StateMachineArtifact sma;
- private final AtsWorkPage page;
- private final boolean isCurrentState;
-
- public StateHoursSpentXWidget(IManagedForm managedForm, AtsWorkPage page, final StateMachineArtifact sma, Composite composite, int horizontalSpan, XModifiedListener xModListener, boolean isCurrentState) {
- super("\"" + page.getName() + "\"" + " State Hours Spent");
- this.page = page;
- this.sma = sma;
- this.isCurrentState = isCurrentState;
- if (xModListener != null) {
- addXModifiedListener(xModListener);
- }
- setEditable(isCurrentState && !sma.isReadOnly());
- setFillHorizontally(true);
- setToolTip(TOOLTIP);
- super.createWidgets(managedForm, composite, horizontalSpan);
- }
-
- @Override
- public boolean handleSelection() {
- try {
- SMAPromptChangeStatus.promptChangeStatus(Collections.singleton(sma), false);
- sma.getEditor().onDirtied();
- return true;
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
- }
- return false;
- }
-
- public static String TOOLTIP = "Calculation: \n State Hours Spent: amount entered by user\n" +
- //
- " Task Hours Spent: total hours spent of all tasks related to state\n" +
- //
- " Review Hours Spent: total hours spent of all reviews related to state\n" +
- //
- "Total State Hours Spent: state hours + all task hours + all review hours";
-
- @Override
- public String getCurrentValue() {
- if (page == null) {
- return "page == null";
- }
- try {
- StringBuffer sb =
- new StringBuffer(String.format(" State Hours: %5.2f",
- sma.getStateMgr().getHoursSpent(page.getName())));
- setEditable(isCurrentState && !sma.isReadOnly());
- boolean breakoutNeeded = false;
- if (sma instanceof TaskableStateMachineArtifact) {
- if (((TaskableStateMachineArtifact) sma).hasTaskArtifacts()) {
- sb.append(String.format("\n Task Hours: %5.2f",
- ((TaskableStateMachineArtifact) sma).getHoursSpentFromTasks(page.getName())));
- breakoutNeeded = true;
- }
- }
- if (sma.isTeamWorkflow() && ReviewManager.hasReviews((TeamWorkFlowArtifact) sma)) {
- sb.append(String.format("\n Review Hours: %5.2f",
- ReviewManager.getHoursSpent((TeamWorkFlowArtifact) sma, page.getName())));
- breakoutNeeded = true;
- }
- if (breakoutNeeded) {
- setToolTip(sb.toString());
- return String.format("%5.2f", sma.getHoursSpentSMAStateTotal(page.getName()));
- } else {
- return String.format("%5.2f", sma.getStateMgr().getHoursSpent(page.getName()));
- }
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- return ex.getLocalizedMessage();
- }
- }
-}
+/*******************************************************************************
+ * 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.editor.widget;
+
+import java.util.Collections;
+import java.util.logging.Level;
+import org.eclipse.osee.ats.artifact.StateMachineArtifact;
+import org.eclipse.osee.ats.artifact.TaskableStateMachineArtifact;
+import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact;
+import org.eclipse.osee.ats.editor.SMAPromptChangeStatus;
+import org.eclipse.osee.ats.internal.AtsPlugin;
+import org.eclipse.osee.ats.util.widgets.ReviewManager;
+import org.eclipse.osee.ats.workflow.AtsWorkPage;
+import org.eclipse.osee.framework.logging.OseeLevel;
+import org.eclipse.osee.framework.logging.OseeLog;
+import org.eclipse.osee.framework.ui.skynet.widgets.XHyperlinkLabelValueSelection;
+import org.eclipse.osee.framework.ui.skynet.widgets.XModifiedListener;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.forms.IManagedForm;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class StateHoursSpentXWidget extends XHyperlinkLabelValueSelection {
+
+ private final StateMachineArtifact sma;
+ private final AtsWorkPage page;
+ private final boolean isCurrentState;
+
+ public StateHoursSpentXWidget(IManagedForm managedForm, AtsWorkPage page, final StateMachineArtifact sma, Composite composite, int horizontalSpan, XModifiedListener xModListener, boolean isCurrentState) {
+ super("\"" + page.getName() + "\"" + " State Hours Spent");
+ this.page = page;
+ this.sma = sma;
+ this.isCurrentState = isCurrentState;
+ if (xModListener != null) {
+ addXModifiedListener(xModListener);
+ }
+ setEditable(isCurrentState && !sma.isReadOnly());
+ setFillHorizontally(true);
+ setToolTip(TOOLTIP);
+ super.createWidgets(managedForm, composite, horizontalSpan);
+ }
+
+ @Override
+ public boolean handleSelection() {
+ try {
+ SMAPromptChangeStatus.promptChangeStatus(Collections.singleton(sma), false);
+ sma.getEditor().onDirtied();
+ return true;
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
+ }
+ return false;
+ }
+
+ public static String TOOLTIP = "Calculation: \n State Hours Spent: amount entered by user\n" +
+ //
+ " Task Hours Spent: total hours spent of all tasks related to state\n" +
+ //
+ " Review Hours Spent: total hours spent of all reviews related to state\n" +
+ //
+ "Total State Hours Spent: state hours + all task hours + all review hours";
+
+ @Override
+ public String getCurrentValue() {
+ if (page == null) {
+ return "page == null";
+ }
+ try {
+ StringBuffer sb =
+ new StringBuffer(String.format(" State Hours: %5.2f",
+ sma.getStateMgr().getHoursSpent(page.getName())));
+ setEditable(isCurrentState && !sma.isReadOnly());
+ boolean breakoutNeeded = false;
+ if (sma instanceof TaskableStateMachineArtifact) {
+ if (((TaskableStateMachineArtifact) sma).hasTaskArtifacts()) {
+ sb.append(String.format("\n Task Hours: %5.2f",
+ ((TaskableStateMachineArtifact) sma).getHoursSpentFromTasks(page.getName())));
+ breakoutNeeded = true;
+ }
+ }
+ if (sma.isTeamWorkflow() && ReviewManager.hasReviews((TeamWorkFlowArtifact) sma)) {
+ sb.append(String.format("\n Review Hours: %5.2f",
+ ReviewManager.getHoursSpent((TeamWorkFlowArtifact) sma, page.getName())));
+ breakoutNeeded = true;
+ }
+ if (breakoutNeeded) {
+ setToolTip(sb.toString());
+ return String.format("%5.2f", sma.getHoursSpentSMAStateTotal(page.getName()));
+ } else {
+ return String.format("%5.2f", sma.getStateMgr().getHoursSpent(page.getName()));
+ }
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ return ex.getLocalizedMessage();
+ }
+ }
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/widget/StatePercentCompleteXWidget.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/widget/StatePercentCompleteXWidget.java
index 4a3fb1836c2..bd7a4b9fa2f 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/widget/StatePercentCompleteXWidget.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/widget/StatePercentCompleteXWidget.java
@@ -1,111 +1,111 @@
-/*******************************************************************************
- * 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.editor.widget;
-
-import java.util.Collections;
-import java.util.logging.Level;
-import org.eclipse.osee.ats.artifact.StateMachineArtifact;
-import org.eclipse.osee.ats.artifact.TaskableStateMachineArtifact;
-import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact;
-import org.eclipse.osee.ats.editor.SMAPromptChangeStatus;
-import org.eclipse.osee.ats.internal.AtsPlugin;
-import org.eclipse.osee.ats.util.widgets.ReviewManager;
-import org.eclipse.osee.ats.workflow.AtsWorkPage;
-import org.eclipse.osee.framework.logging.OseeLevel;
-import org.eclipse.osee.framework.logging.OseeLog;
-import org.eclipse.osee.framework.ui.skynet.widgets.XHyperlinkLabelValueSelection;
-import org.eclipse.osee.framework.ui.skynet.widgets.XModifiedListener;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.forms.IManagedForm;
-
-/**
- * @author Donald G. Dunne
- */
-public class StatePercentCompleteXWidget extends XHyperlinkLabelValueSelection {
-
- private final StateMachineArtifact sma;
- private final AtsWorkPage page;
- private final boolean isCurrentState;
-
- public StatePercentCompleteXWidget(IManagedForm managedForm, AtsWorkPage page, final StateMachineArtifact sma, Composite composite, int horizontalSpan, XModifiedListener xModListener, boolean isCurrentState) {
- super("\"" + page.getName() + "\"" + " State Percent Complete");
- this.page = page;
- this.sma = sma;
- this.isCurrentState = isCurrentState;
- if (xModListener != null) {
- addXModifiedListener(xModListener);
- }
- setEditable(isCurrentState && !sma.isReadOnly());
- setFillHorizontally(true);
- setToolTip(TOOLTIP);
- super.createWidgets(managedForm, composite, horizontalSpan);
- }
-
- @Override
- public boolean handleSelection() {
- try {
- SMAPromptChangeStatus.promptChangeStatus(Collections.singleton(sma), false);
- sma.getEditor().onDirtied();
- return true;
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
- }
- return false;
- }
-
- public static String TOOLTIP = "Calculation: \n State Percent: amount entered by user\n" +
- //
- " Task Percent: total percent of all tasks related to state / number of tasks related to state\n" +
- //
- " Review Percent: total percent of all reviews related to state / number of reviews related to state\n" +
- //
- "Total State Percent: state percent + all task percents + all review percents / 1 + num tasks + num reviews";
-
- @Override
- public String getCurrentValue() {
- if (page == null) {
- return "page == null";
- }
- try {
- setEditable(isCurrentState && !sma.isReadOnly());
- StringBuffer sb =
- new StringBuffer(String.format(" State Percent: %d",
- sma.getStateMgr().getPercentComplete(page.getName())));
- boolean breakoutNeeded = false;
- if (sma instanceof TaskableStateMachineArtifact) {
- if (((TaskableStateMachineArtifact) sma).hasTaskArtifacts()) {
- sb.append(String.format("\n Task Percent: %d",
- ((TaskableStateMachineArtifact) sma).getPercentCompleteFromTasks(page.getName())));
- breakoutNeeded = true;
- }
- }
- if (sma.isTeamWorkflow()) {
- if (ReviewManager.hasReviews((TeamWorkFlowArtifact) sma)) {
- sb.append(String.format("\n Review Percent: %d",
- ReviewManager.getPercentComplete((TeamWorkFlowArtifact) sma, page.getName())));
- breakoutNeeded = true;
- }
- }
- if (breakoutNeeded) {
- if (!getControl().isDisposed()) {
- setToolTip(sb.toString() + "\n" + TOOLTIP);
- }
- return String.valueOf(sma.getPercentCompleteSMAStateTotal(page.getName()));
- } else {
- return String.valueOf(sma.getStateMgr().getPercentComplete(page.getName()));
- }
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- return ex.getLocalizedMessage();
- }
- }
-
-}
+/*******************************************************************************
+ * 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.editor.widget;
+
+import java.util.Collections;
+import java.util.logging.Level;
+import org.eclipse.osee.ats.artifact.StateMachineArtifact;
+import org.eclipse.osee.ats.artifact.TaskableStateMachineArtifact;
+import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact;
+import org.eclipse.osee.ats.editor.SMAPromptChangeStatus;
+import org.eclipse.osee.ats.internal.AtsPlugin;
+import org.eclipse.osee.ats.util.widgets.ReviewManager;
+import org.eclipse.osee.ats.workflow.AtsWorkPage;
+import org.eclipse.osee.framework.logging.OseeLevel;
+import org.eclipse.osee.framework.logging.OseeLog;
+import org.eclipse.osee.framework.ui.skynet.widgets.XHyperlinkLabelValueSelection;
+import org.eclipse.osee.framework.ui.skynet.widgets.XModifiedListener;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.forms.IManagedForm;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class StatePercentCompleteXWidget extends XHyperlinkLabelValueSelection {
+
+ private final StateMachineArtifact sma;
+ private final AtsWorkPage page;
+ private final boolean isCurrentState;
+
+ public StatePercentCompleteXWidget(IManagedForm managedForm, AtsWorkPage page, final StateMachineArtifact sma, Composite composite, int horizontalSpan, XModifiedListener xModListener, boolean isCurrentState) {
+ super("\"" + page.getName() + "\"" + " State Percent Complete");
+ this.page = page;
+ this.sma = sma;
+ this.isCurrentState = isCurrentState;
+ if (xModListener != null) {
+ addXModifiedListener(xModListener);
+ }
+ setEditable(isCurrentState && !sma.isReadOnly());
+ setFillHorizontally(true);
+ setToolTip(TOOLTIP);
+ super.createWidgets(managedForm, composite, horizontalSpan);
+ }
+
+ @Override
+ public boolean handleSelection() {
+ try {
+ SMAPromptChangeStatus.promptChangeStatus(Collections.singleton(sma), false);
+ sma.getEditor().onDirtied();
+ return true;
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
+ }
+ return false;
+ }
+
+ public static String TOOLTIP = "Calculation: \n State Percent: amount entered by user\n" +
+ //
+ " Task Percent: total percent of all tasks related to state / number of tasks related to state\n" +
+ //
+ " Review Percent: total percent of all reviews related to state / number of reviews related to state\n" +
+ //
+ "Total State Percent: state percent + all task percents + all review percents / 1 + num tasks + num reviews";
+
+ @Override
+ public String getCurrentValue() {
+ if (page == null) {
+ return "page == null";
+ }
+ try {
+ setEditable(isCurrentState && !sma.isReadOnly());
+ StringBuffer sb =
+ new StringBuffer(String.format(" State Percent: %d",
+ sma.getStateMgr().getPercentComplete(page.getName())));
+ boolean breakoutNeeded = false;
+ if (sma instanceof TaskableStateMachineArtifact) {
+ if (((TaskableStateMachineArtifact) sma).hasTaskArtifacts()) {
+ sb.append(String.format("\n Task Percent: %d",
+ ((TaskableStateMachineArtifact) sma).getPercentCompleteFromTasks(page.getName())));
+ breakoutNeeded = true;
+ }
+ }
+ if (sma.isTeamWorkflow()) {
+ if (ReviewManager.hasReviews((TeamWorkFlowArtifact) sma)) {
+ sb.append(String.format("\n Review Percent: %d",
+ ReviewManager.getPercentComplete((TeamWorkFlowArtifact) sma, page.getName())));
+ breakoutNeeded = true;
+ }
+ }
+ if (breakoutNeeded) {
+ if (!getControl().isDisposed()) {
+ setToolTip(sb.toString() + "\n" + TOOLTIP);
+ }
+ return String.valueOf(sma.getPercentCompleteSMAStateTotal(page.getName()));
+ } else {
+ return String.valueOf(sma.getStateMgr().getPercentComplete(page.getName()));
+ }
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ return ex.getLocalizedMessage();
+ }
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/widget/TaskInfoXWidget.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/widget/TaskInfoXWidget.java
index ec45d38249d..2ed7ea672f4 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/widget/TaskInfoXWidget.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/widget/TaskInfoXWidget.java
@@ -1,137 +1,137 @@
-/*******************************************************************************
- * 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.editor.widget;
-
-import java.util.logging.Level;
-import org.eclipse.jface.dialogs.IMessageProvider;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.osee.ats.artifact.StateMachineArtifact.TransitionOption;
-import org.eclipse.osee.ats.artifact.TaskArtifact;
-import org.eclipse.osee.ats.artifact.TaskableStateMachineArtifact;
-import org.eclipse.osee.ats.internal.AtsPlugin;
-import org.eclipse.osee.ats.util.AtsUtil;
-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.UserManager;
-import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction;
-import org.eclipse.osee.framework.ui.plugin.util.Result;
-import org.eclipse.osee.framework.ui.skynet.widgets.XLabelValueBase;
-import org.eclipse.osee.framework.ui.swt.Displays;
-import org.eclipse.osee.framework.ui.swt.Widgets;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.ui.forms.IManagedForm;
-import org.eclipse.ui.forms.IMessageManager;
-
-/**
- * <REM2> handled through SMAEditorEventManager
- *
- * @author Donald G. Dunne
- */
-public class TaskInfoXWidget extends XLabelValueBase {
-
- private final String forStateName;
- private final IManagedForm managedForm;
- private final TaskableStateMachineArtifact taskableArt;
-
- public TaskInfoXWidget(IManagedForm managedForm, final TaskableStateMachineArtifact taskableArt, final String forStateName, Composite composite, int horizontalSpan) {
- super("\"" + forStateName + "\" State Tasks");
- this.managedForm = managedForm;
- this.taskableArt = taskableArt;
- this.forStateName = forStateName;
- setToolTip("Tasks must be completed before transtion. Select \"Task\" tab to view tasks");
- setFillHorizontally(true);
- createWidgets(managedForm, composite, horizontalSpan);
- addAdminRightClickOption();
- }
-
- @Override
- public String toString() {
- try {
- return "TaskInfoXWidget for SMA \"" + taskableArt + "\"";
- } catch (Exception ex) {
- return "TaskInfoXWidget " + ex.getLocalizedMessage();
- }
- }
-
- @Override
- public void refresh() {
- if (labelWidget == null || labelWidget.isDisposed() || managedForm == null || managedForm.getForm() == null || managedForm.getForm().isDisposed()) {
- dispose();
- }
- try {
- if (taskableArt.getTaskArtifacts(forStateName).size() > 0) {
- setValueText(taskableArt.getStatus(forStateName));
- } else {
- setValueText("No Tasks Created");
- }
- if (taskableArt.areTasksComplete(forStateName).isFalse()) {
- IMessageManager messageManager = managedForm.getMessageManager();
- if (messageManager != null) {
- messageManager.addMessage("validation.error", "State \"" + forStateName + "\" has uncompleted Tasks",
- null, IMessageProvider.ERROR, labelWidget);
- }
- } else {
- if (Widgets.isAccessible(managedForm.getForm())) {
- managedForm.getMessageManager().removeMessage("validation.error", labelWidget);
- }
- }
- } catch (OseeCoreException ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
- }
-
- public void addAdminRightClickOption() {
- try {
- // If ATS Admin, allow right-click to auto-complete tasks
- if (AtsUtil.isAtsAdmin() && !AtsUtil.isProductionDb()) {
- labelWidget.addListener(SWT.MouseUp, new Listener() {
- @Override
- public void handleEvent(Event event) {
- if (event.button == 3) {
- if (!MessageDialog.openConfirm(Displays.getActiveShell(), "Auto Complete Tasks",
- "ATS Admin\n\nAuto Complete Tasks?")) {
- return;
- }
- try {
- SkynetTransaction transaction =
- new SkynetTransaction(AtsUtil.getAtsBranch(), "ATS Auto Complete Tasks");
- for (TaskArtifact taskArt : taskableArt.getTaskArtifacts(forStateName)) {
- if (!taskArt.isCancelledOrCompleted()) {
- if (taskArt.getStateMgr().isUnAssigned()) {
- taskArt.getStateMgr().setAssignee(UserManager.getUser());
- }
- Result result =
- taskArt.transitionToCompleted("", transaction,
- TransitionOption.OverrideTransitionValidityCheck, TransitionOption.Persist);
- if (result.isFalse()) {
- result.popup();
- return;
- }
- }
- }
- transaction.execute();
- } catch (OseeCoreException ex) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
- }
- }
- }
- });
- }
-
- } catch (OseeCoreException ex) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
- }
- }
-}
+/*******************************************************************************
+ * 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.editor.widget;
+
+import java.util.logging.Level;
+import org.eclipse.jface.dialogs.IMessageProvider;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.osee.ats.artifact.StateMachineArtifact.TransitionOption;
+import org.eclipse.osee.ats.artifact.TaskArtifact;
+import org.eclipse.osee.ats.artifact.TaskableStateMachineArtifact;
+import org.eclipse.osee.ats.internal.AtsPlugin;
+import org.eclipse.osee.ats.util.AtsUtil;
+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.UserManager;
+import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction;
+import org.eclipse.osee.framework.ui.plugin.util.Result;
+import org.eclipse.osee.framework.ui.skynet.widgets.XLabelValueBase;
+import org.eclipse.osee.framework.ui.swt.Displays;
+import org.eclipse.osee.framework.ui.swt.Widgets;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.ui.forms.IManagedForm;
+import org.eclipse.ui.forms.IMessageManager;
+
+/**
+ * <REM2> handled through SMAEditorEventManager
+ *
+ * @author Donald G. Dunne
+ */
+public class TaskInfoXWidget extends XLabelValueBase {
+
+ private final String forStateName;
+ private final IManagedForm managedForm;
+ private final TaskableStateMachineArtifact taskableArt;
+
+ public TaskInfoXWidget(IManagedForm managedForm, final TaskableStateMachineArtifact taskableArt, final String forStateName, Composite composite, int horizontalSpan) {
+ super("\"" + forStateName + "\" State Tasks");
+ this.managedForm = managedForm;
+ this.taskableArt = taskableArt;
+ this.forStateName = forStateName;
+ setToolTip("Tasks must be completed before transtion. Select \"Task\" tab to view tasks");
+ setFillHorizontally(true);
+ createWidgets(managedForm, composite, horizontalSpan);
+ addAdminRightClickOption();
+ }
+
+ @Override
+ public String toString() {
+ try {
+ return "TaskInfoXWidget for SMA \"" + taskableArt + "\"";
+ } catch (Exception ex) {
+ return "TaskInfoXWidget " + ex.getLocalizedMessage();
+ }
+ }
+
+ @Override
+ public void refresh() {
+ if (labelWidget == null || labelWidget.isDisposed() || managedForm == null || managedForm.getForm() == null || managedForm.getForm().isDisposed()) {
+ dispose();
+ }
+ try {
+ if (taskableArt.getTaskArtifacts(forStateName).size() > 0) {
+ setValueText(taskableArt.getStatus(forStateName));
+ } else {
+ setValueText("No Tasks Created");
+ }
+ if (taskableArt.areTasksComplete(forStateName).isFalse()) {
+ IMessageManager messageManager = managedForm.getMessageManager();
+ if (messageManager != null) {
+ messageManager.addMessage("validation.error", "State \"" + forStateName + "\" has uncompleted Tasks",
+ null, IMessageProvider.ERROR, labelWidget);
+ }
+ } else {
+ if (Widgets.isAccessible(managedForm.getForm())) {
+ managedForm.getMessageManager().removeMessage("validation.error", labelWidget);
+ }
+ }
+ } catch (OseeCoreException ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ }
+ }
+
+ public void addAdminRightClickOption() {
+ try {
+ // If ATS Admin, allow right-click to auto-complete tasks
+ if (AtsUtil.isAtsAdmin() && !AtsUtil.isProductionDb()) {
+ labelWidget.addListener(SWT.MouseUp, new Listener() {
+ @Override
+ public void handleEvent(Event event) {
+ if (event.button == 3) {
+ if (!MessageDialog.openConfirm(Displays.getActiveShell(), "Auto Complete Tasks",
+ "ATS Admin\n\nAuto Complete Tasks?")) {
+ return;
+ }
+ try {
+ SkynetTransaction transaction =
+ new SkynetTransaction(AtsUtil.getAtsBranch(), "ATS Auto Complete Tasks");
+ for (TaskArtifact taskArt : taskableArt.getTaskArtifacts(forStateName)) {
+ if (!taskArt.isCancelledOrCompleted()) {
+ if (taskArt.getStateMgr().isUnAssigned()) {
+ taskArt.getStateMgr().setAssignee(UserManager.getUser());
+ }
+ Result result =
+ taskArt.transitionToCompleted("", transaction,
+ TransitionOption.OverrideTransitionValidityCheck, TransitionOption.Persist);
+ if (result.isFalse()) {
+ result.popup();
+ return;
+ }
+ }
+ }
+ transaction.execute();
+ } catch (OseeCoreException ex) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
+ }
+ }
+ }
+ });
+ }
+
+ } catch (OseeCoreException ex) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
+ }
+ }
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/export/AtsExportManager.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/export/AtsExportManager.java
index c784a0b0303..4f8f4c87296 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/export/AtsExportManager.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/export/AtsExportManager.java
@@ -1,189 +1,189 @@
-/*******************************************************************************
- * 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.export;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Set;
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.jface.window.Window;
-import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.osee.ats.artifact.ActionArtifact;
-import org.eclipse.osee.ats.artifact.StateMachineArtifact;
-import org.eclipse.osee.ats.editor.SMAPrint;
-import org.eclipse.osee.ats.internal.AtsPlugin;
-import org.eclipse.osee.ats.world.WorldEditor;
-import org.eclipse.osee.framework.core.exception.OseeCoreException;
-import org.eclipse.osee.framework.jdk.core.util.AHTML;
-import org.eclipse.osee.framework.jdk.core.util.Collections;
-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.artifact.Artifact;
-import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
-import org.eclipse.osee.framework.ui.plugin.util.Result;
-import org.eclipse.osee.framework.ui.skynet.FrameworkImage;
-import org.eclipse.osee.framework.ui.skynet.results.ResultsEditor;
-import org.eclipse.osee.framework.ui.swt.ImageManager;
-import org.eclipse.search.ui.text.Match;
-import org.eclipse.ui.PlatformUI;
-
-/**
- * @author Donald G. Dunne
- */
-public class AtsExportManager extends Action {
-
- private final TreeViewer treeViewer;
-
- public AtsExportManager(WorldEditor worldEditor) {
- this(worldEditor.getWorldComposite().getXViewer());
- }
-
- public AtsExportManager(TreeViewer treeViewer) {
- setText("Export Selected ATS Artifacts");
- setImageDescriptor(ImageManager.getImageDescriptor(FrameworkImage.EXPORT_DATA));
- this.treeViewer = treeViewer;
- }
-
- public enum ExportOption {
- NONE,
- POPUP_DIALOG,
- AS_HTML_TO_RESULT_EDITOR,
- AS_HTML_TO_FILE,
- AS_PDF,
- MERGE_INTO_SINGLE_FILE,
- SAVE_INTO_SEPARATE_FILES,
- INCLUDE_TASKLIST;
-
- };
-
- public static Collection<StateMachineArtifact> getSmaArts(Collection<? extends Artifact> artifacts) throws OseeCoreException {
- Set<StateMachineArtifact> smaArts = new HashSet<StateMachineArtifact>();
- for (Artifact artifact : artifacts) {
- if (artifact instanceof StateMachineArtifact) {
- smaArts.add((StateMachineArtifact) artifact);
- } else if (artifact instanceof ActionArtifact) {
- smaArts.addAll(((ActionArtifact) artifact).getTeamWorkFlowArtifacts());
- }
- }
- return smaArts;
- }
-
- public static Collection<StateMachineArtifact> getSmaArts(ISelection selection) throws OseeCoreException {
- Set<StateMachineArtifact> smaArts = new HashSet<StateMachineArtifact>();
- if (selection != null) {
- Iterator<?> selectionIterator = ((IStructuredSelection) selection).iterator();
- while (selectionIterator.hasNext()) {
- Object selectedObject = selectionIterator.next();
-
- if (selectedObject instanceof Match) {
- selectedObject = ((Match) selectedObject).getElement();
- } else if (selectedObject instanceof IAdaptable) {
- selectedObject = ((IAdaptable) selectedObject).getAdapter(Artifact.class);
- }
-
- if (selectedObject instanceof StateMachineArtifact) {
- smaArts.add((StateMachineArtifact) selectedObject);
- } else if (selectedObject instanceof ActionArtifact) {
- smaArts.addAll(((ActionArtifact) selectedObject).getTeamWorkFlowArtifacts());
- } else {
+/*******************************************************************************
+ * 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.export;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.jface.window.Window;
+import org.eclipse.jface.wizard.WizardDialog;
+import org.eclipse.osee.ats.artifact.ActionArtifact;
+import org.eclipse.osee.ats.artifact.StateMachineArtifact;
+import org.eclipse.osee.ats.editor.SMAPrint;
+import org.eclipse.osee.ats.internal.AtsPlugin;
+import org.eclipse.osee.ats.world.WorldEditor;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.jdk.core.util.AHTML;
+import org.eclipse.osee.framework.jdk.core.util.Collections;
+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.artifact.Artifact;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
+import org.eclipse.osee.framework.ui.plugin.util.Result;
+import org.eclipse.osee.framework.ui.skynet.FrameworkImage;
+import org.eclipse.osee.framework.ui.skynet.results.ResultsEditor;
+import org.eclipse.osee.framework.ui.swt.ImageManager;
+import org.eclipse.search.ui.text.Match;
+import org.eclipse.ui.PlatformUI;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class AtsExportManager extends Action {
+
+ private final TreeViewer treeViewer;
+
+ public AtsExportManager(WorldEditor worldEditor) {
+ this(worldEditor.getWorldComposite().getXViewer());
+ }
+
+ public AtsExportManager(TreeViewer treeViewer) {
+ setText("Export Selected ATS Artifacts");
+ setImageDescriptor(ImageManager.getImageDescriptor(FrameworkImage.EXPORT_DATA));
+ this.treeViewer = treeViewer;
+ }
+
+ public enum ExportOption {
+ NONE,
+ POPUP_DIALOG,
+ AS_HTML_TO_RESULT_EDITOR,
+ AS_HTML_TO_FILE,
+ AS_PDF,
+ MERGE_INTO_SINGLE_FILE,
+ SAVE_INTO_SEPARATE_FILES,
+ INCLUDE_TASKLIST;
+
+ };
+
+ public static Collection<StateMachineArtifact> getSmaArts(Collection<? extends Artifact> artifacts) throws OseeCoreException {
+ Set<StateMachineArtifact> smaArts = new HashSet<StateMachineArtifact>();
+ for (Artifact artifact : artifacts) {
+ if (artifact instanceof StateMachineArtifact) {
+ smaArts.add((StateMachineArtifact) artifact);
+ } else if (artifact instanceof ActionArtifact) {
+ smaArts.addAll(((ActionArtifact) artifact).getTeamWorkFlowArtifacts());
+ }
+ }
+ return smaArts;
+ }
+
+ public static Collection<StateMachineArtifact> getSmaArts(ISelection selection) throws OseeCoreException {
+ Set<StateMachineArtifact> smaArts = new HashSet<StateMachineArtifact>();
+ if (selection != null) {
+ Iterator<?> selectionIterator = ((IStructuredSelection) selection).iterator();
+ while (selectionIterator.hasNext()) {
+ Object selectedObject = selectionIterator.next();
+
+ if (selectedObject instanceof Match) {
+ selectedObject = ((Match) selectedObject).getElement();
+ } else if (selectedObject instanceof IAdaptable) {
+ selectedObject = ((IAdaptable) selectedObject).getAdapter(Artifact.class);
+ }
+
+ if (selectedObject instanceof StateMachineArtifact) {
+ smaArts.add((StateMachineArtifact) selectedObject);
+ } else if (selectedObject instanceof ActionArtifact) {
+ smaArts.addAll(((ActionArtifact) selectedObject).getTeamWorkFlowArtifacts());
+ } else {
OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, "Expected selection to be of type Artifact");
- }
- }
- }
- return smaArts;
- }
-
- public static Result export(ISelection selection, ExportOption... exportOption) throws OseeCoreException {
- return export(getSmaArts(selection), exportOption);
- }
-
- public static Result export(Collection<? extends Artifact> artifacts, ExportOption... exportOption) throws OseeCoreException {
- Collection<ExportOption> exportOptions = Collections.getAggregate(exportOption);
- if (exportOptions.contains(ExportOption.POPUP_DIALOG)) {
- AtsExportWizard exportWizard = new AtsExportWizard(getSmaArts(artifacts));
- WizardDialog dialog =
- new WizardDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), exportWizard);
- if (dialog.open() == Window.OK) {
- Collection<ExportOption> selectedExportOptions = exportWizard.getSelectedExportOptions();
- boolean singleFile = selectedExportOptions.contains(ExportOption.MERGE_INTO_SINGLE_FILE);
- boolean asHtmlToFile = selectedExportOptions.contains(ExportOption.AS_HTML_TO_FILE);
- boolean asHtmlToResultEditor = selectedExportOptions.contains(ExportOption.AS_HTML_TO_RESULT_EDITOR);
- boolean multipleFile = selectedExportOptions.contains(ExportOption.SAVE_INTO_SEPARATE_FILES);
- boolean includeTaskList = selectedExportOptions.contains(ExportOption.INCLUDE_TASKLIST);
- if (asHtmlToFile || asHtmlToResultEditor) {
- StringBuffer singleSb = new StringBuffer();
- for (Artifact artifact : artifacts) {
- if (artifact instanceof StateMachineArtifact) {
- SMAPrint smaPrint = new SMAPrint(((StateMachineArtifact) artifact));
- smaPrint.setIncludeTaskList(includeTaskList);
- String html = smaPrint.getResultData().getReport("").getManipulatedHtml();
- if (multipleFile) {
- try {
- if (asHtmlToFile) {
- File file =
- new File(
- exportWizard.getFileLocation() + "\\" + artifact.getHumanReadableId() + ".html");
- Lib.writeStringToFile(html, file);
- }
- if (asHtmlToResultEditor) {
- ResultsEditor.open("Output", "Export " + artifact.getHumanReadableId(), html);
- }
- } catch (IOException ex) {
- throw new OseeCoreException("Error writing to html file", ex);
- }
- }
- if (singleFile) {
- singleSb.append(html + AHTML.newline(3));
- }
- }
- }
- if (singleFile) {
- try {
- if (asHtmlToFile) {
- File file = new File(exportWizard.getFileLocation() + "\\ATS_Export.html");
- Lib.writeStringToFile(singleSb.toString(), file);
- }
- if (asHtmlToResultEditor) {
- ResultsEditor.open("Output", "Export ATS Artifacts", singleSb.toString());
- }
- } catch (IOException ex) {
- throw new OseeCoreException("Error writing to html file", ex);
- }
- }
- AWorkbench.popup("Export Completed", "Export Completed");
- }
- if (selectedExportOptions.contains(ExportOption.AS_PDF)) {
- AWorkbench.popup("ERROR", "AS_PDF Not Implemented Yet");
- }
- }
- }
- return Result.TrueResult;
- }
-
- @Override
- public void run() {
- if (treeViewer != null) {
- try {
- AtsExportManager.export(treeViewer.getSelection(), ExportOption.POPUP_DIALOG);
- } catch (OseeCoreException ex) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
- }
- }
- }
-}
+ }
+ }
+ }
+ return smaArts;
+ }
+
+ public static Result export(ISelection selection, ExportOption... exportOption) throws OseeCoreException {
+ return export(getSmaArts(selection), exportOption);
+ }
+
+ public static Result export(Collection<? extends Artifact> artifacts, ExportOption... exportOption) throws OseeCoreException {
+ Collection<ExportOption> exportOptions = Collections.getAggregate(exportOption);
+ if (exportOptions.contains(ExportOption.POPUP_DIALOG)) {
+ AtsExportWizard exportWizard = new AtsExportWizard(getSmaArts(artifacts));
+ WizardDialog dialog =
+ new WizardDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), exportWizard);
+ if (dialog.open() == Window.OK) {
+ Collection<ExportOption> selectedExportOptions = exportWizard.getSelectedExportOptions();
+ boolean singleFile = selectedExportOptions.contains(ExportOption.MERGE_INTO_SINGLE_FILE);
+ boolean asHtmlToFile = selectedExportOptions.contains(ExportOption.AS_HTML_TO_FILE);
+ boolean asHtmlToResultEditor = selectedExportOptions.contains(ExportOption.AS_HTML_TO_RESULT_EDITOR);
+ boolean multipleFile = selectedExportOptions.contains(ExportOption.SAVE_INTO_SEPARATE_FILES);
+ boolean includeTaskList = selectedExportOptions.contains(ExportOption.INCLUDE_TASKLIST);
+ if (asHtmlToFile || asHtmlToResultEditor) {
+ StringBuffer singleSb = new StringBuffer();
+ for (Artifact artifact : artifacts) {
+ if (artifact instanceof StateMachineArtifact) {
+ SMAPrint smaPrint = new SMAPrint(((StateMachineArtifact) artifact));
+ smaPrint.setIncludeTaskList(includeTaskList);
+ String html = smaPrint.getResultData().getReport("").getManipulatedHtml();
+ if (multipleFile) {
+ try {
+ if (asHtmlToFile) {
+ File file =
+ new File(
+ exportWizard.getFileLocation() + "\\" + artifact.getHumanReadableId() + ".html");
+ Lib.writeStringToFile(html, file);
+ }
+ if (asHtmlToResultEditor) {
+ ResultsEditor.open("Output", "Export " + artifact.getHumanReadableId(), html);
+ }
+ } catch (IOException ex) {
+ throw new OseeCoreException("Error writing to html file", ex);
+ }
+ }
+ if (singleFile) {
+ singleSb.append(html + AHTML.newline(3));
+ }
+ }
+ }
+ if (singleFile) {
+ try {
+ if (asHtmlToFile) {
+ File file = new File(exportWizard.getFileLocation() + "\\ATS_Export.html");
+ Lib.writeStringToFile(singleSb.toString(), file);
+ }
+ if (asHtmlToResultEditor) {
+ ResultsEditor.open("Output", "Export ATS Artifacts", singleSb.toString());
+ }
+ } catch (IOException ex) {
+ throw new OseeCoreException("Error writing to html file", ex);
+ }
+ }
+ AWorkbench.popup("Export Completed", "Export Completed");
+ }
+ if (selectedExportOptions.contains(ExportOption.AS_PDF)) {
+ AWorkbench.popup("ERROR", "AS_PDF Not Implemented Yet");
+ }
+ }
+ }
+ return Result.TrueResult;
+ }
+
+ @Override
+ public void run() {
+ if (treeViewer != null) {
+ try {
+ AtsExportManager.export(treeViewer.getSelection(), ExportOption.POPUP_DIALOG);
+ } catch (OseeCoreException ex) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
+ }
+ }
+ }
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/export/AtsExportPage.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/export/AtsExportPage.java
index c4610e72fb6..4e6b2a4c049 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/export/AtsExportPage.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/export/AtsExportPage.java
@@ -1,162 +1,162 @@
-/*******************************************************************************
- * 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.export;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.osee.ats.export.AtsExportManager.ExportOption;
-import org.eclipse.osee.framework.core.exception.OseeCoreException;
-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.XCheckBox;
-import org.eclipse.osee.framework.ui.skynet.widgets.XFileTextWithSelectionDialog;
-import org.eclipse.osee.framework.ui.skynet.widgets.XFileTextWithSelectionDialog.Type;
-import org.eclipse.osee.framework.ui.skynet.widgets.XModifiedListener;
-import org.eclipse.osee.framework.ui.skynet.widgets.XWidget;
-import org.eclipse.osee.framework.ui.swt.Displays;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.ui.dialogs.WizardDataTransferPage;
-
-/**
- * @author Donald G. Dunne
- */
-public class AtsExportPage extends WizardDataTransferPage {
- private final List<XCheckBox> checkBoxes = new ArrayList<XCheckBox>();
- private XFileTextWithSelectionDialog xFileSel;
- private String fileLocation;
- private final Collection<ExportOption> selectedExportOptions = new ArrayList<ExportOption>();
- private final Collection<? extends Artifact> artifacts;
-
- public AtsExportPage(IStructuredSelection selection) throws OseeCoreException {
- super("Main");
- this.artifacts = AtsExportManager.getSmaArts(selection);
- }
-
- public AtsExportPage(Collection<? extends Artifact> artifacts) {
- super("Main");
- this.artifacts = artifacts;
- }
-
- @Override
- protected boolean allowNewContainerName() {
- return false;
- }
-
- @Override
- public void handleEvent(Event event) {
- // do nothing
- }
-
- @Override
- public void createControl(Composite parent) {
- initializeDialogUnits(parent);
- setTitle("Export ATS Artifacts");
- setMessage("Select export options and export location.");
- Composite composite = new Composite(parent, SWT.NULL);
- composite.setLayout(new GridLayout(2, false));
- composite.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_FILL | GridData.HORIZONTAL_ALIGN_FILL));
- composite.setFont(parent.getFont());
-
- Label label = new Label(composite, SWT.NONE);
- if (artifacts.isEmpty()) {
- label.setText("Error: No ATS Artifacts input. Close wizard and re-perform selection.");
- label.setBackground(Displays.getSystemColor(SWT.COLOR_RED));
- } else {
- label.setText("Selected " + artifacts.size() + " ATS Artifact to export.");
- }
- GridData gridData = new GridData(GridData.FILL_HORIZONTAL);
- gridData.horizontalSpan = 2;
- label.setLayoutData(gridData);
-
- XModifiedListener modifyListener = new XModifiedListener() {
- @Override
- public void widgetModified(XWidget widget) {
- handleModified();
- }
- };
-
- List<ExportOption> validExportOptions = new ArrayList<ExportOption>();
- validExportOptions.addAll(Arrays.asList(ExportOption.values()));
- validExportOptions.remove(ExportOption.POPUP_DIALOG);
- validExportOptions.remove(ExportOption.NONE);
-
- for (ExportOption exportOption : validExportOptions) {
- XCheckBox checkBox = new XCheckBox(exportOption.name());
- checkBox.setLabelAfter(true);
- checkBox.createWidgets(composite, 2);
- if (selectedExportOptions.contains(exportOption)) {
- checkBox.set(true);
- }
- checkBox.addXModifiedListener(modifyListener);
- checkBoxes.add(checkBox);
- }
-
- xFileSel = new XFileTextWithSelectionDialog("Export Location", Type.Directory);
- xFileSel.createWidgets(composite, 2);
- xFileSel.addXModifiedListener(modifyListener);
-
- setPageComplete(determinePageCompletion());
- setControl(composite);
- }
-
- public Result isEntryValid() {
- if (artifacts.isEmpty()) {
- return new Result("No Artifacts selected. Cancel wizard and try again.");
- }
- if (!selectedExportOptions.contains(ExportOption.AS_HTML_TO_FILE) && !selectedExportOptions.contains(ExportOption.AS_HTML_TO_RESULT_EDITOR) && !selectedExportOptions.contains(ExportOption.AS_PDF)) {
- return new Result("Must select at least one export AS_ option.");
- }
- if (!selectedExportOptions.contains(ExportOption.MERGE_INTO_SINGLE_FILE) && !selectedExportOptions.contains(ExportOption.SAVE_INTO_SEPARATE_FILES)) {
- return new Result("Must select \"MERGE_INTO_SINGLE_FILE\" or \"SAVE_INTO_SEPARATE_FILES\"");
- }
- if (selectedExportOptions.contains(ExportOption.AS_HTML_TO_FILE) || selectedExportOptions.contains(ExportOption.AS_PDF)) {
- if (xFileSel.get().equals("")) {
- return new Result(
- "Must select \"Export Location\" for \"" + ExportOption.AS_HTML_TO_FILE + "\" or \"" + ExportOption.AS_PDF + "\" options.");
- }
- if (!new File(xFileSel.get()).isDirectory()) {
- return new Result("Invalid Directory");
- }
- }
- return Result.TrueResult;
- }
-
- public void handleModified() {
- for (XCheckBox checkBox : checkBoxes) {
- ExportOption exportOption = ExportOption.valueOf(checkBox.getLabel());
- if (checkBox.isSelected()) {
- selectedExportOptions.add(exportOption);
- } else {
- selectedExportOptions.remove(exportOption);
- }
- }
- fileLocation = xFileSel.get();
- }
-
- public Collection<ExportOption> getSelectedExportOptions() {
- return selectedExportOptions;
- }
-
- public String getFileLocation() {
- return fileLocation;
- }
-
+/*******************************************************************************
+ * 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.export;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.osee.ats.export.AtsExportManager.ExportOption;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+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.XCheckBox;
+import org.eclipse.osee.framework.ui.skynet.widgets.XFileTextWithSelectionDialog;
+import org.eclipse.osee.framework.ui.skynet.widgets.XFileTextWithSelectionDialog.Type;
+import org.eclipse.osee.framework.ui.skynet.widgets.XModifiedListener;
+import org.eclipse.osee.framework.ui.skynet.widgets.XWidget;
+import org.eclipse.osee.framework.ui.swt.Displays;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.ui.dialogs.WizardDataTransferPage;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class AtsExportPage extends WizardDataTransferPage {
+ private final List<XCheckBox> checkBoxes = new ArrayList<XCheckBox>();
+ private XFileTextWithSelectionDialog xFileSel;
+ private String fileLocation;
+ private final Collection<ExportOption> selectedExportOptions = new ArrayList<ExportOption>();
+ private final Collection<? extends Artifact> artifacts;
+
+ public AtsExportPage(IStructuredSelection selection) throws OseeCoreException {
+ super("Main");
+ this.artifacts = AtsExportManager.getSmaArts(selection);
+ }
+
+ public AtsExportPage(Collection<? extends Artifact> artifacts) {
+ super("Main");
+ this.artifacts = artifacts;
+ }
+
+ @Override
+ protected boolean allowNewContainerName() {
+ return false;
+ }
+
+ @Override
+ public void handleEvent(Event event) {
+ // do nothing
+ }
+
+ @Override
+ public void createControl(Composite parent) {
+ initializeDialogUnits(parent);
+ setTitle("Export ATS Artifacts");
+ setMessage("Select export options and export location.");
+ Composite composite = new Composite(parent, SWT.NULL);
+ composite.setLayout(new GridLayout(2, false));
+ composite.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_FILL | GridData.HORIZONTAL_ALIGN_FILL));
+ composite.setFont(parent.getFont());
+
+ Label label = new Label(composite, SWT.NONE);
+ if (artifacts.isEmpty()) {
+ label.setText("Error: No ATS Artifacts input. Close wizard and re-perform selection.");
+ label.setBackground(Displays.getSystemColor(SWT.COLOR_RED));
+ } else {
+ label.setText("Selected " + artifacts.size() + " ATS Artifact to export.");
+ }
+ GridData gridData = new GridData(GridData.FILL_HORIZONTAL);
+ gridData.horizontalSpan = 2;
+ label.setLayoutData(gridData);
+
+ XModifiedListener modifyListener = new XModifiedListener() {
+ @Override
+ public void widgetModified(XWidget widget) {
+ handleModified();
+ }
+ };
+
+ List<ExportOption> validExportOptions = new ArrayList<ExportOption>();
+ validExportOptions.addAll(Arrays.asList(ExportOption.values()));
+ validExportOptions.remove(ExportOption.POPUP_DIALOG);
+ validExportOptions.remove(ExportOption.NONE);
+
+ for (ExportOption exportOption : validExportOptions) {
+ XCheckBox checkBox = new XCheckBox(exportOption.name());
+ checkBox.setLabelAfter(true);
+ checkBox.createWidgets(composite, 2);
+ if (selectedExportOptions.contains(exportOption)) {
+ checkBox.set(true);
+ }
+ checkBox.addXModifiedListener(modifyListener);
+ checkBoxes.add(checkBox);
+ }
+
+ xFileSel = new XFileTextWithSelectionDialog("Export Location", Type.Directory);
+ xFileSel.createWidgets(composite, 2);
+ xFileSel.addXModifiedListener(modifyListener);
+
+ setPageComplete(determinePageCompletion());
+ setControl(composite);
+ }
+
+ public Result isEntryValid() {
+ if (artifacts.isEmpty()) {
+ return new Result("No Artifacts selected. Cancel wizard and try again.");
+ }
+ if (!selectedExportOptions.contains(ExportOption.AS_HTML_TO_FILE) && !selectedExportOptions.contains(ExportOption.AS_HTML_TO_RESULT_EDITOR) && !selectedExportOptions.contains(ExportOption.AS_PDF)) {
+ return new Result("Must select at least one export AS_ option.");
+ }
+ if (!selectedExportOptions.contains(ExportOption.MERGE_INTO_SINGLE_FILE) && !selectedExportOptions.contains(ExportOption.SAVE_INTO_SEPARATE_FILES)) {
+ return new Result("Must select \"MERGE_INTO_SINGLE_FILE\" or \"SAVE_INTO_SEPARATE_FILES\"");
+ }
+ if (selectedExportOptions.contains(ExportOption.AS_HTML_TO_FILE) || selectedExportOptions.contains(ExportOption.AS_PDF)) {
+ if (xFileSel.get().equals("")) {
+ return new Result(
+ "Must select \"Export Location\" for \"" + ExportOption.AS_HTML_TO_FILE + "\" or \"" + ExportOption.AS_PDF + "\" options.");
+ }
+ if (!new File(xFileSel.get()).isDirectory()) {
+ return new Result("Invalid Directory");
+ }
+ }
+ return Result.TrueResult;
+ }
+
+ public void handleModified() {
+ for (XCheckBox checkBox : checkBoxes) {
+ ExportOption exportOption = ExportOption.valueOf(checkBox.getLabel());
+ if (checkBox.isSelected()) {
+ selectedExportOptions.add(exportOption);
+ } else {
+ selectedExportOptions.remove(exportOption);
+ }
+ }
+ fileLocation = xFileSel.get();
+ }
+
+ public Collection<ExportOption> getSelectedExportOptions() {
+ return selectedExportOptions;
+ }
+
+ public String getFileLocation() {
+ return fileLocation;
+ }
+
} \ No newline at end of file
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/export/AtsExportWizard.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/export/AtsExportWizard.java
index 1469b478e1f..1edc3e503c7 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/export/AtsExportWizard.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/export/AtsExportWizard.java
@@ -1,89 +1,89 @@
-/*******************************************************************************
- * 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.export;
-
-import java.util.Collection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.wizard.Wizard;
-import org.eclipse.osee.ats.export.AtsExportManager.ExportOption;
-import org.eclipse.osee.ats.internal.AtsPlugin;
-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.ui.plugin.util.Result;
-import org.eclipse.ui.IExportWizard;
-import org.eclipse.ui.IWorkbench;
-
-/**
- * @author Donald G. Dunne
- */
-public class AtsExportWizard extends Wizard implements IExportWizard {
- private AtsExportPage mainPage;
- private final Collection<? extends Artifact> artifacts;
-
- public AtsExportWizard() {
- this.artifacts = null;
- }
-
- public AtsExportWizard(Collection<? extends Artifact> artifacts) {
- this.artifacts = artifacts;
- }
-
- /**
- * @return the fileLocation
- */
- public String getFileLocation() {
- return mainPage.getFileLocation();
- }
-
- /**
- * @return the selectedExportOptions
- */
- public Collection<ExportOption> getSelectedExportOptions() {
- return mainPage.getSelectedExportOptions();
- }
-
- @Override
- public boolean performFinish() {
-
- Result result = mainPage.isEntryValid();
- if (result.isFalse()) {
- result.popup();
- return false;
- }
- try {
- AtsExportManager.export(artifacts,
- mainPage.getSelectedExportOptions().toArray(new ExportOption[mainPage.getSelectedExportOptions().size()]));
- } catch (OseeCoreException ex) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
- }
- return true;
- }
-
- @Override
- public void init(IWorkbench workbench, IStructuredSelection selection) {
- try {
- mainPage = new AtsExportPage(selection);
- } catch (OseeCoreException ex) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
- }
- }
-
- @Override
- public void addPages() {
- if (mainPage == null) {
- mainPage = new AtsExportPage(artifacts);
- }
- addPage(mainPage);
- }
+/*******************************************************************************
+ * 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.export;
+
+import java.util.Collection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.osee.ats.export.AtsExportManager.ExportOption;
+import org.eclipse.osee.ats.internal.AtsPlugin;
+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.ui.plugin.util.Result;
+import org.eclipse.ui.IExportWizard;
+import org.eclipse.ui.IWorkbench;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class AtsExportWizard extends Wizard implements IExportWizard {
+ private AtsExportPage mainPage;
+ private final Collection<? extends Artifact> artifacts;
+
+ public AtsExportWizard() {
+ this.artifacts = null;
+ }
+
+ public AtsExportWizard(Collection<? extends Artifact> artifacts) {
+ this.artifacts = artifacts;
+ }
+
+ /**
+ * @return the fileLocation
+ */
+ public String getFileLocation() {
+ return mainPage.getFileLocation();
+ }
+
+ /**
+ * @return the selectedExportOptions
+ */
+ public Collection<ExportOption> getSelectedExportOptions() {
+ return mainPage.getSelectedExportOptions();
+ }
+
+ @Override
+ public boolean performFinish() {
+
+ Result result = mainPage.isEntryValid();
+ if (result.isFalse()) {
+ result.popup();
+ return false;
+ }
+ try {
+ AtsExportManager.export(artifacts,
+ mainPage.getSelectedExportOptions().toArray(new ExportOption[mainPage.getSelectedExportOptions().size()]));
+ } catch (OseeCoreException ex) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
+ }
+ return true;
+ }
+
+ @Override
+ public void init(IWorkbench workbench, IStructuredSelection selection) {
+ try {
+ mainPage = new AtsExportPage(selection);
+ } catch (OseeCoreException ex) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
+ }
+ }
+
+ @Override
+ public void addPages() {
+ if (mainPage == null) {
+ mainPage = new AtsExportPage(artifacts);
+ }
+ addPage(mainPage);
+ }
} \ No newline at end of file
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/goal/GoalXViewerFactory.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/goal/GoalXViewerFactory.java
index abcc064a50c..75e75ab12a8 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/goal/GoalXViewerFactory.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/goal/GoalXViewerFactory.java
@@ -1,101 +1,112 @@
-/*******************************************************************************
- * 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.goal;
-
-import java.util.Arrays;
-import java.util.List;
-import java.util.logging.Level;
-import org.eclipse.nebula.widgets.xviewer.XViewer;
-import org.eclipse.nebula.widgets.xviewer.XViewerColumn;
-import org.eclipse.nebula.widgets.xviewer.XViewerSorter;
-import org.eclipse.nebula.widgets.xviewer.customize.CustomizeData;
-import org.eclipse.osee.ats.artifact.GoalArtifact;
-import org.eclipse.osee.ats.internal.AtsPlugin;
-import org.eclipse.osee.ats.world.AtsWorldEditorItems;
-import org.eclipse.osee.ats.world.IAtsWorldEditorItem;
-import org.eclipse.osee.ats.world.WorldXViewerFactory;
-import org.eclipse.osee.ats.world.WorldXViewerSorter;
-import org.eclipse.osee.framework.logging.OseeLog;
-import org.eclipse.osee.framework.ui.skynet.widgets.xviewer.skynet.SkynetXViewerFactory;
-import org.eclipse.osee.framework.ui.skynet.widgets.xviewer.skynet.column.XViewerHridColumn;
-
-/**
- * @author Donald G. Dunne
- */
-public class GoalXViewerFactory extends SkynetXViewerFactory {
-
- private GoalArtifact soleGoalArtifact;
- public static final List<XViewerColumn> GoalViewerVisibleColumns = Arrays.asList(WorldXViewerFactory.Goal_Order,
- WorldXViewerFactory.Goal_Order_Vote_Col, WorldXViewerFactory.Title_Col, WorldXViewerFactory.Type_Col,
- WorldXViewerFactory.State_Col, WorldXViewerFactory.Priority_Col, WorldXViewerFactory.Change_Type_Col,
- WorldXViewerFactory.Assignees_Col, new XViewerHridColumn(true), WorldXViewerFactory.Created_Date_Col,
- WorldXViewerFactory.Version_Target_Col, WorldXViewerFactory.Notes_Col);
- public static Integer[] widths = new Integer[] {WorldXViewerFactory.Goal_Order.getWidth(),
- WorldXViewerFactory.Goal_Order_Vote_Col.getWidth(), 250, 60, 60, 20, 20, 100, 50, 50, 50, 80};
-
- public GoalXViewerFactory(GoalArtifact soleGoalArtifact) {
- super("org.eclipse.osee.ats.GoalXViewer");
- this.soleGoalArtifact = soleGoalArtifact;
- int widthIndex = 0;
- // Create new column from world columns but set show and width for task
- for (XViewerColumn taskCol : GoalViewerVisibleColumns) {
- XViewerColumn newCol = taskCol.copy();
- newCol.setShow(true);
- newCol.setWidth(widths[widthIndex++]);
- registerColumns(newCol);
- }
- // Add remaining columns from world columns
- for (XViewerColumn worldCol : WorldXViewerFactory.WorldViewColumns) {
- if (!GoalViewerVisibleColumns.contains(worldCol)) {
- XViewerColumn newCol = worldCol.copy();
- newCol.setShow(false);
- registerColumns(newCol);
- }
- }
- // Register any columns from other plugins
- try {
- for (IAtsWorldEditorItem item : AtsWorldEditorItems.getItems()) {
- for (XViewerColumn xCol : item.getXViewerColumns()) {
- registerColumns(xCol);
- }
- }
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
- registerAllAttributeColumns();
- }
-
- @Override
- public XViewerSorter createNewXSorter(XViewer xViewer) {
- return new WorldXViewerSorter(xViewer);
- }
-
- @Override
- public CustomizeData getDefaultTableCustomizeData() {
- CustomizeData customizeData = super.getDefaultTableCustomizeData();
- for (XViewerColumn xCol : customizeData.getColumnData().getColumns()) {
- if (xCol.getId().equals(WorldXViewerFactory.Goal_Order.getId())) {
- xCol.setSortForward(true);
- }
- }
- customizeData.getSortingData().setSortingNames(WorldXViewerFactory.Goal_Order.getId());
- return customizeData;
- }
-
- public GoalArtifact getSoleGoalArtifact() {
- return soleGoalArtifact;
- }
-
- public void setSoleGoalArtifact(GoalArtifact soleGoalArtifact) {
- this.soleGoalArtifact = soleGoalArtifact;
- }
-
-}
+/*******************************************************************************
+ * 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.goal;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.logging.Level;
+import org.eclipse.nebula.widgets.xviewer.XViewer;
+import org.eclipse.nebula.widgets.xviewer.XViewerColumn;
+import org.eclipse.nebula.widgets.xviewer.XViewerSorter;
+import org.eclipse.nebula.widgets.xviewer.customize.CustomizeData;
+import org.eclipse.osee.ats.artifact.GoalArtifact;
+import org.eclipse.osee.ats.internal.AtsPlugin;
+import org.eclipse.osee.ats.world.AtsWorldEditorItems;
+import org.eclipse.osee.ats.world.IAtsWorldEditorItem;
+import org.eclipse.osee.ats.world.WorldXViewerFactory;
+import org.eclipse.osee.ats.world.WorldXViewerSorter;
+import org.eclipse.osee.framework.logging.OseeLog;
+import org.eclipse.osee.framework.ui.skynet.widgets.xviewer.skynet.SkynetXViewerFactory;
+import org.eclipse.osee.framework.ui.skynet.widgets.xviewer.skynet.column.XViewerHridColumn;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class GoalXViewerFactory extends SkynetXViewerFactory {
+
+ private GoalArtifact soleGoalArtifact;
+ public static final List<XViewerColumn> GoalViewerVisibleColumns = Arrays.asList(WorldXViewerFactory.Goal_Order,
+ WorldXViewerFactory.Goal_Order_Vote_Col, WorldXViewerFactory.Title_Col, WorldXViewerFactory.Type_Col,
+ WorldXViewerFactory.State_Col, WorldXViewerFactory.Priority_Col, WorldXViewerFactory.Change_Type_Col,
+ WorldXViewerFactory.Assignees_Col, new XViewerHridColumn(true), WorldXViewerFactory.Created_Date_Col,
+ WorldXViewerFactory.Version_Target_Col, WorldXViewerFactory.Notes_Col);
+ public static Integer[] widths = new Integer[] {
+ WorldXViewerFactory.Goal_Order.getWidth(),
+ WorldXViewerFactory.Goal_Order_Vote_Col.getWidth(),
+ 250,
+ 60,
+ 60,
+ 20,
+ 20,
+ 100,
+ 50,
+ 50,
+ 50,
+ 80};
+
+ public GoalXViewerFactory(GoalArtifact soleGoalArtifact) {
+ super("org.eclipse.osee.ats.GoalXViewer");
+ this.soleGoalArtifact = soleGoalArtifact;
+ int widthIndex = 0;
+ // Create new column from world columns but set show and width for task
+ for (XViewerColumn taskCol : GoalViewerVisibleColumns) {
+ XViewerColumn newCol = taskCol.copy();
+ newCol.setShow(true);
+ newCol.setWidth(widths[widthIndex++]);
+ registerColumns(newCol);
+ }
+ // Add remaining columns from world columns
+ for (XViewerColumn worldCol : WorldXViewerFactory.WorldViewColumns) {
+ if (!GoalViewerVisibleColumns.contains(worldCol)) {
+ XViewerColumn newCol = worldCol.copy();
+ newCol.setShow(false);
+ registerColumns(newCol);
+ }
+ }
+ // Register any columns from other plugins
+ try {
+ for (IAtsWorldEditorItem item : AtsWorldEditorItems.getItems()) {
+ for (XViewerColumn xCol : item.getXViewerColumns()) {
+ registerColumns(xCol);
+ }
+ }
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ }
+ registerAllAttributeColumns();
+ }
+
+ @Override
+ public XViewerSorter createNewXSorter(XViewer xViewer) {
+ return new WorldXViewerSorter(xViewer);
+ }
+
+ @Override
+ public CustomizeData getDefaultTableCustomizeData() {
+ CustomizeData customizeData = super.getDefaultTableCustomizeData();
+ for (XViewerColumn xCol : customizeData.getColumnData().getColumns()) {
+ if (xCol.getId().equals(WorldXViewerFactory.Goal_Order.getId())) {
+ xCol.setSortForward(true);
+ }
+ }
+ customizeData.getSortingData().setSortingNames(WorldXViewerFactory.Goal_Order.getId());
+ return customizeData;
+ }
+
+ public GoalArtifact getSoleGoalArtifact() {
+ return soleGoalArtifact;
+ }
+
+ public void setSoleGoalArtifact(GoalArtifact soleGoalArtifact) {
+ this.soleGoalArtifact = soleGoalArtifact;
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/handlers/AtsEditorHandler.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/handlers/AtsEditorHandler.java
index 4215eadc0c2..b8227e0bc12 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/handlers/AtsEditorHandler.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/handlers/AtsEditorHandler.java
@@ -1,32 +1,32 @@
-/*******************************************************************************
- * 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.handlers;
-
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.osee.ats.editor.AtsWorkflowRenderer;
-import org.eclipse.osee.framework.ui.skynet.commandHandlers.renderer.handlers.AbstractEditorHandler;
-import org.eclipse.osee.framework.ui.skynet.render.PresentationType;
-
-/**
- * @author Jeff C. Phillips
- */
-public class AtsEditorHandler extends AbstractEditorHandler {
-
- @Override
- public Object execute(ExecutionEvent event) {
- if (!artifacts.isEmpty()) {
- AtsWorkflowRenderer renderer = new AtsWorkflowRenderer();
- renderer.open(artifacts, PresentationType.SPECIALIZED_EDIT);
- dispose();
- }
- return null;
- }
-}
+/*******************************************************************************
+ * 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.handlers;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.osee.ats.editor.AtsWorkflowRenderer;
+import org.eclipse.osee.framework.ui.skynet.commandHandlers.renderer.handlers.AbstractEditorHandler;
+import org.eclipse.osee.framework.ui.skynet.render.PresentationType;
+
+/**
+ * @author Jeff C. Phillips
+ */
+public class AtsEditorHandler extends AbstractEditorHandler {
+
+ @Override
+ public Object execute(ExecutionEvent event) {
+ if (!artifacts.isEmpty()) {
+ AtsWorkflowRenderer renderer = new AtsWorkflowRenderer();
+ renderer.open(artifacts, PresentationType.SPECIALIZED_EDIT);
+ dispose();
+ }
+ return null;
+ }
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/handlers/AtsExportHandler.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/handlers/AtsExportHandler.java
index b0a25ee53bb..2021eef76ac 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/handlers/AtsExportHandler.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/handlers/AtsExportHandler.java
@@ -1,39 +1,39 @@
-/*******************************************************************************
- * 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.handlers;
-
-import java.util.logging.Level;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.osee.ats.export.AtsExportRenderer;
-import org.eclipse.osee.framework.core.exception.OseeCoreException;
-import org.eclipse.osee.framework.logging.OseeLog;
-import org.eclipse.osee.framework.ui.skynet.commandHandlers.renderer.handlers.AbstractEditorHandler;
-import org.eclipse.osee.framework.ui.skynet.render.PresentationType;
-
-/**
- * @author Jeff C. Phillips
- */
-public class AtsExportHandler extends AbstractEditorHandler {
-
- @Override
- public Object execute(ExecutionEvent event) {
- if (!artifacts.isEmpty()) {
- AtsExportRenderer renderer = new AtsExportRenderer();
- try {
- renderer.open(artifacts, PresentationType.SPECIALIZED_EDIT);
- } catch (OseeCoreException ex) {
- OseeLog.log(AtsEditorHandler.class, Level.SEVERE, ex);
- }
- dispose();
- }
- return null;
- }
-}
+/*******************************************************************************
+ * 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.handlers;
+
+import java.util.logging.Level;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.osee.ats.export.AtsExportRenderer;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.logging.OseeLog;
+import org.eclipse.osee.framework.ui.skynet.commandHandlers.renderer.handlers.AbstractEditorHandler;
+import org.eclipse.osee.framework.ui.skynet.render.PresentationType;
+
+/**
+ * @author Jeff C. Phillips
+ */
+public class AtsExportHandler extends AbstractEditorHandler {
+
+ @Override
+ public Object execute(ExecutionEvent event) {
+ if (!artifacts.isEmpty()) {
+ AtsExportRenderer renderer = new AtsExportRenderer();
+ try {
+ renderer.open(artifacts, PresentationType.SPECIALIZED_EDIT);
+ } catch (OseeCoreException ex) {
+ OseeLog.log(AtsEditorHandler.class, Level.SEVERE, ex);
+ }
+ dispose();
+ }
+ return null;
+ }
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/handlers/AtsTaskEditorHandler.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/handlers/AtsTaskEditorHandler.java
index 379a5a84405..8deda2b901c 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/handlers/AtsTaskEditorHandler.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/handlers/AtsTaskEditorHandler.java
@@ -1,39 +1,39 @@
-/*******************************************************************************
- * 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.handlers;
-
-import java.util.logging.Level;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.osee.ats.editor.AtsTaskEditorRenderer;
-import org.eclipse.osee.framework.core.exception.OseeCoreException;
-import org.eclipse.osee.framework.logging.OseeLog;
-import org.eclipse.osee.framework.ui.skynet.commandHandlers.renderer.handlers.AbstractEditorHandler;
-import org.eclipse.osee.framework.ui.skynet.render.PresentationType;
-
-/**
- * @author Jeff C. Phillips
- */
-public class AtsTaskEditorHandler extends AbstractEditorHandler {
-
- @Override
- public Object execute(ExecutionEvent event) {
- if (!artifacts.isEmpty()) {
- AtsTaskEditorRenderer renderer = new AtsTaskEditorRenderer();
- try {
- renderer.open(artifacts, PresentationType.SPECIALIZED_EDIT);
- } catch (OseeCoreException ex) {
- OseeLog.log(AtsEditorHandler.class, Level.SEVERE, ex);
- }
- dispose();
- }
- return null;
- }
-}
+/*******************************************************************************
+ * 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.handlers;
+
+import java.util.logging.Level;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.osee.ats.editor.AtsTaskEditorRenderer;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.logging.OseeLog;
+import org.eclipse.osee.framework.ui.skynet.commandHandlers.renderer.handlers.AbstractEditorHandler;
+import org.eclipse.osee.framework.ui.skynet.render.PresentationType;
+
+/**
+ * @author Jeff C. Phillips
+ */
+public class AtsTaskEditorHandler extends AbstractEditorHandler {
+
+ @Override
+ public Object execute(ExecutionEvent event) {
+ if (!artifacts.isEmpty()) {
+ AtsTaskEditorRenderer renderer = new AtsTaskEditorRenderer();
+ try {
+ renderer.open(artifacts, PresentationType.SPECIALIZED_EDIT);
+ } catch (OseeCoreException ex) {
+ OseeLog.log(AtsEditorHandler.class, Level.SEVERE, ex);
+ }
+ dispose();
+ }
+ return null;
+ }
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/handlers/AtsWorkflowConfigEditorHandler.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/handlers/AtsWorkflowConfigEditorHandler.java
index fd0ef7767bf..35ce4f5dc5e 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/handlers/AtsWorkflowConfigEditorHandler.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/handlers/AtsWorkflowConfigEditorHandler.java
@@ -1,32 +1,32 @@
-/*******************************************************************************
- * 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.handlers;
-
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.osee.ats.editor.AtsWorkflowRenderer;
-import org.eclipse.osee.framework.ui.skynet.commandHandlers.renderer.handlers.AbstractEditorHandler;
-import org.eclipse.osee.framework.ui.skynet.render.PresentationType;
-
-/**
- * @author Donald G. Dunne
- */
-public class AtsWorkflowConfigEditorHandler extends AbstractEditorHandler {
-
- @Override
- public Object execute(ExecutionEvent event) {
- if (!artifacts.isEmpty()) {
- AtsWorkflowRenderer renderer = new AtsWorkflowRenderer();
- renderer.open(artifacts, PresentationType.SPECIALIZED_EDIT);
- dispose();
- }
- return null;
- }
-}
+/*******************************************************************************
+ * 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.handlers;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.osee.ats.editor.AtsWorkflowRenderer;
+import org.eclipse.osee.framework.ui.skynet.commandHandlers.renderer.handlers.AbstractEditorHandler;
+import org.eclipse.osee.framework.ui.skynet.render.PresentationType;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class AtsWorkflowConfigEditorHandler extends AbstractEditorHandler {
+
+ @Override
+ public Object execute(ExecutionEvent event) {
+ if (!artifacts.isEmpty()) {
+ AtsWorkflowRenderer renderer = new AtsWorkflowRenderer();
+ renderer.open(artifacts, PresentationType.SPECIALIZED_EDIT);
+ dispose();
+ }
+ return null;
+ }
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/handlers/AtsWorldEditorHandler.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/handlers/AtsWorldEditorHandler.java
index a2a47bb413f..4e6278b8cec 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/handlers/AtsWorldEditorHandler.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/handlers/AtsWorldEditorHandler.java
@@ -1,32 +1,32 @@
-/*******************************************************************************
- * 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.handlers;
-
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.osee.ats.editor.AtsWorldEditorRenderer;
-import org.eclipse.osee.framework.ui.skynet.commandHandlers.renderer.handlers.AbstractEditorHandler;
-import org.eclipse.osee.framework.ui.skynet.render.PresentationType;
-
-/**
- * @author Jeff C. Phillips
- */
-public class AtsWorldEditorHandler extends AbstractEditorHandler {
-
- @Override
- public Object execute(ExecutionEvent event) {
- if (!artifacts.isEmpty()) {
- AtsWorldEditorRenderer renderer = new AtsWorldEditorRenderer();
- renderer.open(artifacts, PresentationType.SPECIALIZED_EDIT);
- dispose();
- }
- return null;
- }
-}
+/*******************************************************************************
+ * 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.handlers;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.osee.ats.editor.AtsWorldEditorRenderer;
+import org.eclipse.osee.framework.ui.skynet.commandHandlers.renderer.handlers.AbstractEditorHandler;
+import org.eclipse.osee.framework.ui.skynet.render.PresentationType;
+
+/**
+ * @author Jeff C. Phillips
+ */
+public class AtsWorldEditorHandler extends AbstractEditorHandler {
+
+ @Override
+ public Object execute(ExecutionEvent event) {
+ if (!artifacts.isEmpty()) {
+ AtsWorldEditorRenderer renderer = new AtsWorldEditorRenderer();
+ renderer.open(artifacts, PresentationType.SPECIALIZED_EDIT);
+ dispose();
+ }
+ return null;
+ }
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/health/AtsHealthCheck.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/health/AtsHealthCheck.java
index 5bc2a9a50bc..cfc72b4e82f 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/health/AtsHealthCheck.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/health/AtsHealthCheck.java
@@ -1,67 +1,67 @@
-/*******************************************************************************
- * 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.health;
-
-import java.util.HashSet;
-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.osee.ats.internal.AtsPlugin;
-import org.eclipse.osee.framework.logging.OseeLevel;
-import org.eclipse.osee.framework.logging.OseeLog;
-import org.osgi.framework.Bundle;
-
-/**
- * @author Donald G. Dunne
- */
-public class AtsHealthCheck {
-
- private static Set<IAtsHealthCheck> healthCheckItems = null;
-
- public static Set<IAtsHealthCheck> getAtsHealthCheckItems() {
- if (healthCheckItems == null) {
- healthCheckItems = new HashSet<IAtsHealthCheck>();
-
- IExtensionPoint point =
- Platform.getExtensionRegistry().getExtensionPoint("org.eclipse.osee.ats.AtsHealthCheck");
- if (point == null) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, "Can't access AtsHealthCheck extension point");
- return healthCheckItems;
- }
- IExtension[] extensions = point.getExtensions();
- for (IExtension extension : extensions) {
- IConfigurationElement[] elements = extension.getConfigurationElements();
- String classname = null;
- String bundleName = null;
- for (IConfigurationElement el : elements) {
- if (el.getName().equals("AtsHealthCheck")) {
- classname = el.getAttribute("classname");
- bundleName = el.getContributor().getName();
- if (classname != null && bundleName != null) {
- Bundle bundle = Platform.getBundle(bundleName);
- try {
- Class<?> taskClass = bundle.loadClass(classname);
- Object obj = taskClass.newInstance();
- healthCheckItems.add((IAtsHealthCheck) obj);
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, "Error loading AtsHealthCheck extension",
- ex);
- }
- }
- }
- }
- }
- }
- return healthCheckItems;
- }
-}
+/*******************************************************************************
+ * 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.health;
+
+import java.util.HashSet;
+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.osee.ats.internal.AtsPlugin;
+import org.eclipse.osee.framework.logging.OseeLevel;
+import org.eclipse.osee.framework.logging.OseeLog;
+import org.osgi.framework.Bundle;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class AtsHealthCheck {
+
+ private static Set<IAtsHealthCheck> healthCheckItems = null;
+
+ public static Set<IAtsHealthCheck> getAtsHealthCheckItems() {
+ if (healthCheckItems == null) {
+ healthCheckItems = new HashSet<IAtsHealthCheck>();
+
+ IExtensionPoint point =
+ Platform.getExtensionRegistry().getExtensionPoint("org.eclipse.osee.ats.AtsHealthCheck");
+ if (point == null) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, "Can't access AtsHealthCheck extension point");
+ return healthCheckItems;
+ }
+ IExtension[] extensions = point.getExtensions();
+ for (IExtension extension : extensions) {
+ IConfigurationElement[] elements = extension.getConfigurationElements();
+ String classname = null;
+ String bundleName = null;
+ for (IConfigurationElement el : elements) {
+ if (el.getName().equals("AtsHealthCheck")) {
+ classname = el.getAttribute("classname");
+ bundleName = el.getContributor().getName();
+ if (classname != null && bundleName != null) {
+ Bundle bundle = Platform.getBundle(bundleName);
+ try {
+ Class<?> taskClass = bundle.loadClass(classname);
+ Object obj = taskClass.newInstance();
+ healthCheckItems.add((IAtsHealthCheck) obj);
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, "Error loading AtsHealthCheck extension",
+ ex);
+ }
+ }
+ }
+ }
+ }
+ }
+ return healthCheckItems;
+ }
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/health/ChangeReportComparer.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/health/ChangeReportComparer.java
index e746cedb906..8795a911d80 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/health/ChangeReportComparer.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/health/ChangeReportComparer.java
@@ -1,56 +1,56 @@
-/*******************************************************************************
- * 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.health;
-
-import java.util.ArrayList;
-import java.util.logging.Level;
-import org.eclipse.osee.ats.health.change.DataChangeReportComparer;
-import org.eclipse.osee.ats.health.change.ValidateChangeReportParser;
-import org.eclipse.osee.ats.internal.AtsPlugin;
-import org.eclipse.osee.framework.logging.OseeLog;
-
-/**
- * Compares two change reports to see if the match.
- *
- * @author Jeff C. Phillips
- */
-public class ChangeReportComparer {
-
- /**
- * Compares two change report strings by parsing them and comparing each artifact change, attribute change and
- * relation change.
- *
- * @return Returns true if the change reports matches else false.
- */
- public boolean compare(String currentData, String storedData) {
- boolean success = true;
- ValidateChangeReportParser parser = new ValidateChangeReportParser();
- ArrayList<ArrayList<DataChangeReportComparer>> currentList = parser.parse(currentData);
- ArrayList<ArrayList<DataChangeReportComparer>> storedList = parser.parse(storedData);
-
- if (currentList.size() != storedList.size() || currentList.get(0).size() != storedList.get(0).size() || currentList.get(
- 1).size() != storedList.get(1).size() || currentList.get(2).size() != storedList.get(2).size()) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, "The change reports must have the same number of items");
- return false;
- }
- for (int i = 0; i < currentList.size(); i++) {
- for (int j = 0; j < currentList.get(i).size(); j++) {
- if (!currentList.get(i).get(j).getContent().equals(storedList.get(i).get(j).getContent())) {
- success = false;
- System.err.println(currentList.get(i).get(j).getContent());
- System.err.println(storedList.get(i).get(j).getContent());
- System.err.println("---------------------------------------------------");
- }
- }
- }
- return success;
- }
-}
+/*******************************************************************************
+ * 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.health;
+
+import java.util.ArrayList;
+import java.util.logging.Level;
+import org.eclipse.osee.ats.health.change.DataChangeReportComparer;
+import org.eclipse.osee.ats.health.change.ValidateChangeReportParser;
+import org.eclipse.osee.ats.internal.AtsPlugin;
+import org.eclipse.osee.framework.logging.OseeLog;
+
+/**
+ * Compares two change reports to see if the match.
+ *
+ * @author Jeff C. Phillips
+ */
+public class ChangeReportComparer {
+
+ /**
+ * Compares two change report strings by parsing them and comparing each artifact change, attribute change and
+ * relation change.
+ *
+ * @return Returns true if the change reports matches else false.
+ */
+ public boolean compare(String currentData, String storedData) {
+ boolean success = true;
+ ValidateChangeReportParser parser = new ValidateChangeReportParser();
+ ArrayList<ArrayList<DataChangeReportComparer>> currentList = parser.parse(currentData);
+ ArrayList<ArrayList<DataChangeReportComparer>> storedList = parser.parse(storedData);
+
+ if (currentList.size() != storedList.size() || currentList.get(0).size() != storedList.get(0).size() || currentList.get(
+ 1).size() != storedList.get(1).size() || currentList.get(2).size() != storedList.get(2).size()) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, "The change reports must have the same number of items");
+ return false;
+ }
+ for (int i = 0; i < currentList.size(); i++) {
+ for (int j = 0; j < currentList.get(i).size(); j++) {
+ if (!currentList.get(i).get(j).getContent().equals(storedList.get(i).get(j).getContent())) {
+ success = false;
+ System.err.println(currentList.get(i).get(j).getContent());
+ System.err.println(storedList.get(i).get(j).getContent());
+ System.err.println("---------------------------------------------------");
+ }
+ }
+ }
+ return success;
+ }
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/health/TxImportedValidateChangeReports.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/health/TxImportedValidateChangeReports.java
index 5083371ff12..08f9cc59c79 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/health/TxImportedValidateChangeReports.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/health/TxImportedValidateChangeReports.java
@@ -1,299 +1,299 @@
-/*******************************************************************************
- * 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.health;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.osee.ats.util.AtsUtil;
-import org.eclipse.osee.framework.core.enums.CoreArtifactTypes;
-import org.eclipse.osee.framework.core.enums.CoreAttributeTypes;
-import org.eclipse.osee.framework.core.exception.OseeArgumentException;
-import org.eclipse.osee.framework.core.exception.OseeCoreException;
-import org.eclipse.osee.framework.core.exception.OseeDataStoreException;
-import org.eclipse.osee.framework.core.exception.OseeStateException;
-import org.eclipse.osee.framework.core.model.Branch;
-import org.eclipse.osee.framework.database.core.ConnectionHandler;
-import org.eclipse.osee.framework.database.core.IOseeSequence;
-import org.eclipse.osee.framework.database.core.IOseeStatement;
-import org.eclipse.osee.framework.database.core.OseeInfo;
-import org.eclipse.osee.framework.jdk.core.text.change.ChangeSet;
-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.search.ArtifactQuery;
-import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction;
-import org.eclipse.osee.framework.ui.skynet.blam.AbstractBlam;
-import org.eclipse.osee.framework.ui.skynet.blam.VariableMap;
-
-/**
- * @author Roberto E. Escobar
- */
-public class TxImportedValidateChangeReports extends AbstractBlam {
-
- private static final String[] ARTIFACT_ID_ALIASES = new String[] {"artId", "bArtId", "aOrdr", "bOrdr"};
- public static final String BRANCH_ID_ALIASES = "brGuid";
- private static final String GAMMA_ID_ALIASES = "gamma";
- private static final String[] TRANSACTION_ID_ALIASES = new String[] {"tTranId", "fTranId"};
- private static final String ARTIFACT_TYPE_ID = "artTId";
- private static final String ATTRIBUTE_TYPE_ID = "attrTId";
- private static final String RELATION_TYPE_ID = "relTId";
- private static final String ATTRIBUTE_ID = "attrId";
- private static final String RELATION_ID = "relId";
- private static final String EMPTY_STRING = "";
-
- private static final String VCR_ROOT_ELEMENT_TAG = ValidateChangeReports.VCR_ROOT_ELEMENT_TAG;
- private static final String VCR_DB_GUID = ValidateChangeReports.VCR_DB_GUID;
-
- private static final Matcher NUMERICAL_MATCH = Pattern.compile("\\d+").matcher(EMPTY_STRING);
- private static final Matcher SOURCE_DB_GUID_MATCHER = Pattern.compile(
- "\\s*<" + VCR_ROOT_ELEMENT_TAG + "\\s*" + VCR_DB_GUID + "=\"(.*?)\"\\s*>").matcher(EMPTY_STRING);
- private static final Matcher XML_TAGGED_IDS_MATCHER = Pattern.compile("<(.*?)>(\\d+)</(.*?)>").matcher(EMPTY_STRING);
-
- private Map<String, ImportedId> translatorMap;
- private String currentDbGuid;
-
- @Override
- public String getName() {
- return "Tx Imported Validate Change Reports";
- }
-
- private void setup(String databaseTargetId) throws OseeDataStoreException {
- List<ImportedId> importtedIds = getImportedIds();
- for (ImportedId importedId : importtedIds) {
- print(importedId.getSequence() + "\n");
- importedId.load(databaseTargetId);
- }
-
- this.translatorMap = new HashMap<String, ImportedId>();
- for (ImportedId translator : importtedIds) {
- for (String alias : translator.getAliases()) {
- translatorMap.put(alias, translator);
- }
- }
-
- this.currentDbGuid = OseeInfo.getDatabaseGuid();
- }
-
- private void cleanUp() {
- if (translatorMap != null && !translatorMap.isEmpty()) {
- for (String key : translatorMap.keySet()) {
- translatorMap.get(key).clear();
- }
- translatorMap.clear();
- }
- this.currentDbGuid = null;
- }
-
- private List<ImportedId> getImportedIds() {
- List<ImportedId> translators = new ArrayList<ImportedId>();
- translators.add(new ImportedId(IOseeSequence.GAMMA_ID_SEQ, GAMMA_ID_ALIASES));
- translators.add(new ImportedId(IOseeSequence.TRANSACTION_ID_SEQ, TRANSACTION_ID_ALIASES));
- translators.add(new ImportedId(IOseeSequence.BRANCH_ID_SEQ, BRANCH_ID_ALIASES));
- translators.add(new ImportedId(IOseeSequence.ART_TYPE_ID_SEQ, ARTIFACT_TYPE_ID));
- translators.add(new ImportedId(IOseeSequence.ATTR_TYPE_ID_SEQ, ATTRIBUTE_TYPE_ID));
- translators.add(new ImportedId(IOseeSequence.REL_LINK_TYPE_ID_SEQ, RELATION_TYPE_ID));
- translators.add(new ImportedId(IOseeSequence.ART_ID_SEQ, ARTIFACT_ID_ALIASES));
- translators.add(new ImportedId(IOseeSequence.ATTR_ID_SEQ, ATTRIBUTE_ID));
- translators.add(new ImportedId(IOseeSequence.REL_LINK_ID_SEQ, RELATION_ID));
- return translators;
- }
-
- private long translate(String tag, long original) {
- long toReturn = original;
- if (Strings.isValid(tag)) {
- ImportedId importedId = translatorMap.get(tag);
- if (importedId != null) {
- toReturn = importedId.getFromCache(original);
- }
- }
- return toReturn;
- }
-
- private String getDataDbGuid(String data) {
- String toReturn = null;
- SOURCE_DB_GUID_MATCHER.reset(data);
- if (SOURCE_DB_GUID_MATCHER.find()) {
- toReturn = SOURCE_DB_GUID_MATCHER.group(1);
- }
- return toReturn != null ? toReturn : EMPTY_STRING;
- }
-
- @Override
- public void runOperation(VariableMap variableMap, IProgressMonitor monitor) throws Exception {
- try {
- Branch branch = AtsUtil.getAtsBranch();
- String databaseTargetId = variableMap.getString("Import Db Id");
- boolean shouldIncludeItemsWithoutDbId = variableMap.getBoolean("Include items without database id");
- if (!Strings.isValid(databaseTargetId)) {
- throw new OseeArgumentException("Invalid database target id");
- }
-
- databaseTargetId = databaseTargetId.trim();
- setup(databaseTargetId);
-
- SkynetTransaction transaction = new SkynetTransaction(branch, "Import Validate Change Reports");
- List<Artifact> artifacts =
- ArtifactQuery.getArtifactListFromTypeAndName(CoreArtifactTypes.GeneralData, "VCR_%", branch);
- for (Artifact artifact : artifacts) {
+/*******************************************************************************
+ * 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.health;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.osee.ats.util.AtsUtil;
+import org.eclipse.osee.framework.core.enums.CoreArtifactTypes;
+import org.eclipse.osee.framework.core.enums.CoreAttributeTypes;
+import org.eclipse.osee.framework.core.exception.OseeArgumentException;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.core.exception.OseeDataStoreException;
+import org.eclipse.osee.framework.core.exception.OseeStateException;
+import org.eclipse.osee.framework.core.model.Branch;
+import org.eclipse.osee.framework.database.core.ConnectionHandler;
+import org.eclipse.osee.framework.database.core.IOseeSequence;
+import org.eclipse.osee.framework.database.core.IOseeStatement;
+import org.eclipse.osee.framework.database.core.OseeInfo;
+import org.eclipse.osee.framework.jdk.core.text.change.ChangeSet;
+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.search.ArtifactQuery;
+import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction;
+import org.eclipse.osee.framework.ui.skynet.blam.AbstractBlam;
+import org.eclipse.osee.framework.ui.skynet.blam.VariableMap;
+
+/**
+ * @author Roberto E. Escobar
+ */
+public class TxImportedValidateChangeReports extends AbstractBlam {
+
+ private static final String[] ARTIFACT_ID_ALIASES = new String[] {"artId", "bArtId", "aOrdr", "bOrdr"};
+ public static final String BRANCH_ID_ALIASES = "brGuid";
+ private static final String GAMMA_ID_ALIASES = "gamma";
+ private static final String[] TRANSACTION_ID_ALIASES = new String[] {"tTranId", "fTranId"};
+ private static final String ARTIFACT_TYPE_ID = "artTId";
+ private static final String ATTRIBUTE_TYPE_ID = "attrTId";
+ private static final String RELATION_TYPE_ID = "relTId";
+ private static final String ATTRIBUTE_ID = "attrId";
+ private static final String RELATION_ID = "relId";
+ private static final String EMPTY_STRING = "";
+
+ private static final String VCR_ROOT_ELEMENT_TAG = ValidateChangeReports.VCR_ROOT_ELEMENT_TAG;
+ private static final String VCR_DB_GUID = ValidateChangeReports.VCR_DB_GUID;
+
+ private static final Matcher NUMERICAL_MATCH = Pattern.compile("\\d+").matcher(EMPTY_STRING);
+ private static final Matcher SOURCE_DB_GUID_MATCHER = Pattern.compile(
+ "\\s*<" + VCR_ROOT_ELEMENT_TAG + "\\s*" + VCR_DB_GUID + "=\"(.*?)\"\\s*>").matcher(EMPTY_STRING);
+ private static final Matcher XML_TAGGED_IDS_MATCHER = Pattern.compile("<(.*?)>(\\d+)</(.*?)>").matcher(EMPTY_STRING);
+
+ private Map<String, ImportedId> translatorMap;
+ private String currentDbGuid;
+
+ @Override
+ public String getName() {
+ return "Tx Imported Validate Change Reports";
+ }
+
+ private void setup(String databaseTargetId) throws OseeDataStoreException {
+ List<ImportedId> importtedIds = getImportedIds();
+ for (ImportedId importedId : importtedIds) {
+ print(importedId.getSequence() + "\n");
+ importedId.load(databaseTargetId);
+ }
+
+ this.translatorMap = new HashMap<String, ImportedId>();
+ for (ImportedId translator : importtedIds) {
+ for (String alias : translator.getAliases()) {
+ translatorMap.put(alias, translator);
+ }
+ }
+
+ this.currentDbGuid = OseeInfo.getDatabaseGuid();
+ }
+
+ private void cleanUp() {
+ if (translatorMap != null && !translatorMap.isEmpty()) {
+ for (String key : translatorMap.keySet()) {
+ translatorMap.get(key).clear();
+ }
+ translatorMap.clear();
+ }
+ this.currentDbGuid = null;
+ }
+
+ private List<ImportedId> getImportedIds() {
+ List<ImportedId> translators = new ArrayList<ImportedId>();
+ translators.add(new ImportedId(IOseeSequence.GAMMA_ID_SEQ, GAMMA_ID_ALIASES));
+ translators.add(new ImportedId(IOseeSequence.TRANSACTION_ID_SEQ, TRANSACTION_ID_ALIASES));
+ translators.add(new ImportedId(IOseeSequence.BRANCH_ID_SEQ, BRANCH_ID_ALIASES));
+ translators.add(new ImportedId(IOseeSequence.ART_TYPE_ID_SEQ, ARTIFACT_TYPE_ID));
+ translators.add(new ImportedId(IOseeSequence.ATTR_TYPE_ID_SEQ, ATTRIBUTE_TYPE_ID));
+ translators.add(new ImportedId(IOseeSequence.REL_LINK_TYPE_ID_SEQ, RELATION_TYPE_ID));
+ translators.add(new ImportedId(IOseeSequence.ART_ID_SEQ, ARTIFACT_ID_ALIASES));
+ translators.add(new ImportedId(IOseeSequence.ATTR_ID_SEQ, ATTRIBUTE_ID));
+ translators.add(new ImportedId(IOseeSequence.REL_LINK_ID_SEQ, RELATION_ID));
+ return translators;
+ }
+
+ private long translate(String tag, long original) {
+ long toReturn = original;
+ if (Strings.isValid(tag)) {
+ ImportedId importedId = translatorMap.get(tag);
+ if (importedId != null) {
+ toReturn = importedId.getFromCache(original);
+ }
+ }
+ return toReturn;
+ }
+
+ private String getDataDbGuid(String data) {
+ String toReturn = null;
+ SOURCE_DB_GUID_MATCHER.reset(data);
+ if (SOURCE_DB_GUID_MATCHER.find()) {
+ toReturn = SOURCE_DB_GUID_MATCHER.group(1);
+ }
+ return toReturn != null ? toReturn : EMPTY_STRING;
+ }
+
+ @Override
+ public void runOperation(VariableMap variableMap, IProgressMonitor monitor) throws Exception {
+ try {
+ Branch branch = AtsUtil.getAtsBranch();
+ String databaseTargetId = variableMap.getString("Import Db Id");
+ boolean shouldIncludeItemsWithoutDbId = variableMap.getBoolean("Include items without database id");
+ if (!Strings.isValid(databaseTargetId)) {
+ throw new OseeArgumentException("Invalid database target id");
+ }
+
+ databaseTargetId = databaseTargetId.trim();
+ setup(databaseTargetId);
+
+ SkynetTransaction transaction = new SkynetTransaction(branch, "Import Validate Change Reports");
+ List<Artifact> artifacts =
+ ArtifactQuery.getArtifactListFromTypeAndName(CoreArtifactTypes.GeneralData, "VCR_%", branch);
+ for (Artifact artifact : artifacts) {
String data = artifact.getSoleAttributeValue(CoreAttributeTypes.GeneralStringData);
- String name = artifact.getName();
- try {
- String dataDbGuid = getDataDbGuid(data);
- if (Strings.isValid(dataDbGuid) || shouldIncludeItemsWithoutDbId) {
- if (databaseTargetId.equals(dataDbGuid) || shouldIncludeItemsWithoutDbId) {
- if (!currentDbGuid.equals(dataDbGuid)) {
- String modified = translateImportedData(data);
- modified = updateSourceGuid(currentDbGuid, modified);
+ String name = artifact.getName();
+ try {
+ String dataDbGuid = getDataDbGuid(data);
+ if (Strings.isValid(dataDbGuid) || shouldIncludeItemsWithoutDbId) {
+ if (databaseTargetId.equals(dataDbGuid) || shouldIncludeItemsWithoutDbId) {
+ if (!currentDbGuid.equals(dataDbGuid)) {
+ String modified = translateImportedData(data);
+ modified = updateSourceGuid(currentDbGuid, modified);
artifact.setSoleAttributeValue(CoreAttributeTypes.GeneralStringData, modified);
- artifact.persist(transaction);
- }
- }
- }
- } catch (Exception ex) {
- throw new OseeCoreException(String.format("Error processing [%s]", name), ex);
- }
- }
- transaction.execute();
- } finally {
- cleanUp();
- }
- }
-
- @Override
- public String getXWidgetsXml() {
- StringBuilder builder = new StringBuilder();
- builder.append("<xWidgets>");
- builder.append("<XWidget xwidgetType=\"XText\" displayName=\"Import Db Id\" defaultValue=\"AAABHL_5XvkAFHT8QsrrPQ\"/>");
- builder.append("<XWidget xwidgetType=\"XCheckBox\" displayName=\"Include items without database id\" labelAfter=\"true\" horizontalLabel=\"true\"/>");
- builder.append("</xWidgets>");
- return builder.toString();
- }
-
- private static boolean isNumerical(String value) {
- boolean result = false;
- if (Strings.isValid(value)) {
- NUMERICAL_MATCH.reset(value);
- result = NUMERICAL_MATCH.matches();
- }
- return result;
- }
-
- private String translateImportedData(String data) {
- ChangeSet changeSet = new ChangeSet(data);
- XML_TAGGED_IDS_MATCHER.reset(data);
- while (XML_TAGGED_IDS_MATCHER.find()) {
- String tag = XML_TAGGED_IDS_MATCHER.group(3);
- tag = tag.toLowerCase().trim();
- String value = XML_TAGGED_IDS_MATCHER.group(2);
- if (isNumerical(value)) {
- long original = Long.parseLong(value);
- long newValue = translate(tag, original);
- if (original != newValue) {
- changeSet.replace(XML_TAGGED_IDS_MATCHER.start(2), XML_TAGGED_IDS_MATCHER.end(2),
- Long.toString(newValue));
- }
- }
- }
- return changeSet.applyChangesToSelf().toString();
- }
-
- private String updateSourceGuid(String currentDbGuid, String data) throws OseeStateException {
- String toReturn = null;
- ChangeSet changeSet = new ChangeSet(data);
- SOURCE_DB_GUID_MATCHER.reset(data);
- if (SOURCE_DB_GUID_MATCHER.find()) {
- String id = SOURCE_DB_GUID_MATCHER.group(1);
- if (!currentDbGuid.equals(id)) {
- changeSet.replace(SOURCE_DB_GUID_MATCHER.start(1), SOURCE_DB_GUID_MATCHER.end(1), currentDbGuid);
- toReturn = changeSet.applyChangesToSelf().toString();
- } else {
- toReturn = data;
- }
- } else {
- if (!data.contains(VCR_ROOT_ELEMENT_TAG)) {
- toReturn =
- String.format("<%s dbGuid=\"%s\">%s</%s>", VCR_ROOT_ELEMENT_TAG, currentDbGuid, data,
- VCR_ROOT_ELEMENT_TAG);
- } else {
- throw new OseeStateException("Error updating dbId");
- }
- }
- return toReturn;
- }
- private static final class ImportedId {
- private static final String SELECT_IDS_BY_DB_SOURCE_AND_SEQ_NAME =
- "SELECT original_id, mapped_id FROM osee_import_source ois, osee_import_map oim, osee_import_index_map oiim WHERE ois.import_id = oim.import_id AND oim.sequence_id = oiim.sequence_id AND oiim.sequence_id = oiim.sequence_id AND ois.db_source_guid = ? AND oim.sequence_name = ?";
-
- private final String sequenceName;
- private final Map<Long, Long> originalToMapped;
- private final Set<String> aliases;
-
- ImportedId(String sequenceName, String... aliases) {
- this.sequenceName = sequenceName;
- this.originalToMapped = new HashMap<Long, Long>();
- this.aliases = new HashSet<String>();
- if (aliases != null && aliases.length > 0) {
- for (String alias : aliases) {
- this.aliases.add(alias.toLowerCase());
- }
- }
- }
-
- public void clear() {
- this.originalToMapped.clear();
- this.aliases.clear();
- }
-
- public Set<String> getAliases() {
- return this.aliases;
- }
-
- public String getSequence() {
- return this.sequenceName;
- }
-
- public Long getFromCache(Long original) {
- Long newVersion = null;
- if (original <= 0L) {
- newVersion = original;
- } else {
- newVersion = this.originalToMapped.get(original);
- }
- return newVersion;
- }
-
- public void load(String sourceDatabaseId) throws OseeDataStoreException {
- IOseeStatement chStmt = ConnectionHandler.getStatement();
- try {
- originalToMapped.clear();
- chStmt.runPreparedQuery(10000, SELECT_IDS_BY_DB_SOURCE_AND_SEQ_NAME, sourceDatabaseId, getSequence());
- while (chStmt.next()) {
- originalToMapped.put(chStmt.getLong("original_id"), chStmt.getLong("mapped_id"));
- }
- } finally {
- chStmt.close();
- }
- }
- }
-
- @Override
- public Collection<String> getCategories() {
- return Arrays.asList("ATS.Admin");
- }
-}
+ artifact.persist(transaction);
+ }
+ }
+ }
+ } catch (Exception ex) {
+ throw new OseeCoreException(String.format("Error processing [%s]", name), ex);
+ }
+ }
+ transaction.execute();
+ } finally {
+ cleanUp();
+ }
+ }
+
+ @Override
+ public String getXWidgetsXml() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("<xWidgets>");
+ builder.append("<XWidget xwidgetType=\"XText\" displayName=\"Import Db Id\" defaultValue=\"AAABHL_5XvkAFHT8QsrrPQ\"/>");
+ builder.append("<XWidget xwidgetType=\"XCheckBox\" displayName=\"Include items without database id\" labelAfter=\"true\" horizontalLabel=\"true\"/>");
+ builder.append("</xWidgets>");
+ return builder.toString();
+ }
+
+ private static boolean isNumerical(String value) {
+ boolean result = false;
+ if (Strings.isValid(value)) {
+ NUMERICAL_MATCH.reset(value);
+ result = NUMERICAL_MATCH.matches();
+ }
+ return result;
+ }
+
+ private String translateImportedData(String data) {
+ ChangeSet changeSet = new ChangeSet(data);
+ XML_TAGGED_IDS_MATCHER.reset(data);
+ while (XML_TAGGED_IDS_MATCHER.find()) {
+ String tag = XML_TAGGED_IDS_MATCHER.group(3);
+ tag = tag.toLowerCase().trim();
+ String value = XML_TAGGED_IDS_MATCHER.group(2);
+ if (isNumerical(value)) {
+ long original = Long.parseLong(value);
+ long newValue = translate(tag, original);
+ if (original != newValue) {
+ changeSet.replace(XML_TAGGED_IDS_MATCHER.start(2), XML_TAGGED_IDS_MATCHER.end(2),
+ Long.toString(newValue));
+ }
+ }
+ }
+ return changeSet.applyChangesToSelf().toString();
+ }
+
+ private String updateSourceGuid(String currentDbGuid, String data) throws OseeStateException {
+ String toReturn = null;
+ ChangeSet changeSet = new ChangeSet(data);
+ SOURCE_DB_GUID_MATCHER.reset(data);
+ if (SOURCE_DB_GUID_MATCHER.find()) {
+ String id = SOURCE_DB_GUID_MATCHER.group(1);
+ if (!currentDbGuid.equals(id)) {
+ changeSet.replace(SOURCE_DB_GUID_MATCHER.start(1), SOURCE_DB_GUID_MATCHER.end(1), currentDbGuid);
+ toReturn = changeSet.applyChangesToSelf().toString();
+ } else {
+ toReturn = data;
+ }
+ } else {
+ if (!data.contains(VCR_ROOT_ELEMENT_TAG)) {
+ toReturn =
+ String.format("<%s dbGuid=\"%s\">%s</%s>", VCR_ROOT_ELEMENT_TAG, currentDbGuid, data,
+ VCR_ROOT_ELEMENT_TAG);
+ } else {
+ throw new OseeStateException("Error updating dbId");
+ }
+ }
+ return toReturn;
+ }
+ private static final class ImportedId {
+ private static final String SELECT_IDS_BY_DB_SOURCE_AND_SEQ_NAME =
+ "SELECT original_id, mapped_id FROM osee_import_source ois, osee_import_map oim, osee_import_index_map oiim WHERE ois.import_id = oim.import_id AND oim.sequence_id = oiim.sequence_id AND oiim.sequence_id = oiim.sequence_id AND ois.db_source_guid = ? AND oim.sequence_name = ?";
+
+ private final String sequenceName;
+ private final Map<Long, Long> originalToMapped;
+ private final Set<String> aliases;
+
+ ImportedId(String sequenceName, String... aliases) {
+ this.sequenceName = sequenceName;
+ this.originalToMapped = new HashMap<Long, Long>();
+ this.aliases = new HashSet<String>();
+ if (aliases != null && aliases.length > 0) {
+ for (String alias : aliases) {
+ this.aliases.add(alias.toLowerCase());
+ }
+ }
+ }
+
+ public void clear() {
+ this.originalToMapped.clear();
+ this.aliases.clear();
+ }
+
+ public Set<String> getAliases() {
+ return this.aliases;
+ }
+
+ public String getSequence() {
+ return this.sequenceName;
+ }
+
+ public Long getFromCache(Long original) {
+ Long newVersion = null;
+ if (original <= 0L) {
+ newVersion = original;
+ } else {
+ newVersion = this.originalToMapped.get(original);
+ }
+ return newVersion;
+ }
+
+ public void load(String sourceDatabaseId) throws OseeDataStoreException {
+ IOseeStatement chStmt = ConnectionHandler.getStatement();
+ try {
+ originalToMapped.clear();
+ chStmt.runPreparedQuery(10000, SELECT_IDS_BY_DB_SOURCE_AND_SEQ_NAME, sourceDatabaseId, getSequence());
+ while (chStmt.next()) {
+ originalToMapped.put(chStmt.getLong("original_id"), chStmt.getLong("mapped_id"));
+ }
+ } finally {
+ chStmt.close();
+ }
+ }
+ }
+
+ @Override
+ public Collection<String> getCategories() {
+ return Arrays.asList("ATS.Admin");
+ }
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/health/ValidateAtsDatabase.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/health/ValidateAtsDatabase.java
index d9da9fe139a..77eb3c0af62 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/health/ValidateAtsDatabase.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/health/ValidateAtsDatabase.java
@@ -1,889 +1,889 @@
-/*******************************************************************************
- * 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.health;
-
-import static org.eclipse.osee.framework.skynet.core.artifact.DeletionFlag.EXCLUDE_DELETED;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.logging.Level;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.osee.ats.AtsOpenOption;
-import org.eclipse.osee.ats.artifact.ATSLog;
-import org.eclipse.osee.ats.artifact.ATSLog.LogType;
-import org.eclipse.osee.ats.artifact.ActionArtifact;
-import org.eclipse.osee.ats.artifact.ActionableItemArtifact;
-import org.eclipse.osee.ats.artifact.AtsAttributeTypes;
-import org.eclipse.osee.ats.artifact.LogItem;
-import org.eclipse.osee.ats.artifact.ReviewSMArtifact;
-import org.eclipse.osee.ats.artifact.StateMachineArtifact;
-import org.eclipse.osee.ats.artifact.TaskArtifact;
-import org.eclipse.osee.ats.artifact.TeamDefinitionArtifact;
-import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact;
-import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact.DefaultTeamState;
-import org.eclipse.osee.ats.artifact.VersionArtifact;
-import org.eclipse.osee.ats.internal.AtsPlugin;
-import org.eclipse.osee.ats.task.TaskEditor;
-import org.eclipse.osee.ats.task.TaskEditorSimpleProvider;
-import org.eclipse.osee.ats.util.AtsArtifactTypes;
-import org.eclipse.osee.ats.util.AtsBranchManager;
-import org.eclipse.osee.ats.util.AtsRelationTypes;
-import org.eclipse.osee.ats.util.AtsUtil;
-import org.eclipse.osee.ats.util.StateManager;
-import org.eclipse.osee.ats.util.widgets.SMAState;
-import org.eclipse.osee.ats.util.widgets.XCurrentStateDam;
-import org.eclipse.osee.ats.util.widgets.XStateDam;
-import org.eclipse.osee.ats.world.WorldXNavigateItemAction;
-import org.eclipse.osee.framework.core.data.SystemUser;
-import org.eclipse.osee.framework.core.enums.BranchArchivedState;
-import org.eclipse.osee.framework.core.enums.BranchState;
-import org.eclipse.osee.framework.core.enums.CoreRelationTypes;
-import org.eclipse.osee.framework.core.exception.BranchDoesNotExist;
-import org.eclipse.osee.framework.core.exception.OseeCoreException;
-import org.eclipse.osee.framework.core.model.Branch;
-import org.eclipse.osee.framework.core.model.type.AttributeType;
-import org.eclipse.osee.framework.jdk.core.type.HashCollection;
-import org.eclipse.osee.framework.jdk.core.util.Collections;
-import org.eclipse.osee.framework.jdk.core.util.Strings;
-import org.eclipse.osee.framework.logging.OseeLog;
-import org.eclipse.osee.framework.logging.SevereLoggingMonitor;
-import org.eclipse.osee.framework.plugin.core.util.Jobs;
-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.Attribute;
-import org.eclipse.osee.framework.skynet.core.artifact.BranchManager;
-import org.eclipse.osee.framework.skynet.core.artifact.search.ArtifactQuery;
-import org.eclipse.osee.framework.skynet.core.attribute.AttributeTypeManager;
-import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction;
-import org.eclipse.osee.framework.skynet.core.utility.Artifacts;
-import org.eclipse.osee.framework.ui.plugin.PluginUiImage;
-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.skynet.results.XResultData;
-import org.eclipse.osee.framework.ui.skynet.util.ElapsedTime;
-import org.eclipse.osee.framework.ui.skynet.util.email.EmailUtil;
-import org.eclipse.osee.framework.ui.skynet.widgets.XDate;
-import org.eclipse.osee.framework.ui.swt.Displays;
-
-/**
- * @author Donald G. Dunne
- */
-public class ValidateAtsDatabase extends WorldXNavigateItemAction {
-
- private boolean fixAssignees = true;
- private boolean fixAttributeValues = true;
- private final Set<String> hrids = new HashSet<String>();
- private final Map<String, String> legacyPcrIdToParentHrid = new HashMap<String, String>();
- private String emailOnComplete = null;
- private static ActionArtifact tempParentAction;
-
- public ValidateAtsDatabase(XNavigateItem parent) {
- this("Validate ATS Database", parent);
- }
-
- public ValidateAtsDatabase(String name, XNavigateItem parent) {
- super(parent, name, PluginUiImage.ADMIN);
- }
-
- @Override
- public void run(TableLoadOption... tableLoadOptions) {
- if (!MessageDialog.openConfirm(Displays.getActiveShell(), getName(), getName())) {
- return;
- }
- Jobs.startJob(new Report(getName()), true);
- }
-
- public void performTaskAndPend() throws InterruptedException {
- Report job = new Report(getName());
- job.setUser(true);
- job.setPriority(Job.LONG);
- job.schedule();
- job.join();
- }
-
- public class Report extends Job {
-
- public Report(String name) {
- super(name);
- }
-
- @Override
- protected IStatus run(IProgressMonitor monitor) {
- try {
- XResultData rd = new XResultData();
- runIt(monitor, rd);
- rd.report(getName());
- if (Strings.isValid(emailOnComplete)) {
- String html = rd.getReport(getName()).getManipulatedHtml();
- EmailUtil.emailHtml(java.util.Collections.singleton(emailOnComplete),
- String.format("Sync - %s [%s]", XDate.getDateNow(), getName()), html);
- }
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- return new Status(IStatus.ERROR, AtsPlugin.PLUGIN_ID, -1, ex.getMessage(), ex);
- }
- monitor.done();
- return Status.OK_STATUS;
- }
- }
-
- private HashCollection<String, String> testNameToResultsMap = null;
-
- public void runIt(IProgressMonitor monitor, XResultData xResultData) throws OseeCoreException {
- SevereLoggingMonitor monitorLog = new SevereLoggingMonitor();
- OseeLog.registerLoggerListener(monitorLog);
-
- int count = 0;
- // Break artifacts into blocks so don't run out of memory
- List<Collection<Integer>> artIdLists = null;
-
- // Un-comment to process whole Common branch - Normal Mode
- ElapsedTime elapsedTime = new ElapsedTime("ValidateAtsDatabase - load ArtIds");
- artIdLists = loadAtsBranchArtifactIds(xResultData, monitor);
- elapsedTime.end();
-
- // Un-comment to process specific artifact from common - Test Mode
- // artIdLists = Arrays.asList((Collection<Integer>) Arrays.asList(new Integer(524575)));
-
- if (monitor != null) {
- monitor.beginTask(getName(), artIdLists.size());
- }
- testNameToResultsMap = new HashCollection<String, String>();
- boolean testingTest = false;
- int y = 0, artSetNum = 1;
- for (Collection<Integer> artIdList : artIdLists) {
- // Don't process all lists if just trying to test this report
- if (y++ > 5 && testingTest) {
- break;
- }
- elapsedTime =
- new ElapsedTime(String.format("ValidateAtsDatabase - load Artifact set %d/%d", artSetNum++,
- artIdLists.size()));
- Collection<Artifact> artifactsTemp = ArtifactQuery.getArtifactListFromIds(artIdList, AtsUtil.getAtsBranch());
- elapsedTime.end();
- Collection<Artifact> artifacts = new ArrayList<Artifact>();
- // Don't process all artifacts if just trying to test this report
- if (testingTest) {
- int x = 0;
- for (Artifact art : artifactsTemp) {
- artifacts.add(art);
- if (x++ > 20) {
- break;
- }
- }
- } else {
- artifacts.addAll(artifactsTemp);
- }
- count += artifacts.size();
- // testArtifactIds(artifacts);
- // testAtsAttributeValues(artifacts);
- // testAtsActionsHaveTeamWorkflow(artifacts);
- // testAtsWorkflowsHaveAction(artifacts);
- // testAtsWorkflowsHaveZeroOrOneVersion(artifacts);
- // testTasksHaveParentWorkflow(artifacts);
- // testReviewsHaveParentWorkflowOrActionableItems(artifacts);
- // testReviewsHaveValidDefectAndRoleXml(artifacts);
- // testTeamWorkflows(artifacts);
- testAtsBranchManager(artifacts);
- // testTeamDefinitions(artifacts);
- // testVersionArtifacts(artifacts);
- // testStateMachineAssignees(artifacts);
- // testAtsLogs(artifacts);
- // testActionableItemToTeamDefinition(artifacts);
- // testTeamDefinitionHasWorkflow(artifacts);
- // for (IAtsHealthCheck atsHealthCheck : AtsHealthCheck.getAtsHealthCheckItems()) {
- // atsHealthCheck.validateAtsDatabase(artifacts, testNameToResultsMap);
- // }
- if (monitor != null) {
- monitor.worked(1);
- }
- }
- // Log resultMap data into xResultData
- String[] keys = testNameToResultsMap.keySet().toArray(new String[testNameToResultsMap.keySet().size()]);
- Arrays.sort(keys);
- for (String testName : keys) {
- xResultData.log(testName);
- for (String result : testNameToResultsMap.getValues(testName)) {
- xResultData.log(result);
- }
- }
- xResultData.reportSevereLoggingMonitor(monitorLog);
- if (monitor != null) {
- xResultData.log(monitor, "Completed processing " + count + " artifacts.");
- }
- }
-
- private void testArtifactIds(Collection<Artifact> artifacts) {
- this.hrids.clear();
- this.legacyPcrIdToParentHrid.clear();
- for (Artifact artifact : artifacts) {
- try {
- // Check that HRIDs not duplicated on Common branch
- if (hrids.contains(artifact.getHumanReadableId())) {
- testNameToResultsMap.put("testArtifactIds",
- "Error: Duplicate HRIDs: " + XResultData.getHyperlink(artifact));
- }
- // Check that duplicate Legacy PCR IDs team arts do not exist with different parent actions
- if (artifact instanceof TeamWorkFlowArtifact) {
- TeamWorkFlowArtifact teamArt = (TeamWorkFlowArtifact) artifact;
- String legacyPcrId = artifact.getSoleAttributeValueAsString(AtsAttributeTypes.LegacyPcrId, null);
- if (legacyPcrId != null) {
- if (legacyPcrIdToParentHrid.containsKey(legacyPcrId)) {
- if (!legacyPcrIdToParentHrid.get(legacyPcrId).equals(
- teamArt.getParentActionArtifact().getHumanReadableId())) {
- testNameToResultsMap.put("testArtifactIds",
- "Error: Duplicate Legacy PCR Ids in Different Actions: " + legacyPcrId);
- }
- } else {
- legacyPcrIdToParentHrid.put(legacyPcrId, teamArt.getParentActionArtifact().getHumanReadableId());
- }
- }
- }
- } catch (Exception ex) {
- testNameToResultsMap.put(
- "testArtifactIds",
- "Error: " + artifact.getArtifactTypeName() + " " + XResultData.getHyperlink(artifact) + " exception: " + ex.getLocalizedMessage());
- }
- }
- }
-
- private void testVersionArtifacts(Collection<Artifact> artifacts) {
- for (Artifact artifact : artifacts) {
- if (artifact instanceof VersionArtifact) {
- VersionArtifact verArt = (VersionArtifact) artifact;
- try {
- String parentBranchGuid =
- verArt.getSoleAttributeValueAsString(AtsAttributeTypes.BaselineBranchGuid, null);
- if (parentBranchGuid != null) {
- validateBranchGuid(verArt, parentBranchGuid);
- }
- } catch (Exception ex) {
- testNameToResultsMap.put(
- "testVersionArtifacts",
- "Error: " + verArt.getArtifactTypeName() + " " + XResultData.getHyperlink(verArt) + " exception testing testVersionArtifacts: " + ex.getLocalizedMessage());
- }
- }
- }
- }
-
- private void testTeamDefinitions(Collection<Artifact> artifacts) {
- for (Artifact art : artifacts) {
- if (art instanceof TeamDefinitionArtifact) {
- TeamDefinitionArtifact teamDef = (TeamDefinitionArtifact) art;
- try {
- String parentBranchGuid =
- teamDef.getSoleAttributeValueAsString(AtsAttributeTypes.BaselineBranchGuid, null);
- if (parentBranchGuid != null) {
- validateBranchGuid(teamDef, parentBranchGuid);
- }
- } catch (Exception ex) {
- testNameToResultsMap.put(
- "testTeamDefinitionss",
- "Error: " + teamDef.getArtifactTypeName() + " " + XResultData.getHyperlink(teamDef) + " exception testing testTeamDefinitions: " + ex.getLocalizedMessage());
- }
- }
- }
- }
-
- private void testTeamWorkflows(Collection<Artifact> artifacts) {
- for (Artifact art : artifacts) {
- if (art instanceof TeamWorkFlowArtifact) {
- TeamWorkFlowArtifact teamArt = (TeamWorkFlowArtifact) art;
- try {
- if (teamArt.getActionableItemsDam().getActionableItems().isEmpty()) {
- testNameToResultsMap.put("testTeamWorkflows",
- "Error: TeamWorkflow " + XResultData.getHyperlink(teamArt) + " has 0 ActionableItems");
- }
- if (teamArt.getTeamDefinition() == null) {
- testNameToResultsMap.put("testTeamWorkflows",
- "Error: TeamWorkflow " + XResultData.getHyperlink(teamArt) + " has no TeamDefinition");
- }
- } catch (Exception ex) {
- testNameToResultsMap.put(
- "testTeamWorkflows",
- teamArt.getArtifactTypeName() + " " + XResultData.getHyperlink(teamArt) + " exception: " + ex.getLocalizedMessage());
- }
- }
- }
- }
-
- private void testAtsBranchManager(Collection<Artifact> artifacts) {
- for (Artifact art : artifacts) {
- if (art instanceof TeamWorkFlowArtifact) {
- TeamWorkFlowArtifact teamArt = (TeamWorkFlowArtifact) art;
- AtsBranchManager mgr = teamArt.getBranchMgr();
- try {
- Collection<Branch> branchesCommittedTo = mgr.getBranchesCommittedTo();
- Branch workingBranch = mgr.getWorkingBranch();
- if (workingBranch != null && branchesCommittedTo.size() > 0 && workingBranch.getBranchState() != BranchState.COMMITTED) {
- testNameToResultsMap.put(
- "testAtsBranchManagerA",
- "Error: TeamWorkflow " + XResultData.getHyperlink(teamArt) + " has committed branches but working branch [" + workingBranch.getGuid() + "] != COMMITTED");
- }
- if (workingBranch != null && workingBranch.getBranchState() == BranchState.COMMITTED && workingBranch.getArchiveState() == BranchArchivedState.UNARCHIVED) {
- String fixStr = "";
- if (teamArt.isCompleted()) {
- fixStr = " - Fix: Workflow Completed, Branch can be Archived";
- } else {
- fixStr = " - Workflow not completed, verify manually";
- }
- testNameToResultsMap.put(
- "testAtsBranchManagerB",
- "Error: TeamWorkflow " + XResultData.getHyperlink(teamArt) + " has committed working branch [" + workingBranch.getGuid() + "] but not archived" + fixStr);
- }
- } catch (Exception ex) {
- testNameToResultsMap.put(
- "testAtsBranchManager",
- teamArt.getArtifactTypeName() + " " + XResultData.getHyperlink(teamArt) + " exception: " + ex.getLocalizedMessage());
- }
- }
- }
- }
-
- private void validateBranchGuid(Artifact artifact, String parentBranchGuid) {
- try {
- Branch branch = BranchManager.getBranchByGuid(parentBranchGuid);
- if (branch.getArchiveState().isArchived()) {
- testNameToResultsMap.put("validateBranchGuid", String.format(
- "Error: Parent Branch Id [%s][%s] can't be Archived branch for [%s][%s]", parentBranchGuid, branch,
- artifact.getHumanReadableId(), artifact));
- } else if (branch.getBranchType().isWorkingBranch()) {
- testNameToResultsMap.put(
- "validateBranchGuid",
- String.format(
- "Error: Parent Branch [%s][%s] is WORKING branch and can't be parent branch for [%s][%s]; Switch to BASELINE?",
- parentBranchGuid, branch, artifact.getHumanReadableId(), artifact));
- } else if (!branch.getBranchType().isBaselineBranch()) {
- testNameToResultsMap.put("validateBranchGuid", String.format(
- "Error: Parent Branch Id [%s][%s] must be Baseline branch for [%s][%s]", parentBranchGuid, branch,
- artifact.getHumanReadableId(), artifact));
- }
- } catch (BranchDoesNotExist ex) {
- testNameToResultsMap.put("validateBranchGuid", String.format(
- "Error: Parent Branch Id [%s] references non-existant branch for [%s][%s]", parentBranchGuid,
- artifact.getHumanReadableId(), artifact));
- } catch (Exception ex) {
- testNameToResultsMap.put(
- "validateBranchGuid",
- "Error: " + artifact.getArtifactTypeName() + " " + XResultData.getHyperlink(artifact) + " exception: " + ex.getLocalizedMessage());
- }
- }
-
- public static List<Collection<Integer>> loadAtsBranchArtifactIds(XResultData xResultData, IProgressMonitor monitor) throws OseeCoreException {
- if (xResultData == null) {
- xResultData = new XResultData();
- }
- xResultData.log(monitor, "testLoadAllCommonArtifactIds - Started " + XDate.getDateNow(XDate.MMDDYYHHMM));
- List<Integer> artIds = ArtifactQuery.selectArtifactListFromBranch(AtsUtil.getAtsBranch(), EXCLUDE_DELETED);
-
- if (artIds.isEmpty()) {
- xResultData.logError("Error: Artifact load returned 0 artifacts to check");
- }
- xResultData.log(monitor, "testLoadAllCommonArtifactIds - Completed " + XDate.getDateNow(XDate.MMDDYYHHMM));
- return Collections.subDivide(artIds, 5000);
- }
-
- private void testAtsAttributeValues(Collection<Artifact> artifacts) {
- try {
- SkynetTransaction transaction = new SkynetTransaction(AtsUtil.getAtsBranch(), "Validate ATS Database");
- for (Artifact artifact : artifacts) {
-
- try {
- // Test for null attribute values
- for (Attribute<?> attr : artifact.getAttributes()) {
- if (attr.getValue() == null) {
- testNameToResultsMap.put(
- "testAtsAttributeValues",
- "Error: Artifact: " + XResultData.getHyperlink(artifact) + " Types: " + artifact.getArtifactTypeName() + " - Null Attribute");
- if (fixAttributeValues) {
- attr.delete();
- }
- }
- }
-
- if (artifact instanceof StateMachineArtifact) {
- checkAndResolveDuplicateAttributesForAttributeNameContains("ats", artifact, fixAttributeValues,
- testNameToResultsMap, transaction);
- }
-
- // Test for ats.State Completed;;;<num> or Cancelled;;;<num> and cleanup
- if (artifact instanceof StateMachineArtifact) {
- XStateDam stateDam = new XStateDam((StateMachineArtifact) artifact);
- for (SMAState state : stateDam.getStates()) {
- if (state.getName().equals(DefaultTeamState.Completed.name()) || state.getName().equals(
- DefaultTeamState.Cancelled.name())) {
- if (state.getHoursSpent() != 0.0 || state.getPercentComplete() != 0) {
- testNameToResultsMap.put(
- "testAtsAttributeValues",
- "Error: ats.State error for SMA: " + XResultData.getHyperlink(artifact) + " State: " + state.getName() + " Hours Spent: " + state.getHoursSpentStr() + " Percent: " + state.getPercentComplete());
- if (fixAttributeValues) {
- state.setHoursSpent(0);
- state.setPercentComplete(0);
- stateDam.setState(state);
- testNameToResultsMap.put("testAtsAttributeValues", "Fixed");
- }
- }
- }
- }
- }
-
- // Test for ats.CurrentState Completed;;;<num> or Cancelled;;;<num> and cleanup
- if (artifact instanceof StateMachineArtifact) {
- XCurrentStateDam currentStateDam = new XCurrentStateDam((StateMachineArtifact) artifact);
- SMAState state = currentStateDam.getState();
- if (state.getName().equals(DefaultTeamState.Completed.name()) || state.getName().equals(
- DefaultTeamState.Cancelled.name())) {
- if (state.getHoursSpent() != 0.0 || state.getPercentComplete() != 0) {
- testNameToResultsMap.put(
- "testAtsAttributeValues",
- "Error: ats.CurrentState error for SMA: " + XResultData.getHyperlink(artifact) + " State: " + state.getName() + " Hours Spent: " + state.getHoursSpentStr() + " Percent: " + state.getPercentComplete());
- if (fixAttributeValues) {
- state.setHoursSpent(0);
- state.setPercentComplete(0);
- currentStateDam.setState(state);
- testNameToResultsMap.put("testAtsAttributeValues", "Fixed");
- }
- }
- }
- }
- if (artifact.hasDirtyAttributes()) {
- artifact.persist(transaction);
- }
- } catch (OseeCoreException ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- testNameToResultsMap.put("testAtsAttributeValues",
- "Error: Artifact: " + XResultData.getHyperlink(artifact) + " Exception: " + ex.getLocalizedMessage());
- }
- }
- transaction.execute();
- } catch (OseeCoreException ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- testNameToResultsMap.put("testAtsAttributeValues", "Error: Exception: " + ex.getLocalizedMessage());
- }
- }
-
- public static void checkAndResolveDuplicateAttributesForAttributeNameContains(String nameContainsStr, Artifact artifact, boolean fixAttributeValues, HashCollection<String, String> resultsMap, SkynetTransaction transaction) throws OseeCoreException {
- for (AttributeType attrType : AttributeTypeManager.getAllTypes()) {
- if (attrType.getName().contains(nameContainsStr)) {
- int count = artifact.getAttributeCount(attrType);
- if (count > attrType.getMaxOccurrences()) {
- String result =
- String.format(
- "Error: Artifact: " + XResultData.getHyperlink(artifact) + " Type [%s] AttrType [%s] Max [%d] Actual [%d] Values [%s] ",
- artifact.getArtifactTypeName(), attrType.getName(), attrType.getMaxOccurrences(), count,
- artifact.getAttributesToString(attrType));
- Map<String, Attribute<?>> valuesAttrMap = new HashMap<String, Attribute<?>>();
- int latestGamma = 0;
- String fixInfo = " - FIX AVAILABLE";
- for (Attribute<?> attr : artifact.getAttributes(attrType)) {
- if (attr.getGammaId() > latestGamma) {
- latestGamma = attr.getGammaId();
- }
- String info = String.format("[Gamma [%s] Value [%s]]", attr.getGammaId(), attr.getValue());
- valuesAttrMap.put(info, attr);
- fixInfo += info;
- }
- fixInfo += " - KEEP Gamma" + latestGamma;
- if (latestGamma != 0) {
- result += fixInfo;
- if (fixAttributeValues) {
- for (Attribute<?> attr : artifact.getAttributes(attrType)) {
- if (attr.getGammaId() != latestGamma) {
- attr.delete();
- }
- }
- artifact.persist(transaction);
- resultsMap.put("checkAndResolveDuplicateAttributesForAttributeNameContains", "Fixed");
- }
- }
- resultsMap.put("checkAndResolveDuplicateAttributesForAttributeNameContains", result);
- }
- }
- }
- }
-
- private void testAtsActionsHaveTeamWorkflow(Collection<Artifact> artifacts) {
- for (Artifact artifact : artifacts) {
- try {
- if (artifact instanceof ActionArtifact) {
- if (((ActionArtifact) artifact).getTeamWorkFlowArtifacts().isEmpty()) {
- testNameToResultsMap.put("testAtsActionsHaveTeamWorkflow",
- "Error: Action " + XResultData.getHyperlink(artifact) + " has no Team Workflows\n");
- }
- }
- } catch (OseeCoreException ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- testNameToResultsMap.put("testAtsActionsHaveTeamWorkflow", "Error: Exception: " + ex.getLocalizedMessage());
- }
- }
- }
-
- private void testAtsWorkflowsHaveAction(Collection<Artifact> artifacts) {
- for (Artifact artifact : artifacts) {
- try {
- if (artifact instanceof TeamWorkFlowArtifact) {
- boolean noParent = false;
- try {
- if (((TeamWorkFlowArtifact) artifact).getParentActionArtifact() == null) {
- testNameToResultsMap.put("testAtsWorkflowsHaveAction",
- "Error: Team " + XResultData.getHyperlink(artifact) + " has no parent Action\n");
- noParent = true;
- }
- } catch (Exception ex) {
- testNameToResultsMap.put("testAtsWorkflowsHaveAction",
- "Error: Team " + XResultData.getHyperlink(artifact) + " has no parent Action: exception " + ex);
- noParent = true;
- }
- // Create temporary action so these can be either purged or re-assigned
- if (noParent) {
- if (tempParentAction == null) {
- tempParentAction =
- (ActionArtifact) ArtifactTypeManager.addArtifact(AtsArtifactTypes.Action,
- AtsUtil.getAtsBranch());
- tempParentAction.setName("Temp Parent Action");
- testNameToResultsMap.put(
- "testAtsWorkflowsHaveAction",
- "Error: Temp Parent Action " + XResultData.getHyperlink(tempParentAction) + " created for orphaned teams.");
-
- }
- tempParentAction.addRelation(AtsRelationTypes.ActionToWorkflow_WorkFlow, artifact);
- tempParentAction.persist();
- }
- }
- } catch (OseeCoreException ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- testNameToResultsMap.put("testAtsWorkflowsHaveAction", "Error: Exception: " + ex.getLocalizedMessage());
- }
- }
- if (tempParentAction != null) {
- AtsUtil.openATSAction(tempParentAction, AtsOpenOption.AtsWorld);
- }
- }
-
- private void testAtsWorkflowsHaveZeroOrOneVersion(Collection<Artifact> artifacts) {
- for (Artifact artifact : artifacts) {
- try {
- if (artifact instanceof TeamWorkFlowArtifact) {
- TeamWorkFlowArtifact teamArt = (TeamWorkFlowArtifact) artifact;
- if (teamArt.getRelatedArtifacts(AtsRelationTypes.TeamWorkflowTargetedForVersion_Version).size() > 1) {
- testNameToResultsMap.put(
- "testAtsWorkflowsHaveZeroOrOneVersion",
- "Error: Team workflow " + XResultData.getHyperlink(teamArt) + " has " + teamArt.getRelatedArtifacts(
- AtsRelationTypes.TeamWorkflowTargetedForVersion_Version).size() + " versions");
- }
- }
- } catch (OseeCoreException ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- testNameToResultsMap.put("testAtsWorkflowsHaveZeroOrOneVersion",
- "Error: Exception: " + ex.getLocalizedMessage());
- }
- }
-
- }
-
- private void testTasksHaveParentWorkflow(Collection<Artifact> artifacts) {
- Set<Artifact> badTasks = new HashSet<Artifact>(30);
- for (Artifact artifact : artifacts) {
- try {
- if (artifact instanceof TaskArtifact) {
- TaskArtifact taskArtifact = (TaskArtifact) artifact;
- if (taskArtifact.getRelatedArtifacts(AtsRelationTypes.SmaToTask_Sma).size() != 1) {
- testNameToResultsMap.put(
- "testTasksHaveParentWorkflow",
- "Error: Task " + XResultData.getHyperlink(taskArtifact) + " has " + taskArtifact.getRelatedArtifacts(
- AtsRelationTypes.SmaToTask_Sma).size() + " parents.");
- badTasks.add(taskArtifact);
- }
- }
- } catch (OseeCoreException ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- testNameToResultsMap.put("testTasksHaveParentWorkflow", "Error: Exception: " + ex.getLocalizedMessage());
- }
- }
- try {
- if (badTasks.size() > 0) {
- TaskEditor.open(new TaskEditorSimpleProvider("ValidateATSDatabase: Tasks have !=1 parent workflows.",
- badTasks));
- }
- } catch (OseeCoreException ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- testNameToResultsMap.put("testTasksHaveParentWorkflow", "Error: Exception: " + ex.getLocalizedMessage());
- }
- }
-
- private void testActionableItemToTeamDefinition(Collection<Artifact> artifacts) {
- for (Artifact artifact : artifacts) {
- try {
- if (artifact instanceof ActionableItemArtifact) {
- ActionableItemArtifact aia = (ActionableItemArtifact) artifact;
- if (aia.isActionable()) {
- if (TeamDefinitionArtifact.getImpactedTeamDefs(Arrays.asList(aia)).isEmpty()) {
- testNameToResultsMap.put(
- "testActionableItemToTeamDefinition",
- "Error: ActionableItem " + XResultData.getHyperlink(artifact.getName(), artifact) + " has to related TeamDefinition and is set to Actionable");
- }
- }
- }
- } catch (OseeCoreException ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- testNameToResultsMap.put("testActionableItemToTeamDefinition",
- "Error: Exception: " + ex.getLocalizedMessage());
- }
- }
- }
-
- private void testTeamDefinitionHasWorkflow(Collection<Artifact> artifacts) {
- for (Artifact artifact : artifacts) {
- try {
- if (artifact instanceof TeamDefinitionArtifact) {
- TeamDefinitionArtifact teamDef = (TeamDefinitionArtifact) artifact;
- if (teamDef.isActionable() && teamDef.getWorkFlowDefinition() == null) {
- testNameToResultsMap.put(
- "testTeamDefinitionHasWorkflow",
- "Error: TeamDefintion " + XResultData.getHyperlink(artifact.getName(), artifact) + " has no related workflow and is set to Actionable");
- }
- }
- } catch (OseeCoreException ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- testNameToResultsMap.put("testTeamDefinitionHasWorkflow", "Error: Exception: " + ex.getLocalizedMessage());
- }
- }
- }
-
- private void testReviewsHaveValidDefectAndRoleXml(Collection<Artifact> artifacts) {
- for (Artifact artifact : artifacts) {
- if (artifact instanceof ReviewSMArtifact) {
- ReviewSMArtifact reviewArtifact = (ReviewSMArtifact) artifact;
- try {
- if (reviewArtifact.getAttributes(AtsAttributeTypes.ReviewDefect).size() > 0 && reviewArtifact.getDefectManager().getDefectItems().isEmpty()) {
- testNameToResultsMap.put(
- "testReviewsHaveValidDefectAndRoleXml",
- "Error: Review " + XResultData.getHyperlink(reviewArtifact) + " has defect attribute, but no defects (xml parsing error).");
- }
- if (reviewArtifact.getAttributes(AtsAttributeTypes.Role).size() > 0 && reviewArtifact.getUserRoleManager().getUserRoles().isEmpty()) {
- testNameToResultsMap.put(
- "testReviewsHaveValidDefectAndRoleXml",
- "Error: Review " + XResultData.getHyperlink(reviewArtifact) + " has role attribute, but no roles (xml parsing error).");
- }
- } catch (OseeCoreException ex) {
- testNameToResultsMap.put(
- "testReviewsHaveValidDefectAndRoleXml",
- "Error: Exception processing Review " + XResultData.getHyperlink(reviewArtifact) + " defect test " + ex.getLocalizedMessage());
- }
- }
- }
- }
-
- private void testReviewsHaveParentWorkflowOrActionableItems(Collection<Artifact> artifacts) {
- for (Artifact artifact : artifacts) {
- try {
- if (artifact instanceof ReviewSMArtifact) {
- ReviewSMArtifact reviewArtifact = (ReviewSMArtifact) artifact;
- if (reviewArtifact.getRelatedArtifacts(AtsRelationTypes.TeamWorkflowToReview_Team).isEmpty() && reviewArtifact.getActionableItemsDam().getActionableItemGuids().isEmpty()) {
- testNameToResultsMap.put(
- "testReviewsHaveParentWorkflowOrActionableItems",
- "Error: Review " + XResultData.getHyperlink(reviewArtifact) + " has 0 related parents and 0 actionable items.");
- }
- }
- } catch (OseeCoreException ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- testNameToResultsMap.put("testTeamDefinitionHasWorkflow", "Error: Exception: " + ex.getLocalizedMessage());
- }
- }
- }
-
- private void testAtsLogs(Collection<Artifact> artifacts) {
- for (Artifact art : artifacts) {
- if (art instanceof StateMachineArtifact) {
- StateMachineArtifact sma = (StateMachineArtifact) art;
- try {
- ATSLog log = sma.getLog();
- if (log.getOriginator() == null) {
- try {
- testNameToResultsMap.put(
- "testAtsLogs",
- "Error: " + sma.getArtifactTypeName() + " " + XResultData.getHyperlink(sma) + " originator == null");
- } catch (Exception ex) {
- testNameToResultsMap.put(
- "testAtsLogs",
- "Error: " + sma.getArtifactTypeName() + " " + XResultData.getHyperlink(sma) + " exception accessing originator: " + ex.getLocalizedMessage());
- }
- }
- for (String stateName : Arrays.asList("Completed", "Cancelled")) {
- if (sma.getStateMgr().getCurrentStateName().equals(stateName)) {
- LogItem logItem = log.getStateEvent(LogType.StateEntered, stateName);
- if (logItem == null) {
- try {
- testNameToResultsMap.put(
- "testAtsLogs",
- "Error: " + sma.getArtifactTypeName() + " " + XResultData.getHyperlink(sma) + " state \"" + stateName + "\" logItem == null");
- } catch (Exception ex) {
- testNameToResultsMap.put(
- "testAtsLogs",
- "Error: " + sma.getArtifactTypeName() + " " + XResultData.getHyperlink(sma) + " exception accessing logItem: " + ex.getLocalizedMessage());
-
- }
- }
- if (logItem.getDate() == null) {
- try {
- testNameToResultsMap.put(
- "testAtsLogs",
- "Error: " + sma.getArtifactTypeName() + " " + XResultData.getHyperlink(sma) + " state \"" + stateName + "\" logItem.date == null");
- } catch (Exception ex) {
- testNameToResultsMap.put(
- "testAtsLogs",
- "Error: " + sma.getArtifactTypeName() + " " + XResultData.getHyperlink(sma) + " exception accessing logItem.date: " + ex.getLocalizedMessage());
-
- }
- }
- }
- }
- // Generate html log which will exercise all the conversions
- log.getHtml();
- // Verify that all users are resolved
- for (LogItem logItem : sma.getLog().getLogItems()) {
- if (logItem.getUser() == null) {
- testNameToResultsMap.put(
- "testAtsLogs",
- "Error: " + sma.getArtifactTypeName() + " " + XResultData.getHyperlink(sma) + " user == null for userId \"" + logItem.getUserId() + "\"");
- }
- }
- } catch (Exception ex) {
- testNameToResultsMap.put(
- "testAtsLogs",
- "Error: " + sma.getArtifactTypeName() + " " + XResultData.getHyperlink(sma) + " exception accessing AtsLog: " + ex.getLocalizedMessage());
- }
- }
- }
- }
-
- private static User unAssignedUser;
- private static User oseeSystemUser;
-
- private void testStateMachineAssignees(Collection<Artifact> artifacts) {
- if (unAssignedUser == null) {
- try {
- unAssignedUser = UserManager.getUser(SystemUser.UnAssigned);
- oseeSystemUser = UserManager.getUser(SystemUser.OseeSystem);
- } catch (OseeCoreException ex) {
- testNameToResultsMap.put("testStateMachineAssignees",
- "Error: Exception retrieving users: " + ex.getLocalizedMessage());
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
- }
- for (Artifact art : artifacts) {
- if (art instanceof StateMachineArtifact) {
- try {
- StateMachineArtifact sma = (StateMachineArtifact) art;
- if ((sma.isCompleted() || sma.isCancelled()) && sma.getStateMgr().getAssignees().size() > 0) {
- testNameToResultsMap.put(
- "testStateMachineAssignees",
- "Error: " + sma.getArtifactTypeName() + " " + XResultData.getHyperlink(sma) + " cancel/complete with attribute assignees");
- if (fixAssignees) {
- sma.getStateMgr().clearAssignees();
- sma.persist();
- testNameToResultsMap.put("testStateMachineAssignees", "Fixed");
- }
- }
- if (sma.getStateMgr().getAssignees().size() > 1 && sma.getStateMgr().getAssignees().contains(
- unAssignedUser)) {
- testNameToResultsMap.put(
- "testStateMachineAssignees",
- "Error: " + sma.getArtifactTypeName() + " " + XResultData.getHyperlink(sma) + " is unassigned and assigned => " + Artifacts.toString(
- "; ", sma.getStateMgr().getAssignees()));
- if (fixAssignees) {
- sma.getStateMgr().removeAssignee(unAssignedUser);
- testNameToResultsMap.put("testStateMachineAssignees", "Fixed");
- }
- }
- if (sma.getStateMgr().getAssignees().contains(oseeSystemUser)) {
- testNameToResultsMap.put(
- "testStateMachineAssignees",
- "Error: " + art.getHumanReadableId() + " is assigned to OseeSystem; invalid assignment - MANUAL FIX REQUIRED");
- }
- if (!sma.isCompleted() && !sma.isCancelled() && sma.getStateMgr().getAssignees().isEmpty()) {
- testNameToResultsMap.put(
- "testStateMachineAssignees",
- "Error: " + sma.getArtifactTypeName() + " " + XResultData.getHyperlink(sma) + " In Work without assignees");
- }
- List<Artifact> relationAssigned = art.getRelatedArtifacts(CoreRelationTypes.Users_User, Artifact.class);
- if ((sma.isCompleted() || sma.isCancelled()) && relationAssigned.size() > 0) {
- testNameToResultsMap.put(
- "testStateMachineAssignees (remove after 0.9.5)",
- "Error: " + sma.getArtifactTypeName() + " " + XResultData.getHyperlink(sma) + " cancel/complete with related assignees");
- if (fixAssignees) {
- try {
- StateManager.updateAssigneeRelations(sma);
- art.persist();
- } catch (OseeCoreException ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
- testNameToResultsMap.put("testStateMachineAssignees", "Fixed");
- }
- } else if (sma.getStateMgr().getAssignees().size() != relationAssigned.size()) {
- // Make sure this isn't just an UnAssigned user issue (don't relate to unassigned user anymore)
- if (!(sma.getStateMgr().getAssignees().contains(UserManager.getUser(SystemUser.UnAssigned)) && relationAssigned.isEmpty())) {
- testNameToResultsMap.put(
- "testStateMachineAssignees",
- "Error: " + sma.getArtifactTypeName() + " " + XResultData.getHyperlink(sma) + " attribute assignees doesn't match related assignees");
- if (fixAssignees) {
- try {
- StateManager.updateAssigneeRelations(sma);
- art.persist();
- } catch (OseeCoreException ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
- testNameToResultsMap.put("testStateMachineAssignees", "Fixed");
- }
- }
- }
- } catch (OseeCoreException ex) {
- testNameToResultsMap.put("testStateMachineAssignees",
- "Error: Exception testing assignees: " + ex.getLocalizedMessage());
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
- }
- }
- }
-
- /**
- * @param fixAssignees the fixAssignees to set
- */
- public void setFixAssignees(boolean fixAssignees) {
- this.fixAssignees = fixAssignees;
- }
-
- /**
- * @param fixAttributeValues the fixAttributeValues to set
- */
- public void setFixAttributeValues(boolean fixAttributeValues) {
- this.fixAttributeValues = fixAttributeValues;
- }
-
- /**
- * set to email if desire email on completion
- */
- public void setEmailOnComplete(String emailOnComplete) {
- this.emailOnComplete = emailOnComplete;
- }
-
-}
+/*******************************************************************************
+ * 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.health;
+
+import static org.eclipse.osee.framework.skynet.core.artifact.DeletionFlag.EXCLUDE_DELETED;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.logging.Level;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.osee.ats.AtsOpenOption;
+import org.eclipse.osee.ats.artifact.ATSLog;
+import org.eclipse.osee.ats.artifact.ATSLog.LogType;
+import org.eclipse.osee.ats.artifact.ActionArtifact;
+import org.eclipse.osee.ats.artifact.ActionableItemArtifact;
+import org.eclipse.osee.ats.artifact.AtsAttributeTypes;
+import org.eclipse.osee.ats.artifact.LogItem;
+import org.eclipse.osee.ats.artifact.ReviewSMArtifact;
+import org.eclipse.osee.ats.artifact.StateMachineArtifact;
+import org.eclipse.osee.ats.artifact.TaskArtifact;
+import org.eclipse.osee.ats.artifact.TeamDefinitionArtifact;
+import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact;
+import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact.DefaultTeamState;
+import org.eclipse.osee.ats.artifact.VersionArtifact;
+import org.eclipse.osee.ats.internal.AtsPlugin;
+import org.eclipse.osee.ats.task.TaskEditor;
+import org.eclipse.osee.ats.task.TaskEditorSimpleProvider;
+import org.eclipse.osee.ats.util.AtsArtifactTypes;
+import org.eclipse.osee.ats.util.AtsBranchManager;
+import org.eclipse.osee.ats.util.AtsRelationTypes;
+import org.eclipse.osee.ats.util.AtsUtil;
+import org.eclipse.osee.ats.util.StateManager;
+import org.eclipse.osee.ats.util.widgets.SMAState;
+import org.eclipse.osee.ats.util.widgets.XCurrentStateDam;
+import org.eclipse.osee.ats.util.widgets.XStateDam;
+import org.eclipse.osee.ats.world.WorldXNavigateItemAction;
+import org.eclipse.osee.framework.core.data.SystemUser;
+import org.eclipse.osee.framework.core.enums.BranchArchivedState;
+import org.eclipse.osee.framework.core.enums.BranchState;
+import org.eclipse.osee.framework.core.enums.CoreRelationTypes;
+import org.eclipse.osee.framework.core.exception.BranchDoesNotExist;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.core.model.Branch;
+import org.eclipse.osee.framework.core.model.type.AttributeType;
+import org.eclipse.osee.framework.jdk.core.type.HashCollection;
+import org.eclipse.osee.framework.jdk.core.util.Collections;
+import org.eclipse.osee.framework.jdk.core.util.Strings;
+import org.eclipse.osee.framework.logging.OseeLog;
+import org.eclipse.osee.framework.logging.SevereLoggingMonitor;
+import org.eclipse.osee.framework.plugin.core.util.Jobs;
+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.Attribute;
+import org.eclipse.osee.framework.skynet.core.artifact.BranchManager;
+import org.eclipse.osee.framework.skynet.core.artifact.search.ArtifactQuery;
+import org.eclipse.osee.framework.skynet.core.attribute.AttributeTypeManager;
+import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction;
+import org.eclipse.osee.framework.skynet.core.utility.Artifacts;
+import org.eclipse.osee.framework.ui.plugin.PluginUiImage;
+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.skynet.results.XResultData;
+import org.eclipse.osee.framework.ui.skynet.util.ElapsedTime;
+import org.eclipse.osee.framework.ui.skynet.util.email.EmailUtil;
+import org.eclipse.osee.framework.ui.skynet.widgets.XDate;
+import org.eclipse.osee.framework.ui.swt.Displays;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class ValidateAtsDatabase extends WorldXNavigateItemAction {
+
+ private boolean fixAssignees = true;
+ private boolean fixAttributeValues = true;
+ private final Set<String> hrids = new HashSet<String>();
+ private final Map<String, String> legacyPcrIdToParentHrid = new HashMap<String, String>();
+ private String emailOnComplete = null;
+ private static ActionArtifact tempParentAction;
+
+ public ValidateAtsDatabase(XNavigateItem parent) {
+ this("Validate ATS Database", parent);
+ }
+
+ public ValidateAtsDatabase(String name, XNavigateItem parent) {
+ super(parent, name, PluginUiImage.ADMIN);
+ }
+
+ @Override
+ public void run(TableLoadOption... tableLoadOptions) {
+ if (!MessageDialog.openConfirm(Displays.getActiveShell(), getName(), getName())) {
+ return;
+ }
+ Jobs.startJob(new Report(getName()), true);
+ }
+
+ public void performTaskAndPend() throws InterruptedException {
+ Report job = new Report(getName());
+ job.setUser(true);
+ job.setPriority(Job.LONG);
+ job.schedule();
+ job.join();
+ }
+
+ public class Report extends Job {
+
+ public Report(String name) {
+ super(name);
+ }
+
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ try {
+ XResultData rd = new XResultData();
+ runIt(monitor, rd);
+ rd.report(getName());
+ if (Strings.isValid(emailOnComplete)) {
+ String html = rd.getReport(getName()).getManipulatedHtml();
+ EmailUtil.emailHtml(java.util.Collections.singleton(emailOnComplete),
+ String.format("Sync - %s [%s]", XDate.getDateNow(), getName()), html);
+ }
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ return new Status(IStatus.ERROR, AtsPlugin.PLUGIN_ID, -1, ex.getMessage(), ex);
+ }
+ monitor.done();
+ return Status.OK_STATUS;
+ }
+ }
+
+ private HashCollection<String, String> testNameToResultsMap = null;
+
+ public void runIt(IProgressMonitor monitor, XResultData xResultData) throws OseeCoreException {
+ SevereLoggingMonitor monitorLog = new SevereLoggingMonitor();
+ OseeLog.registerLoggerListener(monitorLog);
+
+ int count = 0;
+ // Break artifacts into blocks so don't run out of memory
+ List<Collection<Integer>> artIdLists = null;
+
+ // Un-comment to process whole Common branch - Normal Mode
+ ElapsedTime elapsedTime = new ElapsedTime("ValidateAtsDatabase - load ArtIds");
+ artIdLists = loadAtsBranchArtifactIds(xResultData, monitor);
+ elapsedTime.end();
+
+ // Un-comment to process specific artifact from common - Test Mode
+ // artIdLists = Arrays.asList((Collection<Integer>) Arrays.asList(new Integer(524575)));
+
+ if (monitor != null) {
+ monitor.beginTask(getName(), artIdLists.size());
+ }
+ testNameToResultsMap = new HashCollection<String, String>();
+ boolean testingTest = false;
+ int y = 0, artSetNum = 1;
+ for (Collection<Integer> artIdList : artIdLists) {
+ // Don't process all lists if just trying to test this report
+ if (y++ > 5 && testingTest) {
+ break;
+ }
+ elapsedTime =
+ new ElapsedTime(String.format("ValidateAtsDatabase - load Artifact set %d/%d", artSetNum++,
+ artIdLists.size()));
+ Collection<Artifact> artifactsTemp = ArtifactQuery.getArtifactListFromIds(artIdList, AtsUtil.getAtsBranch());
+ elapsedTime.end();
+ Collection<Artifact> artifacts = new ArrayList<Artifact>();
+ // Don't process all artifacts if just trying to test this report
+ if (testingTest) {
+ int x = 0;
+ for (Artifact art : artifactsTemp) {
+ artifacts.add(art);
+ if (x++ > 20) {
+ break;
+ }
+ }
+ } else {
+ artifacts.addAll(artifactsTemp);
+ }
+ count += artifacts.size();
+ // testArtifactIds(artifacts);
+ // testAtsAttributeValues(artifacts);
+ // testAtsActionsHaveTeamWorkflow(artifacts);
+ // testAtsWorkflowsHaveAction(artifacts);
+ // testAtsWorkflowsHaveZeroOrOneVersion(artifacts);
+ // testTasksHaveParentWorkflow(artifacts);
+ // testReviewsHaveParentWorkflowOrActionableItems(artifacts);
+ // testReviewsHaveValidDefectAndRoleXml(artifacts);
+ // testTeamWorkflows(artifacts);
+ testAtsBranchManager(artifacts);
+ // testTeamDefinitions(artifacts);
+ // testVersionArtifacts(artifacts);
+ // testStateMachineAssignees(artifacts);
+ // testAtsLogs(artifacts);
+ // testActionableItemToTeamDefinition(artifacts);
+ // testTeamDefinitionHasWorkflow(artifacts);
+ // for (IAtsHealthCheck atsHealthCheck : AtsHealthCheck.getAtsHealthCheckItems()) {
+ // atsHealthCheck.validateAtsDatabase(artifacts, testNameToResultsMap);
+ // }
+ if (monitor != null) {
+ monitor.worked(1);
+ }
+ }
+ // Log resultMap data into xResultData
+ String[] keys = testNameToResultsMap.keySet().toArray(new String[testNameToResultsMap.keySet().size()]);
+ Arrays.sort(keys);
+ for (String testName : keys) {
+ xResultData.log(testName);
+ for (String result : testNameToResultsMap.getValues(testName)) {
+ xResultData.log(result);
+ }
+ }
+ xResultData.reportSevereLoggingMonitor(monitorLog);
+ if (monitor != null) {
+ xResultData.log(monitor, "Completed processing " + count + " artifacts.");
+ }
+ }
+
+ private void testArtifactIds(Collection<Artifact> artifacts) {
+ this.hrids.clear();
+ this.legacyPcrIdToParentHrid.clear();
+ for (Artifact artifact : artifacts) {
+ try {
+ // Check that HRIDs not duplicated on Common branch
+ if (hrids.contains(artifact.getHumanReadableId())) {
+ testNameToResultsMap.put("testArtifactIds",
+ "Error: Duplicate HRIDs: " + XResultData.getHyperlink(artifact));
+ }
+ // Check that duplicate Legacy PCR IDs team arts do not exist with different parent actions
+ if (artifact instanceof TeamWorkFlowArtifact) {
+ TeamWorkFlowArtifact teamArt = (TeamWorkFlowArtifact) artifact;
+ String legacyPcrId = artifact.getSoleAttributeValueAsString(AtsAttributeTypes.LegacyPcrId, null);
+ if (legacyPcrId != null) {
+ if (legacyPcrIdToParentHrid.containsKey(legacyPcrId)) {
+ if (!legacyPcrIdToParentHrid.get(legacyPcrId).equals(
+ teamArt.getParentActionArtifact().getHumanReadableId())) {
+ testNameToResultsMap.put("testArtifactIds",
+ "Error: Duplicate Legacy PCR Ids in Different Actions: " + legacyPcrId);
+ }
+ } else {
+ legacyPcrIdToParentHrid.put(legacyPcrId, teamArt.getParentActionArtifact().getHumanReadableId());
+ }
+ }
+ }
+ } catch (Exception ex) {
+ testNameToResultsMap.put(
+ "testArtifactIds",
+ "Error: " + artifact.getArtifactTypeName() + " " + XResultData.getHyperlink(artifact) + " exception: " + ex.getLocalizedMessage());
+ }
+ }
+ }
+
+ private void testVersionArtifacts(Collection<Artifact> artifacts) {
+ for (Artifact artifact : artifacts) {
+ if (artifact instanceof VersionArtifact) {
+ VersionArtifact verArt = (VersionArtifact) artifact;
+ try {
+ String parentBranchGuid =
+ verArt.getSoleAttributeValueAsString(AtsAttributeTypes.BaselineBranchGuid, null);
+ if (parentBranchGuid != null) {
+ validateBranchGuid(verArt, parentBranchGuid);
+ }
+ } catch (Exception ex) {
+ testNameToResultsMap.put(
+ "testVersionArtifacts",
+ "Error: " + verArt.getArtifactTypeName() + " " + XResultData.getHyperlink(verArt) + " exception testing testVersionArtifacts: " + ex.getLocalizedMessage());
+ }
+ }
+ }
+ }
+
+ private void testTeamDefinitions(Collection<Artifact> artifacts) {
+ for (Artifact art : artifacts) {
+ if (art instanceof TeamDefinitionArtifact) {
+ TeamDefinitionArtifact teamDef = (TeamDefinitionArtifact) art;
+ try {
+ String parentBranchGuid =
+ teamDef.getSoleAttributeValueAsString(AtsAttributeTypes.BaselineBranchGuid, null);
+ if (parentBranchGuid != null) {
+ validateBranchGuid(teamDef, parentBranchGuid);
+ }
+ } catch (Exception ex) {
+ testNameToResultsMap.put(
+ "testTeamDefinitionss",
+ "Error: " + teamDef.getArtifactTypeName() + " " + XResultData.getHyperlink(teamDef) + " exception testing testTeamDefinitions: " + ex.getLocalizedMessage());
+ }
+ }
+ }
+ }
+
+ private void testTeamWorkflows(Collection<Artifact> artifacts) {
+ for (Artifact art : artifacts) {
+ if (art instanceof TeamWorkFlowArtifact) {
+ TeamWorkFlowArtifact teamArt = (TeamWorkFlowArtifact) art;
+ try {
+ if (teamArt.getActionableItemsDam().getActionableItems().isEmpty()) {
+ testNameToResultsMap.put("testTeamWorkflows",
+ "Error: TeamWorkflow " + XResultData.getHyperlink(teamArt) + " has 0 ActionableItems");
+ }
+ if (teamArt.getTeamDefinition() == null) {
+ testNameToResultsMap.put("testTeamWorkflows",
+ "Error: TeamWorkflow " + XResultData.getHyperlink(teamArt) + " has no TeamDefinition");
+ }
+ } catch (Exception ex) {
+ testNameToResultsMap.put(
+ "testTeamWorkflows",
+ teamArt.getArtifactTypeName() + " " + XResultData.getHyperlink(teamArt) + " exception: " + ex.getLocalizedMessage());
+ }
+ }
+ }
+ }
+
+ private void testAtsBranchManager(Collection<Artifact> artifacts) {
+ for (Artifact art : artifacts) {
+ if (art instanceof TeamWorkFlowArtifact) {
+ TeamWorkFlowArtifact teamArt = (TeamWorkFlowArtifact) art;
+ AtsBranchManager mgr = teamArt.getBranchMgr();
+ try {
+ Collection<Branch> branchesCommittedTo = mgr.getBranchesCommittedTo();
+ Branch workingBranch = mgr.getWorkingBranch();
+ if (workingBranch != null && branchesCommittedTo.size() > 0 && workingBranch.getBranchState() != BranchState.COMMITTED) {
+ testNameToResultsMap.put(
+ "testAtsBranchManagerA",
+ "Error: TeamWorkflow " + XResultData.getHyperlink(teamArt) + " has committed branches but working branch [" + workingBranch.getGuid() + "] != COMMITTED");
+ }
+ if (workingBranch != null && workingBranch.getBranchState() == BranchState.COMMITTED && workingBranch.getArchiveState() == BranchArchivedState.UNARCHIVED) {
+ String fixStr = "";
+ if (teamArt.isCompleted()) {
+ fixStr = " - Fix: Workflow Completed, Branch can be Archived";
+ } else {
+ fixStr = " - Workflow not completed, verify manually";
+ }
+ testNameToResultsMap.put(
+ "testAtsBranchManagerB",
+ "Error: TeamWorkflow " + XResultData.getHyperlink(teamArt) + " has committed working branch [" + workingBranch.getGuid() + "] but not archived" + fixStr);
+ }
+ } catch (Exception ex) {
+ testNameToResultsMap.put(
+ "testAtsBranchManager",
+ teamArt.getArtifactTypeName() + " " + XResultData.getHyperlink(teamArt) + " exception: " + ex.getLocalizedMessage());
+ }
+ }
+ }
+ }
+
+ private void validateBranchGuid(Artifact artifact, String parentBranchGuid) {
+ try {
+ Branch branch = BranchManager.getBranchByGuid(parentBranchGuid);
+ if (branch.getArchiveState().isArchived()) {
+ testNameToResultsMap.put("validateBranchGuid", String.format(
+ "Error: Parent Branch Id [%s][%s] can't be Archived branch for [%s][%s]", parentBranchGuid, branch,
+ artifact.getHumanReadableId(), artifact));
+ } else if (branch.getBranchType().isWorkingBranch()) {
+ testNameToResultsMap.put(
+ "validateBranchGuid",
+ String.format(
+ "Error: Parent Branch [%s][%s] is WORKING branch and can't be parent branch for [%s][%s]; Switch to BASELINE?",
+ parentBranchGuid, branch, artifact.getHumanReadableId(), artifact));
+ } else if (!branch.getBranchType().isBaselineBranch()) {
+ testNameToResultsMap.put("validateBranchGuid", String.format(
+ "Error: Parent Branch Id [%s][%s] must be Baseline branch for [%s][%s]", parentBranchGuid, branch,
+ artifact.getHumanReadableId(), artifact));
+ }
+ } catch (BranchDoesNotExist ex) {
+ testNameToResultsMap.put("validateBranchGuid", String.format(
+ "Error: Parent Branch Id [%s] references non-existant branch for [%s][%s]", parentBranchGuid,
+ artifact.getHumanReadableId(), artifact));
+ } catch (Exception ex) {
+ testNameToResultsMap.put(
+ "validateBranchGuid",
+ "Error: " + artifact.getArtifactTypeName() + " " + XResultData.getHyperlink(artifact) + " exception: " + ex.getLocalizedMessage());
+ }
+ }
+
+ public static List<Collection<Integer>> loadAtsBranchArtifactIds(XResultData xResultData, IProgressMonitor monitor) throws OseeCoreException {
+ if (xResultData == null) {
+ xResultData = new XResultData();
+ }
+ xResultData.log(monitor, "testLoadAllCommonArtifactIds - Started " + XDate.getDateNow(XDate.MMDDYYHHMM));
+ List<Integer> artIds = ArtifactQuery.selectArtifactListFromBranch(AtsUtil.getAtsBranch(), EXCLUDE_DELETED);
+
+ if (artIds.isEmpty()) {
+ xResultData.logError("Error: Artifact load returned 0 artifacts to check");
+ }
+ xResultData.log(monitor, "testLoadAllCommonArtifactIds - Completed " + XDate.getDateNow(XDate.MMDDYYHHMM));
+ return Collections.subDivide(artIds, 5000);
+ }
+
+ private void testAtsAttributeValues(Collection<Artifact> artifacts) {
+ try {
+ SkynetTransaction transaction = new SkynetTransaction(AtsUtil.getAtsBranch(), "Validate ATS Database");
+ for (Artifact artifact : artifacts) {
+
+ try {
+ // Test for null attribute values
+ for (Attribute<?> attr : artifact.getAttributes()) {
+ if (attr.getValue() == null) {
+ testNameToResultsMap.put(
+ "testAtsAttributeValues",
+ "Error: Artifact: " + XResultData.getHyperlink(artifact) + " Types: " + artifact.getArtifactTypeName() + " - Null Attribute");
+ if (fixAttributeValues) {
+ attr.delete();
+ }
+ }
+ }
+
+ if (artifact instanceof StateMachineArtifact) {
+ checkAndResolveDuplicateAttributesForAttributeNameContains("ats", artifact, fixAttributeValues,
+ testNameToResultsMap, transaction);
+ }
+
+ // Test for ats.State Completed;;;<num> or Cancelled;;;<num> and cleanup
+ if (artifact instanceof StateMachineArtifact) {
+ XStateDam stateDam = new XStateDam((StateMachineArtifact) artifact);
+ for (SMAState state : stateDam.getStates()) {
+ if (state.getName().equals(DefaultTeamState.Completed.name()) || state.getName().equals(
+ DefaultTeamState.Cancelled.name())) {
+ if (state.getHoursSpent() != 0.0 || state.getPercentComplete() != 0) {
+ testNameToResultsMap.put(
+ "testAtsAttributeValues",
+ "Error: ats.State error for SMA: " + XResultData.getHyperlink(artifact) + " State: " + state.getName() + " Hours Spent: " + state.getHoursSpentStr() + " Percent: " + state.getPercentComplete());
+ if (fixAttributeValues) {
+ state.setHoursSpent(0);
+ state.setPercentComplete(0);
+ stateDam.setState(state);
+ testNameToResultsMap.put("testAtsAttributeValues", "Fixed");
+ }
+ }
+ }
+ }
+ }
+
+ // Test for ats.CurrentState Completed;;;<num> or Cancelled;;;<num> and cleanup
+ if (artifact instanceof StateMachineArtifact) {
+ XCurrentStateDam currentStateDam = new XCurrentStateDam((StateMachineArtifact) artifact);
+ SMAState state = currentStateDam.getState();
+ if (state.getName().equals(DefaultTeamState.Completed.name()) || state.getName().equals(
+ DefaultTeamState.Cancelled.name())) {
+ if (state.getHoursSpent() != 0.0 || state.getPercentComplete() != 0) {
+ testNameToResultsMap.put(
+ "testAtsAttributeValues",
+ "Error: ats.CurrentState error for SMA: " + XResultData.getHyperlink(artifact) + " State: " + state.getName() + " Hours Spent: " + state.getHoursSpentStr() + " Percent: " + state.getPercentComplete());
+ if (fixAttributeValues) {
+ state.setHoursSpent(0);
+ state.setPercentComplete(0);
+ currentStateDam.setState(state);
+ testNameToResultsMap.put("testAtsAttributeValues", "Fixed");
+ }
+ }
+ }
+ }
+ if (artifact.hasDirtyAttributes()) {
+ artifact.persist(transaction);
+ }
+ } catch (OseeCoreException ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ testNameToResultsMap.put("testAtsAttributeValues",
+ "Error: Artifact: " + XResultData.getHyperlink(artifact) + " Exception: " + ex.getLocalizedMessage());
+ }
+ }
+ transaction.execute();
+ } catch (OseeCoreException ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ testNameToResultsMap.put("testAtsAttributeValues", "Error: Exception: " + ex.getLocalizedMessage());
+ }
+ }
+
+ public static void checkAndResolveDuplicateAttributesForAttributeNameContains(String nameContainsStr, Artifact artifact, boolean fixAttributeValues, HashCollection<String, String> resultsMap, SkynetTransaction transaction) throws OseeCoreException {
+ for (AttributeType attrType : AttributeTypeManager.getAllTypes()) {
+ if (attrType.getName().contains(nameContainsStr)) {
+ int count = artifact.getAttributeCount(attrType);
+ if (count > attrType.getMaxOccurrences()) {
+ String result =
+ String.format(
+ "Error: Artifact: " + XResultData.getHyperlink(artifact) + " Type [%s] AttrType [%s] Max [%d] Actual [%d] Values [%s] ",
+ artifact.getArtifactTypeName(), attrType.getName(), attrType.getMaxOccurrences(), count,
+ artifact.getAttributesToString(attrType));
+ Map<String, Attribute<?>> valuesAttrMap = new HashMap<String, Attribute<?>>();
+ int latestGamma = 0;
+ String fixInfo = " - FIX AVAILABLE";
+ for (Attribute<?> attr : artifact.getAttributes(attrType)) {
+ if (attr.getGammaId() > latestGamma) {
+ latestGamma = attr.getGammaId();
+ }
+ String info = String.format("[Gamma [%s] Value [%s]]", attr.getGammaId(), attr.getValue());
+ valuesAttrMap.put(info, attr);
+ fixInfo += info;
+ }
+ fixInfo += " - KEEP Gamma" + latestGamma;
+ if (latestGamma != 0) {
+ result += fixInfo;
+ if (fixAttributeValues) {
+ for (Attribute<?> attr : artifact.getAttributes(attrType)) {
+ if (attr.getGammaId() != latestGamma) {
+ attr.delete();
+ }
+ }
+ artifact.persist(transaction);
+ resultsMap.put("checkAndResolveDuplicateAttributesForAttributeNameContains", "Fixed");
+ }
+ }
+ resultsMap.put("checkAndResolveDuplicateAttributesForAttributeNameContains", result);
+ }
+ }
+ }
+ }
+
+ private void testAtsActionsHaveTeamWorkflow(Collection<Artifact> artifacts) {
+ for (Artifact artifact : artifacts) {
+ try {
+ if (artifact instanceof ActionArtifact) {
+ if (((ActionArtifact) artifact).getTeamWorkFlowArtifacts().isEmpty()) {
+ testNameToResultsMap.put("testAtsActionsHaveTeamWorkflow",
+ "Error: Action " + XResultData.getHyperlink(artifact) + " has no Team Workflows\n");
+ }
+ }
+ } catch (OseeCoreException ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ testNameToResultsMap.put("testAtsActionsHaveTeamWorkflow", "Error: Exception: " + ex.getLocalizedMessage());
+ }
+ }
+ }
+
+ private void testAtsWorkflowsHaveAction(Collection<Artifact> artifacts) {
+ for (Artifact artifact : artifacts) {
+ try {
+ if (artifact instanceof TeamWorkFlowArtifact) {
+ boolean noParent = false;
+ try {
+ if (((TeamWorkFlowArtifact) artifact).getParentActionArtifact() == null) {
+ testNameToResultsMap.put("testAtsWorkflowsHaveAction",
+ "Error: Team " + XResultData.getHyperlink(artifact) + " has no parent Action\n");
+ noParent = true;
+ }
+ } catch (Exception ex) {
+ testNameToResultsMap.put("testAtsWorkflowsHaveAction",
+ "Error: Team " + XResultData.getHyperlink(artifact) + " has no parent Action: exception " + ex);
+ noParent = true;
+ }
+ // Create temporary action so these can be either purged or re-assigned
+ if (noParent) {
+ if (tempParentAction == null) {
+ tempParentAction =
+ (ActionArtifact) ArtifactTypeManager.addArtifact(AtsArtifactTypes.Action,
+ AtsUtil.getAtsBranch());
+ tempParentAction.setName("Temp Parent Action");
+ testNameToResultsMap.put(
+ "testAtsWorkflowsHaveAction",
+ "Error: Temp Parent Action " + XResultData.getHyperlink(tempParentAction) + " created for orphaned teams.");
+
+ }
+ tempParentAction.addRelation(AtsRelationTypes.ActionToWorkflow_WorkFlow, artifact);
+ tempParentAction.persist();
+ }
+ }
+ } catch (OseeCoreException ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ testNameToResultsMap.put("testAtsWorkflowsHaveAction", "Error: Exception: " + ex.getLocalizedMessage());
+ }
+ }
+ if (tempParentAction != null) {
+ AtsUtil.openATSAction(tempParentAction, AtsOpenOption.AtsWorld);
+ }
+ }
+
+ private void testAtsWorkflowsHaveZeroOrOneVersion(Collection<Artifact> artifacts) {
+ for (Artifact artifact : artifacts) {
+ try {
+ if (artifact instanceof TeamWorkFlowArtifact) {
+ TeamWorkFlowArtifact teamArt = (TeamWorkFlowArtifact) artifact;
+ if (teamArt.getRelatedArtifacts(AtsRelationTypes.TeamWorkflowTargetedForVersion_Version).size() > 1) {
+ testNameToResultsMap.put(
+ "testAtsWorkflowsHaveZeroOrOneVersion",
+ "Error: Team workflow " + XResultData.getHyperlink(teamArt) + " has " + teamArt.getRelatedArtifacts(
+ AtsRelationTypes.TeamWorkflowTargetedForVersion_Version).size() + " versions");
+ }
+ }
+ } catch (OseeCoreException ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ testNameToResultsMap.put("testAtsWorkflowsHaveZeroOrOneVersion",
+ "Error: Exception: " + ex.getLocalizedMessage());
+ }
+ }
+
+ }
+
+ private void testTasksHaveParentWorkflow(Collection<Artifact> artifacts) {
+ Set<Artifact> badTasks = new HashSet<Artifact>(30);
+ for (Artifact artifact : artifacts) {
+ try {
+ if (artifact instanceof TaskArtifact) {
+ TaskArtifact taskArtifact = (TaskArtifact) artifact;
+ if (taskArtifact.getRelatedArtifacts(AtsRelationTypes.SmaToTask_Sma).size() != 1) {
+ testNameToResultsMap.put(
+ "testTasksHaveParentWorkflow",
+ "Error: Task " + XResultData.getHyperlink(taskArtifact) + " has " + taskArtifact.getRelatedArtifacts(
+ AtsRelationTypes.SmaToTask_Sma).size() + " parents.");
+ badTasks.add(taskArtifact);
+ }
+ }
+ } catch (OseeCoreException ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ testNameToResultsMap.put("testTasksHaveParentWorkflow", "Error: Exception: " + ex.getLocalizedMessage());
+ }
+ }
+ try {
+ if (badTasks.size() > 0) {
+ TaskEditor.open(new TaskEditorSimpleProvider("ValidateATSDatabase: Tasks have !=1 parent workflows.",
+ badTasks));
+ }
+ } catch (OseeCoreException ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ testNameToResultsMap.put("testTasksHaveParentWorkflow", "Error: Exception: " + ex.getLocalizedMessage());
+ }
+ }
+
+ private void testActionableItemToTeamDefinition(Collection<Artifact> artifacts) {
+ for (Artifact artifact : artifacts) {
+ try {
+ if (artifact instanceof ActionableItemArtifact) {
+ ActionableItemArtifact aia = (ActionableItemArtifact) artifact;
+ if (aia.isActionable()) {
+ if (TeamDefinitionArtifact.getImpactedTeamDefs(Arrays.asList(aia)).isEmpty()) {
+ testNameToResultsMap.put(
+ "testActionableItemToTeamDefinition",
+ "Error: ActionableItem " + XResultData.getHyperlink(artifact.getName(), artifact) + " has to related TeamDefinition and is set to Actionable");
+ }
+ }
+ }
+ } catch (OseeCoreException ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ testNameToResultsMap.put("testActionableItemToTeamDefinition",
+ "Error: Exception: " + ex.getLocalizedMessage());
+ }
+ }
+ }
+
+ private void testTeamDefinitionHasWorkflow(Collection<Artifact> artifacts) {
+ for (Artifact artifact : artifacts) {
+ try {
+ if (artifact instanceof TeamDefinitionArtifact) {
+ TeamDefinitionArtifact teamDef = (TeamDefinitionArtifact) artifact;
+ if (teamDef.isActionable() && teamDef.getWorkFlowDefinition() == null) {
+ testNameToResultsMap.put(
+ "testTeamDefinitionHasWorkflow",
+ "Error: TeamDefintion " + XResultData.getHyperlink(artifact.getName(), artifact) + " has no related workflow and is set to Actionable");
+ }
+ }
+ } catch (OseeCoreException ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ testNameToResultsMap.put("testTeamDefinitionHasWorkflow", "Error: Exception: " + ex.getLocalizedMessage());
+ }
+ }
+ }
+
+ private void testReviewsHaveValidDefectAndRoleXml(Collection<Artifact> artifacts) {
+ for (Artifact artifact : artifacts) {
+ if (artifact instanceof ReviewSMArtifact) {
+ ReviewSMArtifact reviewArtifact = (ReviewSMArtifact) artifact;
+ try {
+ if (reviewArtifact.getAttributes(AtsAttributeTypes.ReviewDefect).size() > 0 && reviewArtifact.getDefectManager().getDefectItems().isEmpty()) {
+ testNameToResultsMap.put(
+ "testReviewsHaveValidDefectAndRoleXml",
+ "Error: Review " + XResultData.getHyperlink(reviewArtifact) + " has defect attribute, but no defects (xml parsing error).");
+ }
+ if (reviewArtifact.getAttributes(AtsAttributeTypes.Role).size() > 0 && reviewArtifact.getUserRoleManager().getUserRoles().isEmpty()) {
+ testNameToResultsMap.put(
+ "testReviewsHaveValidDefectAndRoleXml",
+ "Error: Review " + XResultData.getHyperlink(reviewArtifact) + " has role attribute, but no roles (xml parsing error).");
+ }
+ } catch (OseeCoreException ex) {
+ testNameToResultsMap.put(
+ "testReviewsHaveValidDefectAndRoleXml",
+ "Error: Exception processing Review " + XResultData.getHyperlink(reviewArtifact) + " defect test " + ex.getLocalizedMessage());
+ }
+ }
+ }
+ }
+
+ private void testReviewsHaveParentWorkflowOrActionableItems(Collection<Artifact> artifacts) {
+ for (Artifact artifact : artifacts) {
+ try {
+ if (artifact instanceof ReviewSMArtifact) {
+ ReviewSMArtifact reviewArtifact = (ReviewSMArtifact) artifact;
+ if (reviewArtifact.getRelatedArtifacts(AtsRelationTypes.TeamWorkflowToReview_Team).isEmpty() && reviewArtifact.getActionableItemsDam().getActionableItemGuids().isEmpty()) {
+ testNameToResultsMap.put(
+ "testReviewsHaveParentWorkflowOrActionableItems",
+ "Error: Review " + XResultData.getHyperlink(reviewArtifact) + " has 0 related parents and 0 actionable items.");
+ }
+ }
+ } catch (OseeCoreException ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ testNameToResultsMap.put("testTeamDefinitionHasWorkflow", "Error: Exception: " + ex.getLocalizedMessage());
+ }
+ }
+ }
+
+ private void testAtsLogs(Collection<Artifact> artifacts) {
+ for (Artifact art : artifacts) {
+ if (art instanceof StateMachineArtifact) {
+ StateMachineArtifact sma = (StateMachineArtifact) art;
+ try {
+ ATSLog log = sma.getLog();
+ if (log.getOriginator() == null) {
+ try {
+ testNameToResultsMap.put(
+ "testAtsLogs",
+ "Error: " + sma.getArtifactTypeName() + " " + XResultData.getHyperlink(sma) + " originator == null");
+ } catch (Exception ex) {
+ testNameToResultsMap.put(
+ "testAtsLogs",
+ "Error: " + sma.getArtifactTypeName() + " " + XResultData.getHyperlink(sma) + " exception accessing originator: " + ex.getLocalizedMessage());
+ }
+ }
+ for (String stateName : Arrays.asList("Completed", "Cancelled")) {
+ if (sma.getStateMgr().getCurrentStateName().equals(stateName)) {
+ LogItem logItem = log.getStateEvent(LogType.StateEntered, stateName);
+ if (logItem == null) {
+ try {
+ testNameToResultsMap.put(
+ "testAtsLogs",
+ "Error: " + sma.getArtifactTypeName() + " " + XResultData.getHyperlink(sma) + " state \"" + stateName + "\" logItem == null");
+ } catch (Exception ex) {
+ testNameToResultsMap.put(
+ "testAtsLogs",
+ "Error: " + sma.getArtifactTypeName() + " " + XResultData.getHyperlink(sma) + " exception accessing logItem: " + ex.getLocalizedMessage());
+
+ }
+ }
+ if (logItem.getDate() == null) {
+ try {
+ testNameToResultsMap.put(
+ "testAtsLogs",
+ "Error: " + sma.getArtifactTypeName() + " " + XResultData.getHyperlink(sma) + " state \"" + stateName + "\" logItem.date == null");
+ } catch (Exception ex) {
+ testNameToResultsMap.put(
+ "testAtsLogs",
+ "Error: " + sma.getArtifactTypeName() + " " + XResultData.getHyperlink(sma) + " exception accessing logItem.date: " + ex.getLocalizedMessage());
+
+ }
+ }
+ }
+ }
+ // Generate html log which will exercise all the conversions
+ log.getHtml();
+ // Verify that all users are resolved
+ for (LogItem logItem : sma.getLog().getLogItems()) {
+ if (logItem.getUser() == null) {
+ testNameToResultsMap.put(
+ "testAtsLogs",
+ "Error: " + sma.getArtifactTypeName() + " " + XResultData.getHyperlink(sma) + " user == null for userId \"" + logItem.getUserId() + "\"");
+ }
+ }
+ } catch (Exception ex) {
+ testNameToResultsMap.put(
+ "testAtsLogs",
+ "Error: " + sma.getArtifactTypeName() + " " + XResultData.getHyperlink(sma) + " exception accessing AtsLog: " + ex.getLocalizedMessage());
+ }
+ }
+ }
+ }
+
+ private static User unAssignedUser;
+ private static User oseeSystemUser;
+
+ private void testStateMachineAssignees(Collection<Artifact> artifacts) {
+ if (unAssignedUser == null) {
+ try {
+ unAssignedUser = UserManager.getUser(SystemUser.UnAssigned);
+ oseeSystemUser = UserManager.getUser(SystemUser.OseeSystem);
+ } catch (OseeCoreException ex) {
+ testNameToResultsMap.put("testStateMachineAssignees",
+ "Error: Exception retrieving users: " + ex.getLocalizedMessage());
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ }
+ }
+ for (Artifact art : artifacts) {
+ if (art instanceof StateMachineArtifact) {
+ try {
+ StateMachineArtifact sma = (StateMachineArtifact) art;
+ if ((sma.isCompleted() || sma.isCancelled()) && sma.getStateMgr().getAssignees().size() > 0) {
+ testNameToResultsMap.put(
+ "testStateMachineAssignees",
+ "Error: " + sma.getArtifactTypeName() + " " + XResultData.getHyperlink(sma) + " cancel/complete with attribute assignees");
+ if (fixAssignees) {
+ sma.getStateMgr().clearAssignees();
+ sma.persist();
+ testNameToResultsMap.put("testStateMachineAssignees", "Fixed");
+ }
+ }
+ if (sma.getStateMgr().getAssignees().size() > 1 && sma.getStateMgr().getAssignees().contains(
+ unAssignedUser)) {
+ testNameToResultsMap.put(
+ "testStateMachineAssignees",
+ "Error: " + sma.getArtifactTypeName() + " " + XResultData.getHyperlink(sma) + " is unassigned and assigned => " + Artifacts.toString(
+ "; ", sma.getStateMgr().getAssignees()));
+ if (fixAssignees) {
+ sma.getStateMgr().removeAssignee(unAssignedUser);
+ testNameToResultsMap.put("testStateMachineAssignees", "Fixed");
+ }
+ }
+ if (sma.getStateMgr().getAssignees().contains(oseeSystemUser)) {
+ testNameToResultsMap.put(
+ "testStateMachineAssignees",
+ "Error: " + art.getHumanReadableId() + " is assigned to OseeSystem; invalid assignment - MANUAL FIX REQUIRED");
+ }
+ if (!sma.isCompleted() && !sma.isCancelled() && sma.getStateMgr().getAssignees().isEmpty()) {
+ testNameToResultsMap.put(
+ "testStateMachineAssignees",
+ "Error: " + sma.getArtifactTypeName() + " " + XResultData.getHyperlink(sma) + " In Work without assignees");
+ }
+ List<Artifact> relationAssigned = art.getRelatedArtifacts(CoreRelationTypes.Users_User, Artifact.class);
+ if ((sma.isCompleted() || sma.isCancelled()) && relationAssigned.size() > 0) {
+ testNameToResultsMap.put(
+ "testStateMachineAssignees (remove after 0.9.5)",
+ "Error: " + sma.getArtifactTypeName() + " " + XResultData.getHyperlink(sma) + " cancel/complete with related assignees");
+ if (fixAssignees) {
+ try {
+ StateManager.updateAssigneeRelations(sma);
+ art.persist();
+ } catch (OseeCoreException ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ }
+ testNameToResultsMap.put("testStateMachineAssignees", "Fixed");
+ }
+ } else if (sma.getStateMgr().getAssignees().size() != relationAssigned.size()) {
+ // Make sure this isn't just an UnAssigned user issue (don't relate to unassigned user anymore)
+ if (!(sma.getStateMgr().getAssignees().contains(UserManager.getUser(SystemUser.UnAssigned)) && relationAssigned.isEmpty())) {
+ testNameToResultsMap.put(
+ "testStateMachineAssignees",
+ "Error: " + sma.getArtifactTypeName() + " " + XResultData.getHyperlink(sma) + " attribute assignees doesn't match related assignees");
+ if (fixAssignees) {
+ try {
+ StateManager.updateAssigneeRelations(sma);
+ art.persist();
+ } catch (OseeCoreException ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ }
+ testNameToResultsMap.put("testStateMachineAssignees", "Fixed");
+ }
+ }
+ }
+ } catch (OseeCoreException ex) {
+ testNameToResultsMap.put("testStateMachineAssignees",
+ "Error: Exception testing assignees: " + ex.getLocalizedMessage());
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ }
+ }
+ }
+ }
+
+ /**
+ * @param fixAssignees the fixAssignees to set
+ */
+ public void setFixAssignees(boolean fixAssignees) {
+ this.fixAssignees = fixAssignees;
+ }
+
+ /**
+ * @param fixAttributeValues the fixAttributeValues to set
+ */
+ public void setFixAttributeValues(boolean fixAttributeValues) {
+ this.fixAttributeValues = fixAttributeValues;
+ }
+
+ /**
+ * set to email if desire email on completion
+ */
+ public void setEmailOnComplete(String emailOnComplete) {
+ this.emailOnComplete = emailOnComplete;
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/health/ValidateChangeReportByHrid.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/health/ValidateChangeReportByHrid.java
index 028ba1af2f1..50b0f3f0011 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/health/ValidateChangeReportByHrid.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/health/ValidateChangeReportByHrid.java
@@ -1,86 +1,86 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 Boeing.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Boeing - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osee.ats.health;
-
-import java.util.logging.Level;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact;
-import org.eclipse.osee.ats.internal.AtsPlugin;
-import org.eclipse.osee.ats.util.AtsUtil;
-import org.eclipse.osee.framework.database.core.OseeInfo;
-import org.eclipse.osee.framework.jdk.core.util.Strings;
-import org.eclipse.osee.framework.logging.OseeLog;
-import org.eclipse.osee.framework.plugin.core.util.Jobs;
-import org.eclipse.osee.framework.skynet.core.artifact.search.ArtifactQuery;
-import org.eclipse.osee.framework.ui.plugin.PluginUiImage;
-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;
-import org.eclipse.osee.framework.ui.skynet.widgets.dialog.EntryCheckDialog;
-
-/**
- * @author Donald G. Dunne
- */
-public class ValidateChangeReportByHrid extends XNavigateItemAction {
-
- public ValidateChangeReportByHrid(XNavigateItem parent) {
- super(parent, "Validate Change Reports by HRID", PluginUiImage.ADMIN);
- }
-
- @Override
- public void run(TableLoadOption... tableLoadOptions) {
- EntryCheckDialog ed = new EntryCheckDialog(getName(), "Enter HRID", "Display Was/Is data in Results View.");
- if (ed.open() == 0) {
- String hrid = ed.getEntry();
- if (Strings.isValid(hrid)) {
- Jobs.startJob(new Report(getName(), hrid, ed.isChecked()), true);
- }
- }
- }
-
- public static class Report extends Job {
-
- private final String hrid;
- private final boolean exportWasIs;
-
- public Report(String name, String hrid, boolean exportWasIs) {
- super(name);
- this.hrid = hrid;
- this.exportWasIs = exportWasIs;
- }
-
- @Override
- protected IStatus run(IProgressMonitor monitor) {
- try {
- final XResultData rd = new XResultData();
- try {
- TeamWorkFlowArtifact teamArt =
- (TeamWorkFlowArtifact) ArtifactQuery.getArtifactFromId(hrid, AtsUtil.getAtsBranch());
- String currentDbGuid = OseeInfo.getDatabaseGuid();
- ValidateChangeReports.changeReportValidated(currentDbGuid, teamArt, rd, exportWasIs);
- } catch (Exception ex) {
- rd.logError(ex.getLocalizedMessage());
- }
- rd.report(getName());
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- return new Status(IStatus.ERROR, AtsPlugin.PLUGIN_ID, -1, ex.getMessage(), ex);
- }
- monitor.done();
- return Status.OK_STATUS;
- }
- }
-
-}
+/*******************************************************************************
+ * 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.health;
+
+import java.util.logging.Level;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact;
+import org.eclipse.osee.ats.internal.AtsPlugin;
+import org.eclipse.osee.ats.util.AtsUtil;
+import org.eclipse.osee.framework.database.core.OseeInfo;
+import org.eclipse.osee.framework.jdk.core.util.Strings;
+import org.eclipse.osee.framework.logging.OseeLog;
+import org.eclipse.osee.framework.plugin.core.util.Jobs;
+import org.eclipse.osee.framework.skynet.core.artifact.search.ArtifactQuery;
+import org.eclipse.osee.framework.ui.plugin.PluginUiImage;
+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;
+import org.eclipse.osee.framework.ui.skynet.widgets.dialog.EntryCheckDialog;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class ValidateChangeReportByHrid extends XNavigateItemAction {
+
+ public ValidateChangeReportByHrid(XNavigateItem parent) {
+ super(parent, "Validate Change Reports by HRID", PluginUiImage.ADMIN);
+ }
+
+ @Override
+ public void run(TableLoadOption... tableLoadOptions) {
+ EntryCheckDialog ed = new EntryCheckDialog(getName(), "Enter HRID", "Display Was/Is data in Results View.");
+ if (ed.open() == 0) {
+ String hrid = ed.getEntry();
+ if (Strings.isValid(hrid)) {
+ Jobs.startJob(new Report(getName(), hrid, ed.isChecked()), true);
+ }
+ }
+ }
+
+ public static class Report extends Job {
+
+ private final String hrid;
+ private final boolean exportWasIs;
+
+ public Report(String name, String hrid, boolean exportWasIs) {
+ super(name);
+ this.hrid = hrid;
+ this.exportWasIs = exportWasIs;
+ }
+
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ try {
+ final XResultData rd = new XResultData();
+ try {
+ TeamWorkFlowArtifact teamArt =
+ (TeamWorkFlowArtifact) ArtifactQuery.getArtifactFromId(hrid, AtsUtil.getAtsBranch());
+ String currentDbGuid = OseeInfo.getDatabaseGuid();
+ ValidateChangeReports.changeReportValidated(currentDbGuid, teamArt, rd, exportWasIs);
+ } catch (Exception ex) {
+ rd.logError(ex.getLocalizedMessage());
+ }
+ rd.report(getName());
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ return new Status(IStatus.ERROR, AtsPlugin.PLUGIN_ID, -1, ex.getMessage(), ex);
+ }
+ monitor.done();
+ return Status.OK_STATUS;
+ }
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/health/ValidateChangeReports.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/health/ValidateChangeReports.java
index 10b5176e6a5..2fc0056a8cd 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/health/ValidateChangeReports.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/health/ValidateChangeReports.java
@@ -1,381 +1,380 @@
-/*******************************************************************************
- * 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.health;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import java.util.logging.Level;
-import javax.xml.parsers.ParserConfigurationException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.osee.ats.artifact.AtsAttributeTypes;
-import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact;
-import org.eclipse.osee.ats.artifact.TeamWorkflowExtensions;
-import org.eclipse.osee.ats.health.change.DataChangeReportComparer;
-import org.eclipse.osee.ats.health.change.ValidateChangeReportParser;
-import org.eclipse.osee.ats.internal.AtsPlugin;
-import org.eclipse.osee.ats.util.AtsUtil;
-import org.eclipse.osee.framework.core.data.IArtifactType;
-import org.eclipse.osee.framework.core.enums.CoreArtifactTypes;
-import org.eclipse.osee.framework.core.enums.CoreAttributeTypes;
-import org.eclipse.osee.framework.core.enums.ModificationType;
-import org.eclipse.osee.framework.core.exception.OseeCoreException;
-import org.eclipse.osee.framework.core.exception.OseeStateException;
-import org.eclipse.osee.framework.database.core.OseeInfo;
-import org.eclipse.osee.framework.jdk.core.util.AHTML;
-import org.eclipse.osee.framework.jdk.core.util.AXml;
-import org.eclipse.osee.framework.jdk.core.util.Lib;
-import org.eclipse.osee.framework.logging.IHealthStatus;
-import org.eclipse.osee.framework.logging.OseeLevel;
-import org.eclipse.osee.framework.logging.OseeLog;
-import org.eclipse.osee.framework.logging.SevereLoggingMonitor;
-import org.eclipse.osee.framework.plugin.core.util.Jobs;
-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.search.ArtifactQuery;
-import org.eclipse.osee.framework.skynet.core.change.ArtifactChange;
-import org.eclipse.osee.framework.skynet.core.change.AttributeChange;
-import org.eclipse.osee.framework.skynet.core.change.Change;
-import org.eclipse.osee.framework.skynet.core.change.RelationChange;
-import org.eclipse.osee.framework.skynet.core.revision.ChangeData;
-import org.eclipse.osee.framework.skynet.core.revision.ChangeData.KindType;
-import org.eclipse.osee.framework.ui.plugin.PluginUiImage;
-import org.eclipse.osee.framework.ui.plugin.util.Result;
-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.compare.CompareHandler;
-import org.eclipse.osee.framework.ui.skynet.results.XResultData;
-import org.eclipse.osee.framework.ui.swt.Displays;
-
-/**
- * This test will validate the change report data that is returned for the ATS configured actions with committed
- * branches. Upon first time run against a newly committed branch, it will generate a "General Data" artifact with the
- * change report data stored to xml in a "General String Data" attribute. <br>
- * <br>
- * Every additional time this validation is run against an already stored change report, the current xml and stored xml
- * change report will be compared. <br>
- * <br>
- * If errors are found, the developer will need to put a breakpoint below to see the was-is values of the change report
- * data.<br>
- * <br>
- * This test also ensures that all change reports can return their historical artifacts by loading and accessing the
- * descriptive name for each artifact.
- *
- * @author Donald G. Dunne
- */
-public class ValidateChangeReports extends XNavigateItemAction {
-
- static final String VCR_ROOT_ELEMENT_TAG = "ValidateChangeReport";
- static final String VCR_DB_GUID = "dbGuid";
-
- public ValidateChangeReports(XNavigateItem parent) {
- super(parent, "Validate Change Reports", PluginUiImage.ADMIN);
- }
-
- @Override
- public void run(TableLoadOption... tableLoadOptions) {
- if (!MessageDialog.openConfirm(Displays.getActiveShell(), getName(), getName())) {
- return;
- }
- Jobs.startJob(new Report(getName()), true);
- }
-
- public class Report extends Job {
-
- public Report(String name) {
- super(name);
- }
-
- @Override
- protected IStatus run(IProgressMonitor monitor) {
- try {
- final XResultData rd = new XResultData();
- runIt(monitor, rd);
- rd.report(getName());
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- return new Status(IStatus.ERROR, AtsPlugin.PLUGIN_ID, -1, ex.getMessage(), ex);
- }
- monitor.done();
- return Status.OK_STATUS;
- }
- }
-
- private void runIt(IProgressMonitor monitor, XResultData xResultData) throws OseeCoreException {
- String currentDbGuid = OseeInfo.getDatabaseGuid();
- SevereLoggingMonitor monitorLog = new SevereLoggingMonitor();
- OseeLog.registerLoggerListener(monitorLog);
- StringBuffer sbFull = new StringBuffer(AHTML.beginMultiColumnTable(100, 1));
- String[] columnHeaders = new String[] {"HRID", "PCR", "Results"};
- sbFull.append(AHTML.addHeaderRowMultiColumnTable(columnHeaders));
- for (IArtifactType artifactType : TeamWorkflowExtensions.getInstance().getAllTeamWorkflowArtifactTypes()) {
- sbFull.append(AHTML.addRowSpanMultiColumnTable(artifactType.getName(), columnHeaders.length));
-
- try {
- int x = 1;
- Collection<Artifact> artifacts =
- ArtifactQuery.getArtifactListFromType(artifactType, AtsUtil.getAtsBranch());
- for (Artifact artifact : artifacts) {
- String resultStr = "PASS";
- TeamWorkFlowArtifact teamArt = (TeamWorkFlowArtifact) artifact;
-
- // Uncomment to only do a single program
- // if (!teamArt.getTeamName().contains("ATS")) {
- // System.err.println("Skipping non ATS workflow...Remove this.");
- // continue;
- // }
- // if (x >= 20) {
- // System.err.println("Only do first 20...Remove this.");
- // return;
- // }
-
- try {
- String str = String.format("Processing %s/%s - %s", x++, artifacts.size(), artifact);
- OseeLog.log(AtsPlugin.class, Level.INFO, str);
- if (monitor != null) {
- monitor.subTask(str);
- }
-
- // Only validate committed branches cause working branches change too much
- if (!teamArt.getBranchMgr().isCommittedBranchExists()) {
- continue;
- }
- Result valid = changeReportValidated(currentDbGuid, teamArt, xResultData, false);
- if (valid.isFalse()) {
- resultStr = "Error: " + valid.getText();
- }
- } catch (Exception ex) {
- resultStr = "Error: Exception Validating: " + ex.getLocalizedMessage();
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
- sbFull.append(AHTML.addRowMultiColumnTable(teamArt.getHumanReadableId(),
- teamArt.getSoleAttributeValue(AtsAttributeTypes.LegacyPcrId, ""), resultStr));
- }
- } catch (Exception ex) {
- sbFull.append(AHTML.addRowSpanMultiColumnTable("Exception: " + ex.getLocalizedMessage(),
- columnHeaders.length));
- }
- }
- sbFull.append(AHTML.endMultiColumnTable());
- xResultData.addRaw(sbFull.toString().replaceAll("\n", ""));
- List<IHealthStatus> stats = new ArrayList<IHealthStatus>(monitorLog.getAllLogs());
- for (IHealthStatus stat : stats) {
- Throwable tr = stat.getException();
- if (tr != null) {
- xResultData.logError("Exception: " + Lib.exceptionToString(stat.getException()));
- }
- }
- }
-
- /**
- * Return true if current change report is same as stored change report data
- *
- * @param teamArt
- * @return Result.TrueResult if same, else Result.FalseResult with comparison in resultData
- * @throws ParserConfigurationException
- */
- static Result changeReportValidated(final String currentDbGuid, final TeamWorkFlowArtifact teamArt, XResultData resultData, boolean displayWasIs) throws OseeCoreException {
- String name = "VCR_" + teamArt.getHumanReadableId();
- List<Artifact> arts =
- ArtifactQuery.getArtifactListFromTypeAndName(CoreArtifactTypes.GeneralData, name, AtsUtil.getAtsBranch());
- String storedChangeReport = null;
- Artifact artifactForStore = null;
- if (arts.size() > 1) {
- throw new OseeStateException("Multiple artifacts found of name \"" + name + "\"");
- } else if (arts.size() == 1) {
- artifactForStore = arts.iterator().next();
- storedChangeReport = artifactForStore.getSoleAttributeValue(CoreAttributeTypes.GeneralStringData, null);
- }
- // Retrieve current
- ChangeData currentChangeData = teamArt.getBranchMgr().getChangeDataFromEarliestTransactionId();
- if (currentChangeData.isEmpty()) {
- return new Result(String.format("FAIL: Unexpected empty change report for %s", teamArt.toStringWithId()));
- }
- // Store
- if (storedChangeReport == null) {
- // Reuse same artifact if already exists
- if (artifactForStore == null) {
- artifactForStore =
- ArtifactTypeManager.addArtifact(CoreArtifactTypes.GeneralData, AtsUtil.getAtsBranch(), name);
- }
- artifactForStore.setSoleAttributeValue(CoreAttributeTypes.GeneralStringData,
- getReport(currentDbGuid, currentChangeData));
- artifactForStore.persist();
- resultData.log("Stored Change Report for " + teamArt.getHumanReadableId());
- return new Result(true, "Stored Change Report for " + teamArt.getHumanReadableId());
- }
- // Else, compare the two and report
- else {
- final String currentChangeReport = getReport(currentDbGuid, currentChangeData);
- final String fStoredChangeReport = storedChangeReport.replaceAll("\n", "");
- if (!isXmlChangeDataEqual(currentChangeReport, fStoredChangeReport)) {
- resultData.logError("Was/Is Change Report different for " + teamArt.getHumanReadableId());
- if (displayWasIs) {
- resultData.log("Was / Is reports displayed in Results View");
- }
- if (displayWasIs) {
- try {
- Displays.ensureInDisplayThread(new Runnable() {
- @Override
- public void run() {
- try {
- String storedChangeReportString = GetComparableString(fStoredChangeReport);
- String currentChangeReportString = GetComparableString(currentChangeReport);
-
- CompareHandler compareHandler =
- new CompareHandler(storedChangeReportString, currentChangeReportString);
- compareHandler.compare();
-
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
- }
- }
- });
-
- } catch (Exception ex) {
- System.err.println(ex.getLocalizedMessage());
- }
- }
- return new Result("FAIL: Was/Is Change Report different");
- }
- }
- // As another test, ensure that all artifacts can be retrieved and display their name
- try {
- for (Artifact art : currentChangeData.getArtifacts(KindType.ArtifactOrRelation, ModificationType.NEW,
- ModificationType.DELETED, ModificationType.MERGED)) {
- art.getName();
- }
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- return new Result("FAIL: Exception accessing name of change report artifacts: " + ex.getLocalizedMessage());
- }
- // As another test, allow ATS extensions add their own tests
- for (IAtsHealthCheck atsHealthCheck : AtsHealthCheck.getAtsHealthCheckItems()) {
- Result result = atsHealthCheck.validateChangeReports(currentChangeData, teamArt, resultData);
- if (result.isFalse()) {
- return result;
- }
- }
-
- return new Result(true, "PASS");
- }
-
- private static String GetComparableString(String changeReportString) {
- StringBuffer comparableString = new StringBuffer();
- ValidateChangeReportParser parser = new ValidateChangeReportParser();
- ArrayList<ArrayList<DataChangeReportComparer>> changeReport = parser.parse(changeReportString);
-
- for (int i = 0; i < changeReport.size(); i++) {
- for (int j = 0; j < changeReport.get(i).size(); j++) {
- comparableString.append(changeReport.get(i).get(j).getContent());
- }
- }
- return comparableString.toString().replaceAll("><", ">\n<");
- }
-
- private static String getReport(String dbGuid, ChangeData changeData) {
- StringBuffer sb = new StringBuffer();
- sb.append(String.format("<%s %s=\"%s\">", VCR_ROOT_ELEMENT_TAG, VCR_DB_GUID, dbGuid));
- for (Change change : changeData.getChanges()) {
- if (change instanceof RelationChange) {
- sb.append(toXml((RelationChange) change));
- } else if (change instanceof ArtifactChange) {
- sb.append(toXml((ArtifactChange) change));
- } else if (change instanceof AttributeChange) {
- sb.append(toXml((AttributeChange) change));
- }
- }
- sb.append(String.format("</%s>", VCR_ROOT_ELEMENT_TAG));
- String toReturn = sb.toString().replaceAll(">[\\s\\n\\r]+$", ">");
- return toReturn.replaceAll("\n", "");
- }
-
- private static void toXmlCommon(Change change, StringBuffer sb) {
- sb.append(AXml.addTagData(TxImportedValidateChangeReports.BRANCH_ID_ALIASES, change.getBranch().getGuid()));
- }
-
- private static String toXml(RelationChange change) {
- StringBuffer sb = new StringBuffer();
- toXmlCommon(change, sb);
- sb.append(AXml.addTagData("artTId", String.valueOf(change.getItemTypeId())));
- sb.append(AXml.addTagData("gamma", String.valueOf(change.getGamma())));
- sb.append(AXml.addTagData("artId", String.valueOf(change.getArtId())));
- sb.append(AXml.addTagData("tTranId", String.valueOf(change.getTxDelta().getEndTx().getId())));
- sb.append(AXml.addTagData("fTranId", String.valueOf(change.getTxDelta().getStartTx().getId())));
- sb.append(AXml.addTagData("mType", String.valueOf(change.getModificationType().name())));
- sb.append(AXml.addTagData("bArtId", String.valueOf(change.getBArtId())));
- sb.append(AXml.addTagData("relId", String.valueOf(change.getRelLinkId())));
- sb.append(AXml.addTagData("rat", change.getRationale()));
- sb.append(AXml.addTagData("relTId", String.valueOf(change.getRelationType().getId())));
- sb.append(AXml.addTagData("hist", String.valueOf(change.isHistorical())));
- return AXml.addTagData("RelChg", sb.toString());
- }
-
- private static String toXml(ArtifactChange change) {
- StringBuffer sb = new StringBuffer();
- toXmlCommon(change, sb);
- sb.append(AXml.addTagData("artTId", String.valueOf(change.getItemTypeId())));
- sb.append(AXml.addTagData("gamma", String.valueOf(change.getGamma())));
- sb.append(AXml.addTagData("artId", String.valueOf(change.getArtId())));
- sb.append(AXml.addTagData("tTranId", String.valueOf(change.getTxDelta().getEndTx().getId())));
- sb.append(AXml.addTagData("fTranId", String.valueOf(change.getTxDelta().getStartTx().getId())));
- sb.append(AXml.addTagData("mType", String.valueOf(change.getModificationType().name())));
- sb.append(AXml.addTagData("hist", String.valueOf(change.isHistorical())));
- return AXml.addTagData("ArtChg", sb.toString());
- }
-
- private static String toXml(AttributeChange change) {
- StringBuffer sb = new StringBuffer();
- toXmlCommon(change, sb);
- sb.append(AXml.addTagData("artTId", String.valueOf(change.getItemTypeId())));
- sb.append(AXml.addTagData("gamma", String.valueOf(change.getGamma())));
- sb.append(AXml.addTagData("artId", String.valueOf(change.getArtId())));
- sb.append(AXml.addTagData("tTranId", String.valueOf(change.getTxDelta().getEndTx().getId())));
- sb.append(AXml.addTagData("fTranId", String.valueOf(change.getTxDelta().getStartTx().getId())));
- sb.append(AXml.addTagData("mType", String.valueOf(change.getModificationType().name())));
- sb.append(AXml.addTagData("aModType", String.valueOf(change.getArtModType().name())));
- sb.append(AXml.addTagData("attrId", String.valueOf(change.getAttrId())));
- sb.append(AXml.addTagData("attrTId", String.valueOf(change.getAttributeType().getId())));
- sb.append(AXml.addTagData("hist", String.valueOf(change.isHistorical())));
- return AXml.addTagData("AttrChg", sb.toString());
- }
-
- private static boolean isXmlChangeDataEqual(String currentData, String storedData) {
- int checkSum1 = getCheckSum(currentData);
- int checkSum2 = getCheckSum(storedData);
-
- boolean result = checkSum1 == checkSum2;
- if (!result) {
- ChangeReportComparer comparer = new ChangeReportComparer();
- comparer.compare(currentData, storedData);
-
- OseeLog.log(AtsPlugin.class, Level.SEVERE,
- String.format("Checksums not equal - stored:[%s] current:[%s]", checkSum1, checkSum2));
- }
- return result;
- }
-
- private static int getCheckSum(String data) {
- int checksum = -1;
- for (int index = 0; index < data.length(); index++) {
- char character = data.charAt(index);
- if (character != '\n' && character != '\t' && character != '\r' && character != ' ') {
- checksum += character;
- }
- }
- return checksum;
- }
-}
+/*******************************************************************************
+ * 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.health;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.logging.Level;
+import javax.xml.parsers.ParserConfigurationException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.osee.ats.artifact.AtsAttributeTypes;
+import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact;
+import org.eclipse.osee.ats.artifact.TeamWorkflowExtensions;
+import org.eclipse.osee.ats.health.change.DataChangeReportComparer;
+import org.eclipse.osee.ats.health.change.ValidateChangeReportParser;
+import org.eclipse.osee.ats.internal.AtsPlugin;
+import org.eclipse.osee.ats.util.AtsUtil;
+import org.eclipse.osee.framework.core.data.IArtifactType;
+import org.eclipse.osee.framework.core.enums.CoreArtifactTypes;
+import org.eclipse.osee.framework.core.enums.CoreAttributeTypes;
+import org.eclipse.osee.framework.core.enums.ModificationType;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.core.exception.OseeStateException;
+import org.eclipse.osee.framework.database.core.OseeInfo;
+import org.eclipse.osee.framework.jdk.core.util.AHTML;
+import org.eclipse.osee.framework.jdk.core.util.AXml;
+import org.eclipse.osee.framework.jdk.core.util.Lib;
+import org.eclipse.osee.framework.logging.IHealthStatus;
+import org.eclipse.osee.framework.logging.OseeLevel;
+import org.eclipse.osee.framework.logging.OseeLog;
+import org.eclipse.osee.framework.logging.SevereLoggingMonitor;
+import org.eclipse.osee.framework.plugin.core.util.Jobs;
+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.search.ArtifactQuery;
+import org.eclipse.osee.framework.skynet.core.change.ArtifactChange;
+import org.eclipse.osee.framework.skynet.core.change.AttributeChange;
+import org.eclipse.osee.framework.skynet.core.change.Change;
+import org.eclipse.osee.framework.skynet.core.change.RelationChange;
+import org.eclipse.osee.framework.skynet.core.revision.ChangeData;
+import org.eclipse.osee.framework.skynet.core.revision.ChangeData.KindType;
+import org.eclipse.osee.framework.ui.plugin.PluginUiImage;
+import org.eclipse.osee.framework.ui.plugin.util.Result;
+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.compare.CompareHandler;
+import org.eclipse.osee.framework.ui.skynet.results.XResultData;
+import org.eclipse.osee.framework.ui.swt.Displays;
+
+/**
+ * This test will validate the change report data that is returned for the ATS configured actions with committed
+ * branches. Upon first time run against a newly committed branch, it will generate a "General Data" artifact with the
+ * change report data stored to xml in a "General String Data" attribute. <br>
+ * <br>
+ * Every additional time this validation is run against an already stored change report, the current xml and stored xml
+ * change report will be compared. <br>
+ * <br>
+ * If errors are found, the developer will need to put a breakpoint below to see the was-is values of the change report
+ * data.<br>
+ * <br>
+ * This test also ensures that all change reports can return their historical artifacts by loading and accessing the
+ * descriptive name for each artifact.
+ *
+ * @author Donald G. Dunne
+ */
+public class ValidateChangeReports extends XNavigateItemAction {
+
+ static final String VCR_ROOT_ELEMENT_TAG = "ValidateChangeReport";
+ static final String VCR_DB_GUID = "dbGuid";
+
+ public ValidateChangeReports(XNavigateItem parent) {
+ super(parent, "Validate Change Reports", PluginUiImage.ADMIN);
+ }
+
+ @Override
+ public void run(TableLoadOption... tableLoadOptions) {
+ if (!MessageDialog.openConfirm(Displays.getActiveShell(), getName(), getName())) {
+ return;
+ }
+ Jobs.startJob(new Report(getName()), true);
+ }
+
+ public class Report extends Job {
+
+ public Report(String name) {
+ super(name);
+ }
+
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ try {
+ final XResultData rd = new XResultData();
+ runIt(monitor, rd);
+ rd.report(getName());
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ return new Status(IStatus.ERROR, AtsPlugin.PLUGIN_ID, -1, ex.getMessage(), ex);
+ }
+ monitor.done();
+ return Status.OK_STATUS;
+ }
+ }
+
+ private void runIt(IProgressMonitor monitor, XResultData xResultData) throws OseeCoreException {
+ String currentDbGuid = OseeInfo.getDatabaseGuid();
+ SevereLoggingMonitor monitorLog = new SevereLoggingMonitor();
+ OseeLog.registerLoggerListener(monitorLog);
+ StringBuffer sbFull = new StringBuffer(AHTML.beginMultiColumnTable(100, 1));
+ String[] columnHeaders = new String[] {"HRID", "PCR", "Results"};
+ sbFull.append(AHTML.addHeaderRowMultiColumnTable(columnHeaders));
+ for (IArtifactType artifactType : TeamWorkflowExtensions.getInstance().getAllTeamWorkflowArtifactTypes()) {
+ sbFull.append(AHTML.addRowSpanMultiColumnTable(artifactType.getName(), columnHeaders.length));
+
+ try {
+ int x = 1;
+ Collection<Artifact> artifacts =
+ ArtifactQuery.getArtifactListFromType(artifactType, AtsUtil.getAtsBranch());
+ for (Artifact artifact : artifacts) {
+ String resultStr = "PASS";
+ TeamWorkFlowArtifact teamArt = (TeamWorkFlowArtifact) artifact;
+
+ // Uncomment to only do a single program
+ // if (!teamArt.getTeamName().contains("ATS")) {
+ // System.err.println("Skipping non ATS workflow...Remove this.");
+ // continue;
+ // }
+ // if (x >= 20) {
+ // System.err.println("Only do first 20...Remove this.");
+ // return;
+ // }
+
+ try {
+ String str = String.format("Processing %s/%s - %s", x++, artifacts.size(), artifact);
+ OseeLog.log(AtsPlugin.class, Level.INFO, str);
+ if (monitor != null) {
+ monitor.subTask(str);
+ }
+
+ // Only validate committed branches cause working branches change too much
+ if (!teamArt.getBranchMgr().isCommittedBranchExists()) {
+ continue;
+ }
+ Result valid = changeReportValidated(currentDbGuid, teamArt, xResultData, false);
+ if (valid.isFalse()) {
+ resultStr = "Error: " + valid.getText();
+ }
+ } catch (Exception ex) {
+ resultStr = "Error: Exception Validating: " + ex.getLocalizedMessage();
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ }
+ sbFull.append(AHTML.addRowMultiColumnTable(teamArt.getHumanReadableId(),
+ teamArt.getSoleAttributeValue(AtsAttributeTypes.LegacyPcrId, ""), resultStr));
+ }
+ } catch (Exception ex) {
+ sbFull.append(AHTML.addRowSpanMultiColumnTable("Exception: " + ex.getLocalizedMessage(),
+ columnHeaders.length));
+ }
+ }
+ sbFull.append(AHTML.endMultiColumnTable());
+ xResultData.addRaw(sbFull.toString().replaceAll("\n", ""));
+ List<IHealthStatus> stats = new ArrayList<IHealthStatus>(monitorLog.getAllLogs());
+ for (IHealthStatus stat : stats) {
+ Throwable tr = stat.getException();
+ if (tr != null) {
+ xResultData.logError("Exception: " + Lib.exceptionToString(stat.getException()));
+ }
+ }
+ }
+
+ /**
+ * Return true if current change report is same as stored change report data
+ *
+ * @return Result.TrueResult if same, else Result.FalseResult with comparison in resultData
+ * @throws ParserConfigurationException
+ */
+ static Result changeReportValidated(final String currentDbGuid, final TeamWorkFlowArtifact teamArt, XResultData resultData, boolean displayWasIs) throws OseeCoreException {
+ String name = "VCR_" + teamArt.getHumanReadableId();
+ List<Artifact> arts =
+ ArtifactQuery.getArtifactListFromTypeAndName(CoreArtifactTypes.GeneralData, name, AtsUtil.getAtsBranch());
+ String storedChangeReport = null;
+ Artifact artifactForStore = null;
+ if (arts.size() > 1) {
+ throw new OseeStateException("Multiple artifacts found of name \"" + name + "\"");
+ } else if (arts.size() == 1) {
+ artifactForStore = arts.iterator().next();
+ storedChangeReport = artifactForStore.getSoleAttributeValue(CoreAttributeTypes.GeneralStringData, null);
+ }
+ // Retrieve current
+ ChangeData currentChangeData = teamArt.getBranchMgr().getChangeDataFromEarliestTransactionId();
+ if (currentChangeData.isEmpty()) {
+ return new Result(String.format("FAIL: Unexpected empty change report for %s", teamArt.toStringWithId()));
+ }
+ // Store
+ if (storedChangeReport == null) {
+ // Reuse same artifact if already exists
+ if (artifactForStore == null) {
+ artifactForStore =
+ ArtifactTypeManager.addArtifact(CoreArtifactTypes.GeneralData, AtsUtil.getAtsBranch(), name);
+ }
+ artifactForStore.setSoleAttributeValue(CoreAttributeTypes.GeneralStringData,
+ getReport(currentDbGuid, currentChangeData));
+ artifactForStore.persist();
+ resultData.log("Stored Change Report for " + teamArt.getHumanReadableId());
+ return new Result(true, "Stored Change Report for " + teamArt.getHumanReadableId());
+ }
+ // Else, compare the two and report
+ else {
+ final String currentChangeReport = getReport(currentDbGuid, currentChangeData);
+ final String fStoredChangeReport = storedChangeReport.replaceAll("\n", "");
+ if (!isXmlChangeDataEqual(currentChangeReport, fStoredChangeReport)) {
+ resultData.logError("Was/Is Change Report different for " + teamArt.getHumanReadableId());
+ if (displayWasIs) {
+ resultData.log("Was / Is reports displayed in Results View");
+ }
+ if (displayWasIs) {
+ try {
+ Displays.ensureInDisplayThread(new Runnable() {
+ @Override
+ public void run() {
+ try {
+ String storedChangeReportString = GetComparableString(fStoredChangeReport);
+ String currentChangeReportString = GetComparableString(currentChangeReport);
+
+ CompareHandler compareHandler =
+ new CompareHandler(storedChangeReportString, currentChangeReportString);
+ compareHandler.compare();
+
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
+ }
+ }
+ });
+
+ } catch (Exception ex) {
+ System.err.println(ex.getLocalizedMessage());
+ }
+ }
+ return new Result("FAIL: Was/Is Change Report different");
+ }
+ }
+ // As another test, ensure that all artifacts can be retrieved and display their name
+ try {
+ for (Artifact art : currentChangeData.getArtifacts(KindType.ArtifactOrRelation, ModificationType.NEW,
+ ModificationType.DELETED, ModificationType.MERGED)) {
+ art.getName();
+ }
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ return new Result("FAIL: Exception accessing name of change report artifacts: " + ex.getLocalizedMessage());
+ }
+ // As another test, allow ATS extensions add their own tests
+ for (IAtsHealthCheck atsHealthCheck : AtsHealthCheck.getAtsHealthCheckItems()) {
+ Result result = atsHealthCheck.validateChangeReports(currentChangeData, teamArt, resultData);
+ if (result.isFalse()) {
+ return result;
+ }
+ }
+
+ return new Result(true, "PASS");
+ }
+
+ private static String GetComparableString(String changeReportString) {
+ StringBuffer comparableString = new StringBuffer();
+ ValidateChangeReportParser parser = new ValidateChangeReportParser();
+ ArrayList<ArrayList<DataChangeReportComparer>> changeReport = parser.parse(changeReportString);
+
+ for (int i = 0; i < changeReport.size(); i++) {
+ for (int j = 0; j < changeReport.get(i).size(); j++) {
+ comparableString.append(changeReport.get(i).get(j).getContent());
+ }
+ }
+ return comparableString.toString().replaceAll("><", ">\n<");
+ }
+
+ private static String getReport(String dbGuid, ChangeData changeData) {
+ StringBuffer sb = new StringBuffer();
+ sb.append(String.format("<%s %s=\"%s\">", VCR_ROOT_ELEMENT_TAG, VCR_DB_GUID, dbGuid));
+ for (Change change : changeData.getChanges()) {
+ if (change instanceof RelationChange) {
+ sb.append(toXml((RelationChange) change));
+ } else if (change instanceof ArtifactChange) {
+ sb.append(toXml((ArtifactChange) change));
+ } else if (change instanceof AttributeChange) {
+ sb.append(toXml((AttributeChange) change));
+ }
+ }
+ sb.append(String.format("</%s>", VCR_ROOT_ELEMENT_TAG));
+ String toReturn = sb.toString().replaceAll(">[\\s\\n\\r]+$", ">");
+ return toReturn.replaceAll("\n", "");
+ }
+
+ private static void toXmlCommon(Change change, StringBuffer sb) {
+ sb.append(AXml.addTagData(TxImportedValidateChangeReports.BRANCH_ID_ALIASES, change.getBranch().getGuid()));
+ }
+
+ private static String toXml(RelationChange change) {
+ StringBuffer sb = new StringBuffer();
+ toXmlCommon(change, sb);
+ sb.append(AXml.addTagData("artTId", String.valueOf(change.getItemTypeId())));
+ sb.append(AXml.addTagData("gamma", String.valueOf(change.getGamma())));
+ sb.append(AXml.addTagData("artId", String.valueOf(change.getArtId())));
+ sb.append(AXml.addTagData("tTranId", String.valueOf(change.getTxDelta().getEndTx().getId())));
+ sb.append(AXml.addTagData("fTranId", String.valueOf(change.getTxDelta().getStartTx().getId())));
+ sb.append(AXml.addTagData("mType", String.valueOf(change.getModificationType().name())));
+ sb.append(AXml.addTagData("bArtId", String.valueOf(change.getBArtId())));
+ sb.append(AXml.addTagData("relId", String.valueOf(change.getRelLinkId())));
+ sb.append(AXml.addTagData("rat", change.getRationale()));
+ sb.append(AXml.addTagData("relTId", String.valueOf(change.getRelationType().getId())));
+ sb.append(AXml.addTagData("hist", String.valueOf(change.isHistorical())));
+ return AXml.addTagData("RelChg", sb.toString());
+ }
+
+ private static String toXml(ArtifactChange change) {
+ StringBuffer sb = new StringBuffer();
+ toXmlCommon(change, sb);
+ sb.append(AXml.addTagData("artTId", String.valueOf(change.getItemTypeId())));
+ sb.append(AXml.addTagData("gamma", String.valueOf(change.getGamma())));
+ sb.append(AXml.addTagData("artId", String.valueOf(change.getArtId())));
+ sb.append(AXml.addTagData("tTranId", String.valueOf(change.getTxDelta().getEndTx().getId())));
+ sb.append(AXml.addTagData("fTranId", String.valueOf(change.getTxDelta().getStartTx().getId())));
+ sb.append(AXml.addTagData("mType", String.valueOf(change.getModificationType().name())));
+ sb.append(AXml.addTagData("hist", String.valueOf(change.isHistorical())));
+ return AXml.addTagData("ArtChg", sb.toString());
+ }
+
+ private static String toXml(AttributeChange change) {
+ StringBuffer sb = new StringBuffer();
+ toXmlCommon(change, sb);
+ sb.append(AXml.addTagData("artTId", String.valueOf(change.getItemTypeId())));
+ sb.append(AXml.addTagData("gamma", String.valueOf(change.getGamma())));
+ sb.append(AXml.addTagData("artId", String.valueOf(change.getArtId())));
+ sb.append(AXml.addTagData("tTranId", String.valueOf(change.getTxDelta().getEndTx().getId())));
+ sb.append(AXml.addTagData("fTranId", String.valueOf(change.getTxDelta().getStartTx().getId())));
+ sb.append(AXml.addTagData("mType", String.valueOf(change.getModificationType().name())));
+ sb.append(AXml.addTagData("aModType", String.valueOf(change.getArtModType().name())));
+ sb.append(AXml.addTagData("attrId", String.valueOf(change.getAttrId())));
+ sb.append(AXml.addTagData("attrTId", String.valueOf(change.getAttributeType().getId())));
+ sb.append(AXml.addTagData("hist", String.valueOf(change.isHistorical())));
+ return AXml.addTagData("AttrChg", sb.toString());
+ }
+
+ private static boolean isXmlChangeDataEqual(String currentData, String storedData) {
+ int checkSum1 = getCheckSum(currentData);
+ int checkSum2 = getCheckSum(storedData);
+
+ boolean result = checkSum1 == checkSum2;
+ if (!result) {
+ ChangeReportComparer comparer = new ChangeReportComparer();
+ comparer.compare(currentData, storedData);
+
+ OseeLog.log(AtsPlugin.class, Level.SEVERE,
+ String.format("Checksums not equal - stored:[%s] current:[%s]", checkSum1, checkSum2));
+ }
+ return result;
+ }
+
+ private static int getCheckSum(String data) {
+ int checksum = -1;
+ for (int index = 0; index < data.length(); index++) {
+ char character = data.charAt(index);
+ if (character != '\n' && character != '\t' && character != '\r' && character != ' ') {
+ checksum += character;
+ }
+ }
+ return checksum;
+ }
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/health/change/ArtifactChangeReportComparer.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/health/change/ArtifactChangeReportComparer.java
index 63b20287e4d..252aea809e2 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/health/change/ArtifactChangeReportComparer.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/health/change/ArtifactChangeReportComparer.java
@@ -1,45 +1,45 @@
-/*******************************************************************************
- * 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.health.change;
-
-/**
- * @author Jeff C. Phillips
- */
-public class ArtifactChangeReportComparer extends DataChangeReportComparer {
- private int artId;
- public static String ART_START_TAG = "<artId>";
- public static String ART_END_TAG = "</artId>";
-
- public ArtifactChangeReportComparer(String content) {
- super(content);
- }
-
- @Override
- public void processContent(String content) {
- artId =
- Integer.parseInt(content.substring(content.indexOf(ART_START_TAG) + ART_START_TAG.length(),
- content.indexOf(ART_END_TAG)));
- }
-
- @Override
- public int compareTo(Object obj) {
- int compareResult = -1;
- if (obj instanceof ArtifactChangeReportComparer) {
- ArtifactChangeReportComparer comparer = (ArtifactChangeReportComparer) obj;
- if (this.artId == comparer.artId) {
- compareResult = 0;
- } else if (this.artId > comparer.artId) {
- compareResult = 1;
- }
- }
- return compareResult;
- }
-}
+/*******************************************************************************
+ * 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.health.change;
+
+/**
+ * @author Jeff C. Phillips
+ */
+public class ArtifactChangeReportComparer extends DataChangeReportComparer {
+ private int artId;
+ public static String ART_START_TAG = "<artId>";
+ public static String ART_END_TAG = "</artId>";
+
+ public ArtifactChangeReportComparer(String content) {
+ super(content);
+ }
+
+ @Override
+ public void processContent(String content) {
+ artId =
+ Integer.parseInt(content.substring(content.indexOf(ART_START_TAG) + ART_START_TAG.length(),
+ content.indexOf(ART_END_TAG)));
+ }
+
+ @Override
+ public int compareTo(Object obj) {
+ int compareResult = -1;
+ if (obj instanceof ArtifactChangeReportComparer) {
+ ArtifactChangeReportComparer comparer = (ArtifactChangeReportComparer) obj;
+ if (this.artId == comparer.artId) {
+ compareResult = 0;
+ } else if (this.artId > comparer.artId) {
+ compareResult = 1;
+ }
+ }
+ return compareResult;
+ }
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/health/change/AttributeChangeReportComparer.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/health/change/AttributeChangeReportComparer.java
index db045871d24..7706d2525d4 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/health/change/AttributeChangeReportComparer.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/health/change/AttributeChangeReportComparer.java
@@ -1,57 +1,57 @@
-/*******************************************************************************
- * 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.health.change;
-
-/**
- * @author Jeff C. Phillips
- */
-public class AttributeChangeReportComparer extends DataChangeReportComparer {
- private static String ATTR_START_TAG = "<attrId>";
- private static String ATTR_END_TAG = "</attrId>";
- private int artId;
- private int attrId;
-
- public AttributeChangeReportComparer(String content) {
- super(content);
- }
-
- @Override
- public void processContent(String content) {
- artId =
- Integer.parseInt(content.substring(
- content.indexOf(ArtifactChangeReportComparer.ART_START_TAG) + ArtifactChangeReportComparer.ART_START_TAG.length(),
- content.indexOf(ArtifactChangeReportComparer.ART_END_TAG)));
-
- attrId =
- Integer.parseInt(content.substring(content.indexOf(ATTR_START_TAG) + ATTR_START_TAG.length(),
- content.indexOf(ATTR_END_TAG)));
- }
-
- @Override
- public int compareTo(Object obj) {
- int compareResults = -1;
-
- if (obj instanceof AttributeChangeReportComparer) {
- AttributeChangeReportComparer comparer = (AttributeChangeReportComparer) obj;
-
- if (this.artId == comparer.artId) {
- if (this.attrId == comparer.attrId) {
- compareResults = 0;
- } else if (this.attrId > comparer.attrId) {
- compareResults = 1;
- }
- } else if (this.artId > comparer.artId) {
- compareResults = 1;
- }
- }
- return compareResults;
- }
-}
+/*******************************************************************************
+ * 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.health.change;
+
+/**
+ * @author Jeff C. Phillips
+ */
+public class AttributeChangeReportComparer extends DataChangeReportComparer {
+ private static String ATTR_START_TAG = "<attrId>";
+ private static String ATTR_END_TAG = "</attrId>";
+ private int artId;
+ private int attrId;
+
+ public AttributeChangeReportComparer(String content) {
+ super(content);
+ }
+
+ @Override
+ public void processContent(String content) {
+ artId =
+ Integer.parseInt(content.substring(
+ content.indexOf(ArtifactChangeReportComparer.ART_START_TAG) + ArtifactChangeReportComparer.ART_START_TAG.length(),
+ content.indexOf(ArtifactChangeReportComparer.ART_END_TAG)));
+
+ attrId =
+ Integer.parseInt(content.substring(content.indexOf(ATTR_START_TAG) + ATTR_START_TAG.length(),
+ content.indexOf(ATTR_END_TAG)));
+ }
+
+ @Override
+ public int compareTo(Object obj) {
+ int compareResults = -1;
+
+ if (obj instanceof AttributeChangeReportComparer) {
+ AttributeChangeReportComparer comparer = (AttributeChangeReportComparer) obj;
+
+ if (this.artId == comparer.artId) {
+ if (this.attrId == comparer.attrId) {
+ compareResults = 0;
+ } else if (this.attrId > comparer.attrId) {
+ compareResults = 1;
+ }
+ } else if (this.artId > comparer.artId) {
+ compareResults = 1;
+ }
+ }
+ return compareResults;
+ }
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/health/change/DataChangeReportComparer.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/health/change/DataChangeReportComparer.java
index 6f2b951a2ee..ee14c9f1f7e 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/health/change/DataChangeReportComparer.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/health/change/DataChangeReportComparer.java
@@ -1,29 +1,29 @@
-/*******************************************************************************
- * 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.health.change;
-
-/**
- * @author Jeff C. Phillips
- */
-public abstract class DataChangeReportComparer implements Comparable<Object> {
- private final String content;
-
- public DataChangeReportComparer(String content) {
- this.content = content;
- processContent(content);
- }
-
- public abstract void processContent(String content);
-
- public String getContent() {
- return content;
- }
-}
+/*******************************************************************************
+ * 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.health.change;
+
+/**
+ * @author Jeff C. Phillips
+ */
+public abstract class DataChangeReportComparer implements Comparable<Object> {
+ private final String content;
+
+ public DataChangeReportComparer(String content) {
+ this.content = content;
+ processContent(content);
+ }
+
+ public abstract void processContent(String content);
+
+ public String getContent() {
+ return content;
+ }
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/health/change/RelationChangeReportComparer.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/health/change/RelationChangeReportComparer.java
index 39e8bea977d..9ed395d0281 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/health/change/RelationChangeReportComparer.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/health/change/RelationChangeReportComparer.java
@@ -1,47 +1,47 @@
-/*******************************************************************************
- * 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.health.change;
-
-/**
- * @author Jeff C. Phillips
- */
-public class RelationChangeReportComparer extends DataChangeReportComparer {
- private static String REL_TAG_START_ID = "<relId>";
- private static String REL_TAG_END_ID = "</relId>";
- private int relId;
-
- public RelationChangeReportComparer(String content) {
- super(content);
- }
-
- @Override
- public void processContent(String content) {
- relId =
- Integer.parseInt(content.substring(content.indexOf(REL_TAG_START_ID) + REL_TAG_START_ID.length(),
- content.indexOf(REL_TAG_END_ID)));
- }
-
- @Override
- public int compareTo(Object obj) {
- int compareResults = -1;
- if (obj instanceof RelationChangeReportComparer) {
- RelationChangeReportComparer comparer = (RelationChangeReportComparer) obj;
-
- if (this.relId == comparer.relId) {
- compareResults = 0;
- } else if (this.relId > comparer.relId) {
- compareResults = 1;
- }
- }
- return compareResults;
- }
-
-}
+/*******************************************************************************
+ * 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.health.change;
+
+/**
+ * @author Jeff C. Phillips
+ */
+public class RelationChangeReportComparer extends DataChangeReportComparer {
+ private static String REL_TAG_START_ID = "<relId>";
+ private static String REL_TAG_END_ID = "</relId>";
+ private int relId;
+
+ public RelationChangeReportComparer(String content) {
+ super(content);
+ }
+
+ @Override
+ public void processContent(String content) {
+ relId =
+ Integer.parseInt(content.substring(content.indexOf(REL_TAG_START_ID) + REL_TAG_START_ID.length(),
+ content.indexOf(REL_TAG_END_ID)));
+ }
+
+ @Override
+ public int compareTo(Object obj) {
+ int compareResults = -1;
+ if (obj instanceof RelationChangeReportComparer) {
+ RelationChangeReportComparer comparer = (RelationChangeReportComparer) obj;
+
+ if (this.relId == comparer.relId) {
+ compareResults = 0;
+ } else if (this.relId > comparer.relId) {
+ compareResults = 1;
+ }
+ }
+ return compareResults;
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/health/change/ValidateChangeReportParser.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/health/change/ValidateChangeReportParser.java
index b22f17b96d1..7cde30cbe59 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/health/change/ValidateChangeReportParser.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/health/change/ValidateChangeReportParser.java
@@ -1,65 +1,64 @@
-/*******************************************************************************
- * 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.health.change;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-/**
- * @author Jeff C. Phillips
- */
-public class ValidateChangeReportParser {
- private static final String ART = "(<ArtChg>.*?</ArtChg>)";
- private static final String ATTR = "(<AttrChg>.*?</AttrChg>)";
- private static final String REL = "(<RelChg>.*?</RelChg>)";
-
- /**
- * @param changeReportString
- * @return Returns Three ArrayLists. 0 index for artifact changes, 1 index for attribute changes and 2 index for
- * relation changes.
- */
- public ArrayList<ArrayList<DataChangeReportComparer>> parse(String changeReportString) {
- ArrayList<ArrayList<DataChangeReportComparer>> changeLists =
- new ArrayList<ArrayList<DataChangeReportComparer>>(3);
- ArrayList<DataChangeReportComparer> artifactChanges = new ArrayList<DataChangeReportComparer>();
- ArrayList<DataChangeReportComparer> attrChanges = new ArrayList<DataChangeReportComparer>();
- ArrayList<DataChangeReportComparer> relChanges = new ArrayList<DataChangeReportComparer>();
-
- Matcher artChangeMatch = Pattern.compile(ART).matcher(changeReportString);
-
- while (artChangeMatch.find()) {
- artifactChanges.add(new ArtifactChangeReportComparer(artChangeMatch.group(0)));
- }
-
- Matcher attrChangeMatch = Pattern.compile(ATTR).matcher(changeReportString);
-
- while (attrChangeMatch.find()) {
- attrChanges.add(new AttributeChangeReportComparer(attrChangeMatch.group(0)));
- }
-
- Matcher relChangeMatch = Pattern.compile(REL).matcher(changeReportString);
-
- while (relChangeMatch.find()) {
- relChanges.add(new RelationChangeReportComparer(relChangeMatch.group(0)));
- }
- Collections.sort(artifactChanges);
- Collections.sort(attrChanges);
- Collections.sort(relChanges);
-
- changeLists.add(artifactChanges);
- changeLists.add(attrChanges);
- changeLists.add(relChanges);
-
- return changeLists;
- }
-}
+/*******************************************************************************
+ * 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.health.change;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * @author Jeff C. Phillips
+ */
+public class ValidateChangeReportParser {
+ private static final String ART = "(<ArtChg>.*?</ArtChg>)";
+ private static final String ATTR = "(<AttrChg>.*?</AttrChg>)";
+ private static final String REL = "(<RelChg>.*?</RelChg>)";
+
+ /**
+ * @return Returns Three ArrayLists. 0 index for artifact changes, 1 index for attribute changes and 2 index for
+ * relation changes.
+ */
+ public ArrayList<ArrayList<DataChangeReportComparer>> parse(String changeReportString) {
+ ArrayList<ArrayList<DataChangeReportComparer>> changeLists =
+ new ArrayList<ArrayList<DataChangeReportComparer>>(3);
+ ArrayList<DataChangeReportComparer> artifactChanges = new ArrayList<DataChangeReportComparer>();
+ ArrayList<DataChangeReportComparer> attrChanges = new ArrayList<DataChangeReportComparer>();
+ ArrayList<DataChangeReportComparer> relChanges = new ArrayList<DataChangeReportComparer>();
+
+ Matcher artChangeMatch = Pattern.compile(ART).matcher(changeReportString);
+
+ while (artChangeMatch.find()) {
+ artifactChanges.add(new ArtifactChangeReportComparer(artChangeMatch.group(0)));
+ }
+
+ Matcher attrChangeMatch = Pattern.compile(ATTR).matcher(changeReportString);
+
+ while (attrChangeMatch.find()) {
+ attrChanges.add(new AttributeChangeReportComparer(attrChangeMatch.group(0)));
+ }
+
+ Matcher relChangeMatch = Pattern.compile(REL).matcher(changeReportString);
+
+ while (relChangeMatch.find()) {
+ relChanges.add(new RelationChangeReportComparer(relChangeMatch.group(0)));
+ }
+ Collections.sort(artifactChanges);
+ Collections.sort(attrChanges);
+ Collections.sort(relChanges);
+
+ changeLists.add(artifactChanges);
+ changeLists.add(attrChanges);
+ changeLists.add(relChanges);
+
+ return changeLists;
+ }
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/hyper/ActionHyperItem.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/hyper/ActionHyperItem.java
index fc112cbd745..6f59b3e579b 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/hyper/ActionHyperItem.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/hyper/ActionHyperItem.java
@@ -1,127 +1,127 @@
-/*******************************************************************************
- * 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.hyper;
-
-import java.util.ArrayList;
-import java.util.logging.Level;
-import org.eclipse.osee.ats.internal.AtsPlugin;
-import org.eclipse.osee.framework.core.exception.OseeCoreException;
-import org.eclipse.osee.framework.logging.OseeLog;
-import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
-import org.eclipse.osee.framework.ui.skynet.ArtifactImageManager;
-import org.eclipse.swt.graphics.Image;
-
-public class ActionHyperItem extends HyperViewItem {
-
- private final IHyperArtifact iHyperartifact;
-
- public ActionHyperItem(IHyperArtifact iHyperartifact) {
- super(iHyperartifact.getHyperName());
- this.iHyperartifact = iHyperartifact;
- setGuid(iHyperartifact.getGuid());
- }
-
- @Override
- public String toString() {
- return iHyperartifact.getHyperType() + " - " + iHyperartifact.getHyperName();
- }
-
- public void handleDoubleClick(HyperViewItem hyperViewItem) {
- // provided for subclass implementation
- }
-
- public void calculateCurrent(Artifact currentArtifact) {
- setCurrent(currentArtifact.equals(getArtifact()));
- for (ActionHyperItem childHyperItem : getChildren()) {
- childHyperItem.calculateCurrent(currentArtifact);
- }
- }
-
- @SuppressWarnings("unused")
- @Override
- public Image getImage() throws OseeCoreException {
- if (iHyperartifact.getHyperArtifact() == null) {
- return null;
- }
- if (iHyperartifact.isDeleted()) {
- return null;
- }
- return ArtifactImageManager.getImage(iHyperartifact.getHyperArtifact());
- }
-
- @Override
- public String getTitle() {
- if (iHyperartifact.isDeleted()) {
- return "Deleted";
- }
- return iHyperartifact.getHyperName();
- }
-
- @Override
- public String getToolTip() {
- if (iHyperartifact.isDeleted()) {
- return "";
- }
- StringBuilder builder = new StringBuilder();
- builder.append("Name: " + iHyperartifact.getHyperName());
- builder.append("\nType: " + iHyperartifact.getHyperType());
- if (iHyperartifact.getHyperState() != null) {
- builder.append("\nState: " + iHyperartifact.getHyperState());
- }
- if (iHyperartifact.getHyperAssignee() != null) {
- builder.append("\nAssignee: " + iHyperartifact.getHyperAssignee());
- }
- if (iHyperartifact.getHyperTargetVersion() != null) {
- builder.append("\nVersion: " + iHyperartifact.getHyperTargetVersion());
- }
-
- return builder.toString();
- }
-
- @Override
- public Image getMarkImage() {
- if (iHyperartifact.isDeleted()) {
- return null;
- }
- try {
- return iHyperartifact.getHyperAssigneeImage();
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
- return super.getMarkImage();
- }
-
- public ArrayList<ActionHyperItem> getChildren() {
- ArrayList<ActionHyperItem> children = new ArrayList<ActionHyperItem>();
- for (HyperViewItem item : getBottom()) {
- children.add((ActionHyperItem) item);
- }
- for (HyperViewItem item : getTop()) {
- children.add((ActionHyperItem) item);
- }
- for (HyperViewItem item : getRight()) {
- children.add((ActionHyperItem) item);
- }
- for (HyperViewItem item : getLeft()) {
- children.add((ActionHyperItem) item);
- }
- return children;
- }
-
- public IHyperArtifact getHyperArtifact() {
- return iHyperartifact;
- }
-
- public Artifact getArtifact() {
- return iHyperartifact.getHyperArtifact();
- }
-
-}
+/*******************************************************************************
+ * 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.hyper;
+
+import java.util.ArrayList;
+import java.util.logging.Level;
+import org.eclipse.osee.ats.internal.AtsPlugin;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.logging.OseeLog;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.ui.skynet.ArtifactImageManager;
+import org.eclipse.swt.graphics.Image;
+
+public class ActionHyperItem extends HyperViewItem {
+
+ private final IHyperArtifact iHyperartifact;
+
+ public ActionHyperItem(IHyperArtifact iHyperartifact) {
+ super(iHyperartifact.getHyperName());
+ this.iHyperartifact = iHyperartifact;
+ setGuid(iHyperartifact.getGuid());
+ }
+
+ @Override
+ public String toString() {
+ return iHyperartifact.getHyperType() + " - " + iHyperartifact.getHyperName();
+ }
+
+ public void handleDoubleClick(HyperViewItem hyperViewItem) {
+ // provided for subclass implementation
+ }
+
+ public void calculateCurrent(Artifact currentArtifact) {
+ setCurrent(currentArtifact.equals(getArtifact()));
+ for (ActionHyperItem childHyperItem : getChildren()) {
+ childHyperItem.calculateCurrent(currentArtifact);
+ }
+ }
+
+ @SuppressWarnings("unused")
+ @Override
+ public Image getImage() throws OseeCoreException {
+ if (iHyperartifact.getHyperArtifact() == null) {
+ return null;
+ }
+ if (iHyperartifact.isDeleted()) {
+ return null;
+ }
+ return ArtifactImageManager.getImage(iHyperartifact.getHyperArtifact());
+ }
+
+ @Override
+ public String getTitle() {
+ if (iHyperartifact.isDeleted()) {
+ return "Deleted";
+ }
+ return iHyperartifact.getHyperName();
+ }
+
+ @Override
+ public String getToolTip() {
+ if (iHyperartifact.isDeleted()) {
+ return "";
+ }
+ StringBuilder builder = new StringBuilder();
+ builder.append("Name: " + iHyperartifact.getHyperName());
+ builder.append("\nType: " + iHyperartifact.getHyperType());
+ if (iHyperartifact.getHyperState() != null) {
+ builder.append("\nState: " + iHyperartifact.getHyperState());
+ }
+ if (iHyperartifact.getHyperAssignee() != null) {
+ builder.append("\nAssignee: " + iHyperartifact.getHyperAssignee());
+ }
+ if (iHyperartifact.getHyperTargetVersion() != null) {
+ builder.append("\nVersion: " + iHyperartifact.getHyperTargetVersion());
+ }
+
+ return builder.toString();
+ }
+
+ @Override
+ public Image getMarkImage() {
+ if (iHyperartifact.isDeleted()) {
+ return null;
+ }
+ try {
+ return iHyperartifact.getHyperAssigneeImage();
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ }
+ return super.getMarkImage();
+ }
+
+ public ArrayList<ActionHyperItem> getChildren() {
+ ArrayList<ActionHyperItem> children = new ArrayList<ActionHyperItem>();
+ for (HyperViewItem item : getBottom()) {
+ children.add((ActionHyperItem) item);
+ }
+ for (HyperViewItem item : getTop()) {
+ children.add((ActionHyperItem) item);
+ }
+ for (HyperViewItem item : getRight()) {
+ children.add((ActionHyperItem) item);
+ }
+ for (HyperViewItem item : getLeft()) {
+ children.add((ActionHyperItem) item);
+ }
+ return children;
+ }
+
+ public IHyperArtifact getHyperArtifact() {
+ return iHyperartifact;
+ }
+
+ public Artifact getArtifact() {
+ return iHyperartifact.getHyperArtifact();
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/hyper/ActionHyperView.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/hyper/ActionHyperView.java
index 6201044f22a..690b3970f71 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/hyper/ActionHyperView.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/hyper/ActionHyperView.java
@@ -1,369 +1,369 @@
-/*******************************************************************************
- * 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.hyper;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.logging.Level;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.osee.ats.AtsOpenOption;
-import org.eclipse.osee.ats.artifact.ATSArtifact;
-import org.eclipse.osee.ats.artifact.ActionArtifact;
-import org.eclipse.osee.ats.artifact.GoalArtifact;
-import org.eclipse.osee.ats.artifact.ReviewSMArtifact;
-import org.eclipse.osee.ats.artifact.TaskArtifact;
-import org.eclipse.osee.ats.artifact.TaskableStateMachineArtifact;
-import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact;
-import org.eclipse.osee.ats.config.AtsBulkLoad;
-import org.eclipse.osee.ats.editor.SMAEditor;
-import org.eclipse.osee.ats.internal.AtsPlugin;
-import org.eclipse.osee.ats.util.AtsRelationTypes;
-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.logging.OseeLog;
-import org.eclipse.osee.framework.plugin.core.IActionable;
-import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
-import org.eclipse.osee.framework.skynet.core.event.FrameworkTransactionData;
-import org.eclipse.osee.framework.skynet.core.event.IFrameworkTransactionEventListener;
-import org.eclipse.osee.framework.skynet.core.event.OseeEventManager;
-import org.eclipse.osee.framework.skynet.core.event.Sender;
-import org.eclipse.osee.framework.skynet.core.event2.ArtifactEvent;
-import org.eclipse.osee.framework.skynet.core.event2.artifact.IArtifactEventListener;
-import org.eclipse.osee.framework.skynet.core.event2.filter.IEventFilter;
-import org.eclipse.osee.framework.ui.plugin.OseeUiActions;
-import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
-import org.eclipse.osee.framework.ui.skynet.util.DbConnectionExceptionComposite;
-import org.eclipse.osee.framework.ui.swt.Displays;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Cursor;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IPerspectiveDescriptor;
-import org.eclipse.ui.IPerspectiveListener2;
-import org.eclipse.ui.IViewReference;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchPartReference;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.PlatformUI;
-
-/**
- * <REM2>
- *
- * @author Donald G. Dunne
- */
-public class ActionHyperView extends HyperView implements IActionable, IArtifactEventListener, IFrameworkTransactionEventListener, IPerspectiveListener2 {
-
- public static String VIEW_ID = "org.eclipse.osee.ats.hyper.ActionHyperView";
- private static String HELP_CONTEXT_ID = "atsActionView";
- private static ActionHyperItem topAHI;
- private static ATSArtifact currentArtifact;
- private Cursor cursor;
-
- public ActionHyperView() {
- super();
- PlatformUI.getWorkbench().getActiveWorkbenchWindow().getPartService().addPartListener(this);
- PlatformUI.getWorkbench().getActiveWorkbenchWindow().addPerspectiveListener(this);
- HyperView.setNodeColor(whiteColor);
- HyperView.setCenterColor(whiteColor);
- setVerticalSelection(45);
- }
-
- @Override
- public void createPartControl(Composite top) {
- if (!DbConnectionExceptionComposite.dbConnectionIsOk(top)) {
- PlatformUI.getWorkbench().getActiveWorkbenchWindow().getPartService().removePartListener(this);
- PlatformUI.getWorkbench().getActiveWorkbenchWindow().removePerspectiveListener(this);
- return;
- }
- AtsBulkLoad.loadConfig(false);
- super.createPartControl(top);
- OseeUiActions.addBugToViewToolbar(this, this, AtsPlugin.getInstance(), VIEW_ID, "SkyWalker");
- AtsPlugin.getInstance().setHelp(top, HELP_CONTEXT_ID, "org.eclipse.osee.ats.help.ui");
- AtsPlugin.getInstance().setHelp(composite, HELP_CONTEXT_ID, "org.eclipse.osee.ats.help.ui");
- OseeEventManager.addListener(this);
- }
-
- public static ActionHyperView getArtifactHyperView() {
- IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
- try {
- IViewReference ivr = page.findViewReference(ActionHyperView.VIEW_ID);
- if (ivr != null && page.isPartVisible(ivr.getPart(false))) {
- return (ActionHyperView) page.showView(ActionHyperView.VIEW_ID);
- }
- } catch (PartInitException e1) {
- MessageDialog.openInformation(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), "Launch Error",
- "Couldn't Get OSEE Hyper View " + e1.getMessage());
- }
- return null;
- }
-
- @Override
- public boolean provideBackForwardActions() {
- return false;
- }
-
- @Override
- public void dispose() {
- OseeEventManager.removeListener(this);
- super.dispose();
- }
-
- @Override
- public void handleItemDoubleClick(HyperViewItem hvi) {
- Artifact art = ((ActionHyperItem) hvi).getArtifact();
- if (art == null) {
- ((ActionHyperItem) hvi).handleDoubleClick(hvi);
-
- } else if (art.isDeleted()) {
- AWorkbench.popup("ERROR", "Artifact has been deleted");
- return;
- } else {
- AtsUtil.openATSAction(art, AtsOpenOption.OpenOneOrPopupSelect);
- }
- }
-
- private boolean reviewsCreated = false;
- private boolean tasksReviewsCreated = false;
-
- @Override
- public void display() {
- try {
- if (cursor == null) {
- cursor = new Cursor(null, SWT.NONE);
- }
- getContainer().setCursor(cursor);
- if (currentArtifact == null || currentArtifact.isDeleted()) {
- return;
- }
- reviewsCreated = false;
- tasksReviewsCreated = false;
- ATSArtifact topArt = getTopArtifact(currentArtifact);
- if (topArt == null || topArt.isDeleted()) {
- return;
- }
- topAHI = new ActionHyperItem(topArt);
- if (topArt instanceof ActionArtifact) {
- for (TeamWorkFlowArtifact team : ((ActionArtifact) topArt).getTeamWorkFlowArtifacts()) {
- ActionHyperItem teamAHI = new ActionHyperItem(team);
- teamAHI.setRelationToolTip("Team");
- topAHI.addBottom(teamAHI);
- for (ReviewSMArtifact rev : ReviewManager.getReviews(team)) {
- reviewsCreated = true;
- ActionHyperItem reviewAHI = new ActionHyperItem(rev);
- reviewAHI.setRelationToolTip("Review");
- teamAHI.addBottom(reviewAHI);
- addTasksAHIs(reviewAHI, rev);
- }
- addTasksAHIs(teamAHI, team);
- }
- }
- if (topArt instanceof GoalArtifact) {
- List<TaskArtifact> taskArts = new ArrayList<TaskArtifact>();
- for (Artifact member : topArt.getRelatedArtifacts(AtsRelationTypes.Goal_Member)) {
- if (member instanceof TaskArtifact) {
- taskArts.add((TaskArtifact) member);
- } else if (member instanceof IHyperArtifact) {
- ActionHyperItem teamAHI = new ActionHyperItem((IHyperArtifact) member);
- teamAHI.setRelationToolTip("Member");
- topAHI.addBottom(teamAHI);
- }
- }
- if (taskArts.size() > 0) {
- topAHI.addBottom(new TasksActionHyperItem(taskArts));
- }
- }
-
- if (activeEditorIsActionEditor()) {
- topAHI.calculateCurrent(currentArtifact);
- }
- if (tasksReviewsCreated) {
- setVerticalSelection(50);
- } else if (reviewsCreated) {
- setVerticalSelection(47);
- } else {
- setVerticalSelection(45);
- }
- create(topAHI);
- } catch (OseeCoreException ex) {
- clear();
- }
- }
-
- private void addTasksAHIs(ActionHyperItem parentAHI, ATSArtifact artifact) throws OseeCoreException {
- if (!(artifact instanceof TaskableStateMachineArtifact)) {
- return;
- }
- if (((TaskableStateMachineArtifact) artifact).getTaskArtifacts().size() > 0) {
- if (artifact instanceof ReviewSMArtifact) {
- tasksReviewsCreated = true;
- }
- parentAHI.addBottom(new TasksActionHyperItem(((TaskableStateMachineArtifact) artifact).getTaskArtifacts()));
- }
- }
-
- public ATSArtifact getTopArtifact(ATSArtifact art) throws OseeCoreException {
- ATSArtifact artifact = art;
- if (artifact instanceof TaskArtifact) {
- artifact = ((TaskArtifact) artifact).getParentSMA();
- }
- if (artifact instanceof TeamWorkFlowArtifact) {
- artifact = ((TeamWorkFlowArtifact) artifact).getParentActionArtifact();
- }
- if (artifact instanceof ReviewSMArtifact) {
- if (((ReviewSMArtifact) artifact).getParentActionArtifact() != null) {
- artifact = ((ReviewSMArtifact) artifact).getParentActionArtifact();
- }
- }
- if (artifact == null) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, "Unknown parent " + art.getHumanReadableId());
- }
- return artifact;
- }
-
- public boolean activeEditorIsActionEditor() {
- IWorkbenchPage page = getSite().getWorkbenchWindow().getActivePage();
- if (page == null) {
- return false;
- }
- IEditorPart editorPart = page.getActiveEditor();
- boolean result = editorPart != null && editorPart instanceof SMAEditor;
- return result;
- }
-
- public void processWindowActivated() {
- if (!this.getSite().getPage().isPartVisible(this)) {
- return;
- }
- IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
- if (page != null) {
- IEditorPart editor = page.getActiveEditor();
- if (editor != null && editor instanceof SMAEditor) {
- currentArtifact = ((SMAEditor) editor).getSma();
- display();
- } else if (currentArtifact != null && currentArtifact.isDeleted()) {
- super.clear();
- }
- }
- }
-
- public void processWindowDeActivated(IWorkbenchPart part) {
- processWindowActivated();
- }
-
- @Override
- public void partActivated(IWorkbenchPart part) {
- processWindowActivated();
- }
-
- @Override
- public void partBroughtToTop(IWorkbenchPart part) {
- processWindowActivated();
- }
-
- @Override
- public void partClosed(IWorkbenchPart part) {
- if (part.equals(this)) {
- dispose();
- } else {
- processWindowActivated();
- }
- }
-
- @Override
- public void partDeactivated(IWorkbenchPart part) {
- processWindowActivated();
- }
-
- @Override
- public void partOpened(IWorkbenchPart part) {
- processWindowActivated();
- }
-
- @Override
- public String getActionDescription() {
- if (currentArtifact != null && currentArtifact.isDeleted()) {
- return String.format("Current Artifact - %s - %s", currentArtifact.getGuid(), currentArtifact.getName());
- }
- return "";
- }
-
- @Override
- protected void clear() {
- super.clear();
- }
-
- @Override
- public void perspectiveActivated(IWorkbenchPage page, IPerspectiveDescriptor perspective) {
- processWindowActivated();
- }
-
- @Override
- public void perspectiveChanged(IWorkbenchPage page, IPerspectiveDescriptor perspective, String changeId) {
- processWindowActivated();
- }
-
- @Override
- public void perspectiveChanged(IWorkbenchPage page, IPerspectiveDescriptor perspective, IWorkbenchPartReference partRef, String changeId) {
- processWindowActivated();
- }
-
- @Override
- public void handleFrameworkTransactionEvent(Sender sender, FrameworkTransactionData transData) throws OseeCoreException {
- if (currentArtifact == null) {
- return;
- }
- if (transData.branchId != AtsUtil.getAtsBranch().getId()) {
- return;
- }
- if (transData.isDeleted(currentArtifact)) {
- Displays.ensureInDisplayThread(new Runnable() {
- @Override
- public void run() {
- clear();
- }
- });
- }
- Displays.ensureInDisplayThread(new Runnable() {
- @Override
- public void run() {
- display();
- }
- });
- }
-
- @Override
- public List<? extends IEventFilter> getEventFilters() {
- return AtsUtil.getAtsObjectEventFilters();
- }
-
- @Override
- public void handleArtifactEvent(ArtifactEvent artifactEvent, Sender sender) {
- if (currentArtifact == null) {
- return;
- }
- if (artifactEvent.isDeletedPurged(currentArtifact)) {
- Displays.ensureInDisplayThread(new Runnable() {
- @Override
- public void run() {
- clear();
- }
- });
- }
- Displays.ensureInDisplayThread(new Runnable() {
- @Override
- public void run() {
- display();
- }
- });
- }
-}
+/*******************************************************************************
+ * 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.hyper;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.logging.Level;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.osee.ats.AtsOpenOption;
+import org.eclipse.osee.ats.artifact.ATSArtifact;
+import org.eclipse.osee.ats.artifact.ActionArtifact;
+import org.eclipse.osee.ats.artifact.GoalArtifact;
+import org.eclipse.osee.ats.artifact.ReviewSMArtifact;
+import org.eclipse.osee.ats.artifact.TaskArtifact;
+import org.eclipse.osee.ats.artifact.TaskableStateMachineArtifact;
+import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact;
+import org.eclipse.osee.ats.config.AtsBulkLoad;
+import org.eclipse.osee.ats.editor.SMAEditor;
+import org.eclipse.osee.ats.internal.AtsPlugin;
+import org.eclipse.osee.ats.util.AtsRelationTypes;
+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.logging.OseeLog;
+import org.eclipse.osee.framework.plugin.core.IActionable;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.event.FrameworkTransactionData;
+import org.eclipse.osee.framework.skynet.core.event.IFrameworkTransactionEventListener;
+import org.eclipse.osee.framework.skynet.core.event.OseeEventManager;
+import org.eclipse.osee.framework.skynet.core.event.Sender;
+import org.eclipse.osee.framework.skynet.core.event2.ArtifactEvent;
+import org.eclipse.osee.framework.skynet.core.event2.artifact.IArtifactEventListener;
+import org.eclipse.osee.framework.skynet.core.event2.filter.IEventFilter;
+import org.eclipse.osee.framework.ui.plugin.OseeUiActions;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
+import org.eclipse.osee.framework.ui.skynet.util.DbConnectionExceptionComposite;
+import org.eclipse.osee.framework.ui.swt.Displays;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Cursor;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IPerspectiveDescriptor;
+import org.eclipse.ui.IPerspectiveListener2;
+import org.eclipse.ui.IViewReference;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.IWorkbenchPartReference;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.PlatformUI;
+
+/**
+ * <REM2>
+ *
+ * @author Donald G. Dunne
+ */
+public class ActionHyperView extends HyperView implements IActionable, IArtifactEventListener, IFrameworkTransactionEventListener, IPerspectiveListener2 {
+
+ public static String VIEW_ID = "org.eclipse.osee.ats.hyper.ActionHyperView";
+ private static String HELP_CONTEXT_ID = "atsActionView";
+ private static ActionHyperItem topAHI;
+ private static ATSArtifact currentArtifact;
+ private Cursor cursor;
+
+ public ActionHyperView() {
+ super();
+ PlatformUI.getWorkbench().getActiveWorkbenchWindow().getPartService().addPartListener(this);
+ PlatformUI.getWorkbench().getActiveWorkbenchWindow().addPerspectiveListener(this);
+ HyperView.setNodeColor(whiteColor);
+ HyperView.setCenterColor(whiteColor);
+ setVerticalSelection(45);
+ }
+
+ @Override
+ public void createPartControl(Composite top) {
+ if (!DbConnectionExceptionComposite.dbConnectionIsOk(top)) {
+ PlatformUI.getWorkbench().getActiveWorkbenchWindow().getPartService().removePartListener(this);
+ PlatformUI.getWorkbench().getActiveWorkbenchWindow().removePerspectiveListener(this);
+ return;
+ }
+ AtsBulkLoad.loadConfig(false);
+ super.createPartControl(top);
+ OseeUiActions.addBugToViewToolbar(this, this, AtsPlugin.getInstance(), VIEW_ID, "SkyWalker");
+ AtsPlugin.getInstance().setHelp(top, HELP_CONTEXT_ID, "org.eclipse.osee.ats.help.ui");
+ AtsPlugin.getInstance().setHelp(composite, HELP_CONTEXT_ID, "org.eclipse.osee.ats.help.ui");
+ OseeEventManager.addListener(this);
+ }
+
+ public static ActionHyperView getArtifactHyperView() {
+ IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
+ try {
+ IViewReference ivr = page.findViewReference(ActionHyperView.VIEW_ID);
+ if (ivr != null && page.isPartVisible(ivr.getPart(false))) {
+ return (ActionHyperView) page.showView(ActionHyperView.VIEW_ID);
+ }
+ } catch (PartInitException e1) {
+ MessageDialog.openInformation(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), "Launch Error",
+ "Couldn't Get OSEE Hyper View " + e1.getMessage());
+ }
+ return null;
+ }
+
+ @Override
+ public boolean provideBackForwardActions() {
+ return false;
+ }
+
+ @Override
+ public void dispose() {
+ OseeEventManager.removeListener(this);
+ super.dispose();
+ }
+
+ @Override
+ public void handleItemDoubleClick(HyperViewItem hvi) {
+ Artifact art = ((ActionHyperItem) hvi).getArtifact();
+ if (art == null) {
+ ((ActionHyperItem) hvi).handleDoubleClick(hvi);
+
+ } else if (art.isDeleted()) {
+ AWorkbench.popup("ERROR", "Artifact has been deleted");
+ return;
+ } else {
+ AtsUtil.openATSAction(art, AtsOpenOption.OpenOneOrPopupSelect);
+ }
+ }
+
+ private boolean reviewsCreated = false;
+ private boolean tasksReviewsCreated = false;
+
+ @Override
+ public void display() {
+ try {
+ if (cursor == null) {
+ cursor = new Cursor(null, SWT.NONE);
+ }
+ getContainer().setCursor(cursor);
+ if (currentArtifact == null || currentArtifact.isDeleted()) {
+ return;
+ }
+ reviewsCreated = false;
+ tasksReviewsCreated = false;
+ ATSArtifact topArt = getTopArtifact(currentArtifact);
+ if (topArt == null || topArt.isDeleted()) {
+ return;
+ }
+ topAHI = new ActionHyperItem(topArt);
+ if (topArt instanceof ActionArtifact) {
+ for (TeamWorkFlowArtifact team : ((ActionArtifact) topArt).getTeamWorkFlowArtifacts()) {
+ ActionHyperItem teamAHI = new ActionHyperItem(team);
+ teamAHI.setRelationToolTip("Team");
+ topAHI.addBottom(teamAHI);
+ for (ReviewSMArtifact rev : ReviewManager.getReviews(team)) {
+ reviewsCreated = true;
+ ActionHyperItem reviewAHI = new ActionHyperItem(rev);
+ reviewAHI.setRelationToolTip("Review");
+ teamAHI.addBottom(reviewAHI);
+ addTasksAHIs(reviewAHI, rev);
+ }
+ addTasksAHIs(teamAHI, team);
+ }
+ }
+ if (topArt instanceof GoalArtifact) {
+ List<TaskArtifact> taskArts = new ArrayList<TaskArtifact>();
+ for (Artifact member : topArt.getRelatedArtifacts(AtsRelationTypes.Goal_Member)) {
+ if (member instanceof TaskArtifact) {
+ taskArts.add((TaskArtifact) member);
+ } else if (member instanceof IHyperArtifact) {
+ ActionHyperItem teamAHI = new ActionHyperItem((IHyperArtifact) member);
+ teamAHI.setRelationToolTip("Member");
+ topAHI.addBottom(teamAHI);
+ }
+ }
+ if (taskArts.size() > 0) {
+ topAHI.addBottom(new TasksActionHyperItem(taskArts));
+ }
+ }
+
+ if (activeEditorIsActionEditor()) {
+ topAHI.calculateCurrent(currentArtifact);
+ }
+ if (tasksReviewsCreated) {
+ setVerticalSelection(50);
+ } else if (reviewsCreated) {
+ setVerticalSelection(47);
+ } else {
+ setVerticalSelection(45);
+ }
+ create(topAHI);
+ } catch (OseeCoreException ex) {
+ clear();
+ }
+ }
+
+ private void addTasksAHIs(ActionHyperItem parentAHI, ATSArtifact artifact) throws OseeCoreException {
+ if (!(artifact instanceof TaskableStateMachineArtifact)) {
+ return;
+ }
+ if (((TaskableStateMachineArtifact) artifact).getTaskArtifacts().size() > 0) {
+ if (artifact instanceof ReviewSMArtifact) {
+ tasksReviewsCreated = true;
+ }
+ parentAHI.addBottom(new TasksActionHyperItem(((TaskableStateMachineArtifact) artifact).getTaskArtifacts()));
+ }
+ }
+
+ public ATSArtifact getTopArtifact(ATSArtifact art) throws OseeCoreException {
+ ATSArtifact artifact = art;
+ if (artifact instanceof TaskArtifact) {
+ artifact = ((TaskArtifact) artifact).getParentSMA();
+ }
+ if (artifact instanceof TeamWorkFlowArtifact) {
+ artifact = ((TeamWorkFlowArtifact) artifact).getParentActionArtifact();
+ }
+ if (artifact instanceof ReviewSMArtifact) {
+ if (((ReviewSMArtifact) artifact).getParentActionArtifact() != null) {
+ artifact = ((ReviewSMArtifact) artifact).getParentActionArtifact();
+ }
+ }
+ if (artifact == null) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, "Unknown parent " + art.getHumanReadableId());
+ }
+ return artifact;
+ }
+
+ public boolean activeEditorIsActionEditor() {
+ IWorkbenchPage page = getSite().getWorkbenchWindow().getActivePage();
+ if (page == null) {
+ return false;
+ }
+ IEditorPart editorPart = page.getActiveEditor();
+ boolean result = editorPart != null && editorPart instanceof SMAEditor;
+ return result;
+ }
+
+ public void processWindowActivated() {
+ if (!this.getSite().getPage().isPartVisible(this)) {
+ return;
+ }
+ IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
+ if (page != null) {
+ IEditorPart editor = page.getActiveEditor();
+ if (editor != null && editor instanceof SMAEditor) {
+ currentArtifact = ((SMAEditor) editor).getSma();
+ display();
+ } else if (currentArtifact != null && currentArtifact.isDeleted()) {
+ super.clear();
+ }
+ }
+ }
+
+ public void processWindowDeActivated(IWorkbenchPart part) {
+ processWindowActivated();
+ }
+
+ @Override
+ public void partActivated(IWorkbenchPart part) {
+ processWindowActivated();
+ }
+
+ @Override
+ public void partBroughtToTop(IWorkbenchPart part) {
+ processWindowActivated();
+ }
+
+ @Override
+ public void partClosed(IWorkbenchPart part) {
+ if (part.equals(this)) {
+ dispose();
+ } else {
+ processWindowActivated();
+ }
+ }
+
+ @Override
+ public void partDeactivated(IWorkbenchPart part) {
+ processWindowActivated();
+ }
+
+ @Override
+ public void partOpened(IWorkbenchPart part) {
+ processWindowActivated();
+ }
+
+ @Override
+ public String getActionDescription() {
+ if (currentArtifact != null && currentArtifact.isDeleted()) {
+ return String.format("Current Artifact - %s - %s", currentArtifact.getGuid(), currentArtifact.getName());
+ }
+ return "";
+ }
+
+ @Override
+ protected void clear() {
+ super.clear();
+ }
+
+ @Override
+ public void perspectiveActivated(IWorkbenchPage page, IPerspectiveDescriptor perspective) {
+ processWindowActivated();
+ }
+
+ @Override
+ public void perspectiveChanged(IWorkbenchPage page, IPerspectiveDescriptor perspective, String changeId) {
+ processWindowActivated();
+ }
+
+ @Override
+ public void perspectiveChanged(IWorkbenchPage page, IPerspectiveDescriptor perspective, IWorkbenchPartReference partRef, String changeId) {
+ processWindowActivated();
+ }
+
+ @Override
+ public void handleFrameworkTransactionEvent(Sender sender, FrameworkTransactionData transData) throws OseeCoreException {
+ if (currentArtifact == null) {
+ return;
+ }
+ if (transData.branchId != AtsUtil.getAtsBranch().getId()) {
+ return;
+ }
+ if (transData.isDeleted(currentArtifact)) {
+ Displays.ensureInDisplayThread(new Runnable() {
+ @Override
+ public void run() {
+ clear();
+ }
+ });
+ }
+ Displays.ensureInDisplayThread(new Runnable() {
+ @Override
+ public void run() {
+ display();
+ }
+ });
+ }
+
+ @Override
+ public List<? extends IEventFilter> getEventFilters() {
+ return AtsUtil.getAtsObjectEventFilters();
+ }
+
+ @Override
+ public void handleArtifactEvent(ArtifactEvent artifactEvent, Sender sender) {
+ if (currentArtifact == null) {
+ return;
+ }
+ if (artifactEvent.isDeletedPurged(currentArtifact)) {
+ Displays.ensureInDisplayThread(new Runnable() {
+ @Override
+ public void run() {
+ clear();
+ }
+ });
+ }
+ Displays.ensureInDisplayThread(new Runnable() {
+ @Override
+ public void run() {
+ display();
+ }
+ });
+ }
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/hyper/ActionSkyWalker.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/hyper/ActionSkyWalker.java
index 612b43bf559..ef1389d70ab 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/hyper/ActionSkyWalker.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/hyper/ActionSkyWalker.java
@@ -1,284 +1,284 @@
-/*******************************************************************************
- * 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.hyper;
-
-import java.util.List;
-import java.util.logging.Level;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.IToolBarManager;
-import org.eclipse.osee.ats.artifact.ATSArtifact;
-import org.eclipse.osee.ats.artifact.ActionArtifact;
-import org.eclipse.osee.ats.artifact.TaskArtifact;
-import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact;
-import org.eclipse.osee.ats.editor.SMAEditor;
-import org.eclipse.osee.ats.internal.AtsPlugin;
-import org.eclipse.osee.ats.util.AtsUtil;
-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.plugin.core.IActionable;
-import org.eclipse.osee.framework.skynet.core.User;
-import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
-import org.eclipse.osee.framework.skynet.core.event.FrameworkTransactionData;
-import org.eclipse.osee.framework.skynet.core.event.IFrameworkTransactionEventListener;
-import org.eclipse.osee.framework.skynet.core.event.OseeEventManager;
-import org.eclipse.osee.framework.skynet.core.event.Sender;
-import org.eclipse.osee.framework.skynet.core.event2.ArtifactEvent;
-import org.eclipse.osee.framework.skynet.core.event2.artifact.IArtifactEventListener;
-import org.eclipse.osee.framework.skynet.core.event2.filter.IEventFilter;
-import org.eclipse.osee.framework.ui.plugin.PluginUiImage;
-import org.eclipse.osee.framework.ui.skynet.skywalker.SkyWalkerOptions;
-import org.eclipse.osee.framework.ui.skynet.skywalker.SkyWalkerView;
-import org.eclipse.osee.framework.ui.swt.Displays;
-import org.eclipse.osee.framework.ui.swt.ImageManager;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.IActionBars;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IPartListener;
-import org.eclipse.ui.IPerspectiveDescriptor;
-import org.eclipse.ui.IPerspectiveListener2;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchPartReference;
-import org.eclipse.ui.PlatformUI;
-
-/**
- * <REM2>
- *
- * @author Donald G. Dunne
- */
-public class ActionSkyWalker extends SkyWalkerView implements IPartListener, IActionable, IArtifactEventListener, IFrameworkTransactionEventListener, IPerspectiveListener2 {
-
- public static final String VIEW_ID = "org.eclipse.osee.ats.hyper.ActionSkyWalker";
-
- public ActionSkyWalker() {
- PlatformUI.getWorkbench().getActiveWorkbenchWindow().getPartService().addPartListener(this);
- PlatformUI.getWorkbench().getActiveWorkbenchWindow().addPerspectiveListener(this);
- }
-
- @Override
- public void createPartControl(Composite parent) {
- super.createPartControl(parent);
-
- sashForm.setWeights(new int[] {99, 1});
- OseeEventManager.addListener(this);
- }
-
- @Override
- protected void createActions() {
- IActionBars bars = getViewSite().getActionBars();
- // IMenuManager mm = bars.getMenuManager();
- IToolBarManager tbm = bars.getToolBarManager();
-
- Action action = new Action() {
- @Override
- public void run() {
- redraw();
- }
- };
- action.setText("Refresh");
- action.setToolTipText("Refresh");
- action.setImageDescriptor(ImageManager.getImageDescriptor(PluginUiImage.REFRESH));
- tbm.add(action);
- }
-
- @Override
- public void dispose() {
- OseeEventManager.removeListener(this);
- super.dispose();
- }
-
- @Override
- public void explore(Artifact artifact) {
- if (artifact == null || artifact.isDeleted() || !(artifact instanceof ATSArtifact)) {
- clear();
- }
- try {
- getOptions().setArtifact(artifact);
- getOptions().setLayout(getOptions().getLayout(SkyWalkerOptions.RADIAL_DOWN_LAYOUT));
- if (artifact instanceof User) {
- super.explore(artifact);
- } else if (artifact instanceof ATSArtifact) {
- super.explore(getTopArtifact((ATSArtifact) artifact));
- } else {
- throw new OseeCoreException("Unexpected artifact subclass");
- }
- } catch (OseeCoreException ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- clear();
- }
- }
-
- public ATSArtifact getTopArtifact(ATSArtifact art) throws OseeCoreException {
- ATSArtifact artifact = null;
- if (art instanceof ActionArtifact) {
- artifact = art;
- } else if (art instanceof TeamWorkFlowArtifact) {
- artifact = ((TeamWorkFlowArtifact) art).getParentActionArtifact();
- } else if (art instanceof TaskArtifact) {
- Artifact parentArtifact = ((TaskArtifact) art).getParentSMA();
- if (parentArtifact instanceof TeamWorkFlowArtifact) {
- artifact = ((TeamWorkFlowArtifact) parentArtifact).getParentActionArtifact();
- } else {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, "Unknown parent " + art.getHumanReadableId());
- }
- }
- return artifact;
- }
-
- public boolean activeEditorIsActionEditor() {
- IWorkbenchPage page = getSite().getWorkbenchWindow().getActivePage();
- if (page == null) {
- return false;
- }
- IEditorPart editorPart = page.getActiveEditor();
- boolean result = editorPart != null && editorPart instanceof SMAEditor;
- return result;
- }
-
- public void processWindowActivated() {
- if (!this.getSite().getPage().isPartVisible(this)) {
- return;
- }
- IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
- if (page != null) {
- IEditorPart editor = page.getActiveEditor();
- if (editor != null && editor instanceof SMAEditor) {
- explore(((SMAEditor) editor).getSma());
- }
- clear();
- }
- }
-
- public void processWindowDeActivated(IWorkbenchPart part) {
- processWindowActivated();
- }
-
- @Override
- public void partActivated(IWorkbenchPart part) {
- processWindowActivated();
- }
-
- @Override
- public void partBroughtToTop(IWorkbenchPart part) {
- processWindowActivated();
- }
-
- @Override
- public void partClosed(IWorkbenchPart part) {
- if (part.equals(this)) {
- dispose();
- } else {
- processWindowActivated();
- }
- }
-
- @Override
- public void partDeactivated(IWorkbenchPart part) {
- processWindowActivated();
- }
-
- @Override
- public void partOpened(IWorkbenchPart part) {
- processWindowActivated();
- }
-
- @Override
- public String getActionDescription() {
- if (getOptions() != null && getOptions().getArtifact() != null && getOptions().getArtifact().isDeleted()) {
- return String.format("Current Artifact - %s - %s", getOptions().getArtifact().getGuid(),
- getOptions().getArtifact().getName());
- }
- return "";
- }
-
- public void clear() {
- System.out.println("clear viewer here");
- }
-
- @Override
- public void handleFrameworkTransactionEvent(Sender sender, FrameworkTransactionData transData) throws OseeCoreException {
- if (sender.isRemote()) {
- return;
- }
- if (transData.branchId != AtsUtil.getAtsBranch().getId()) {
- return;
- }
- if (getOptions().getArtifact() == null) {
- return;
- }
- if (transData.isDeleted(getOptions().getArtifact())) {
- Displays.ensureInDisplayThread(new Runnable() {
- @Override
- public void run() {
- clear();
- }
- });
- }
- if (transData.isChanged(getOptions().getArtifact()) || transData.isRelAddedChangedDeleted(getOptions().getArtifact())) {
- Displays.ensureInDisplayThread(new Runnable() {
- @Override
- public void run() {
- explore(getOptions().getArtifact());
- }
- });
- }
- }
-
- @Override
- public void perspectiveActivated(IWorkbenchPage page, IPerspectiveDescriptor perspective) {
- processWindowActivated();
- }
-
- @Override
- public void perspectiveChanged(IWorkbenchPage page, IPerspectiveDescriptor perspective, String changeId) {
- processWindowActivated();
- }
-
- @Override
- public void perspectiveChanged(IWorkbenchPage page, IPerspectiveDescriptor perspective, IWorkbenchPartReference partRef, String changeId) {
- processWindowActivated();
- }
-
- @Override
- public List<? extends IEventFilter> getEventFilters() {
- return AtsUtil.getAtsObjectEventFilters();
- }
-
- @Override
- public void handleArtifactEvent(ArtifactEvent artifactEvent, Sender sender) {
- if (sender.isRemote()) {
- return;
- }
- if (getOptions().getArtifact() == null) {
- return;
- }
- if (artifactEvent.isDeletedPurged(getOptions().getArtifact())) {
- Displays.ensureInDisplayThread(new Runnable() {
- @Override
- public void run() {
- clear();
- }
- });
- }
- if (artifactEvent.isModifiedReloaded(getOptions().getArtifact()) ||
- //
- artifactEvent.isRelAddedChangedDeleted(getOptions().getArtifact())) {
- Displays.ensureInDisplayThread(new Runnable() {
- @Override
- public void run() {
- explore(getOptions().getArtifact());
- }
- });
- }
- }
-
-}
+/*******************************************************************************
+ * 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.hyper;
+
+import java.util.List;
+import java.util.logging.Level;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.osee.ats.artifact.ATSArtifact;
+import org.eclipse.osee.ats.artifact.ActionArtifact;
+import org.eclipse.osee.ats.artifact.TaskArtifact;
+import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact;
+import org.eclipse.osee.ats.editor.SMAEditor;
+import org.eclipse.osee.ats.internal.AtsPlugin;
+import org.eclipse.osee.ats.util.AtsUtil;
+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.plugin.core.IActionable;
+import org.eclipse.osee.framework.skynet.core.User;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.event.FrameworkTransactionData;
+import org.eclipse.osee.framework.skynet.core.event.IFrameworkTransactionEventListener;
+import org.eclipse.osee.framework.skynet.core.event.OseeEventManager;
+import org.eclipse.osee.framework.skynet.core.event.Sender;
+import org.eclipse.osee.framework.skynet.core.event2.ArtifactEvent;
+import org.eclipse.osee.framework.skynet.core.event2.artifact.IArtifactEventListener;
+import org.eclipse.osee.framework.skynet.core.event2.filter.IEventFilter;
+import org.eclipse.osee.framework.ui.plugin.PluginUiImage;
+import org.eclipse.osee.framework.ui.skynet.skywalker.SkyWalkerOptions;
+import org.eclipse.osee.framework.ui.skynet.skywalker.SkyWalkerView;
+import org.eclipse.osee.framework.ui.swt.Displays;
+import org.eclipse.osee.framework.ui.swt.ImageManager;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.IActionBars;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IPartListener;
+import org.eclipse.ui.IPerspectiveDescriptor;
+import org.eclipse.ui.IPerspectiveListener2;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.IWorkbenchPartReference;
+import org.eclipse.ui.PlatformUI;
+
+/**
+ * <REM2>
+ *
+ * @author Donald G. Dunne
+ */
+public class ActionSkyWalker extends SkyWalkerView implements IPartListener, IActionable, IArtifactEventListener, IFrameworkTransactionEventListener, IPerspectiveListener2 {
+
+ public static final String VIEW_ID = "org.eclipse.osee.ats.hyper.ActionSkyWalker";
+
+ public ActionSkyWalker() {
+ PlatformUI.getWorkbench().getActiveWorkbenchWindow().getPartService().addPartListener(this);
+ PlatformUI.getWorkbench().getActiveWorkbenchWindow().addPerspectiveListener(this);
+ }
+
+ @Override
+ public void createPartControl(Composite parent) {
+ super.createPartControl(parent);
+
+ sashForm.setWeights(new int[] {99, 1});
+ OseeEventManager.addListener(this);
+ }
+
+ @Override
+ protected void createActions() {
+ IActionBars bars = getViewSite().getActionBars();
+ // IMenuManager mm = bars.getMenuManager();
+ IToolBarManager tbm = bars.getToolBarManager();
+
+ Action action = new Action() {
+ @Override
+ public void run() {
+ redraw();
+ }
+ };
+ action.setText("Refresh");
+ action.setToolTipText("Refresh");
+ action.setImageDescriptor(ImageManager.getImageDescriptor(PluginUiImage.REFRESH));
+ tbm.add(action);
+ }
+
+ @Override
+ public void dispose() {
+ OseeEventManager.removeListener(this);
+ super.dispose();
+ }
+
+ @Override
+ public void explore(Artifact artifact) {
+ if (artifact == null || artifact.isDeleted() || !(artifact instanceof ATSArtifact)) {
+ clear();
+ }
+ try {
+ getOptions().setArtifact(artifact);
+ getOptions().setLayout(getOptions().getLayout(SkyWalkerOptions.RADIAL_DOWN_LAYOUT));
+ if (artifact instanceof User) {
+ super.explore(artifact);
+ } else if (artifact instanceof ATSArtifact) {
+ super.explore(getTopArtifact((ATSArtifact) artifact));
+ } else {
+ throw new OseeCoreException("Unexpected artifact subclass");
+ }
+ } catch (OseeCoreException ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ clear();
+ }
+ }
+
+ public ATSArtifact getTopArtifact(ATSArtifact art) throws OseeCoreException {
+ ATSArtifact artifact = null;
+ if (art instanceof ActionArtifact) {
+ artifact = art;
+ } else if (art instanceof TeamWorkFlowArtifact) {
+ artifact = ((TeamWorkFlowArtifact) art).getParentActionArtifact();
+ } else if (art instanceof TaskArtifact) {
+ Artifact parentArtifact = ((TaskArtifact) art).getParentSMA();
+ if (parentArtifact instanceof TeamWorkFlowArtifact) {
+ artifact = ((TeamWorkFlowArtifact) parentArtifact).getParentActionArtifact();
+ } else {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, "Unknown parent " + art.getHumanReadableId());
+ }
+ }
+ return artifact;
+ }
+
+ public boolean activeEditorIsActionEditor() {
+ IWorkbenchPage page = getSite().getWorkbenchWindow().getActivePage();
+ if (page == null) {
+ return false;
+ }
+ IEditorPart editorPart = page.getActiveEditor();
+ boolean result = editorPart != null && editorPart instanceof SMAEditor;
+ return result;
+ }
+
+ public void processWindowActivated() {
+ if (!this.getSite().getPage().isPartVisible(this)) {
+ return;
+ }
+ IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
+ if (page != null) {
+ IEditorPart editor = page.getActiveEditor();
+ if (editor != null && editor instanceof SMAEditor) {
+ explore(((SMAEditor) editor).getSma());
+ }
+ clear();
+ }
+ }
+
+ public void processWindowDeActivated(IWorkbenchPart part) {
+ processWindowActivated();
+ }
+
+ @Override
+ public void partActivated(IWorkbenchPart part) {
+ processWindowActivated();
+ }
+
+ @Override
+ public void partBroughtToTop(IWorkbenchPart part) {
+ processWindowActivated();
+ }
+
+ @Override
+ public void partClosed(IWorkbenchPart part) {
+ if (part.equals(this)) {
+ dispose();
+ } else {
+ processWindowActivated();
+ }
+ }
+
+ @Override
+ public void partDeactivated(IWorkbenchPart part) {
+ processWindowActivated();
+ }
+
+ @Override
+ public void partOpened(IWorkbenchPart part) {
+ processWindowActivated();
+ }
+
+ @Override
+ public String getActionDescription() {
+ if (getOptions() != null && getOptions().getArtifact() != null && getOptions().getArtifact().isDeleted()) {
+ return String.format("Current Artifact - %s - %s", getOptions().getArtifact().getGuid(),
+ getOptions().getArtifact().getName());
+ }
+ return "";
+ }
+
+ public void clear() {
+ System.out.println("clear viewer here");
+ }
+
+ @Override
+ public void handleFrameworkTransactionEvent(Sender sender, FrameworkTransactionData transData) throws OseeCoreException {
+ if (sender.isRemote()) {
+ return;
+ }
+ if (transData.branchId != AtsUtil.getAtsBranch().getId()) {
+ return;
+ }
+ if (getOptions().getArtifact() == null) {
+ return;
+ }
+ if (transData.isDeleted(getOptions().getArtifact())) {
+ Displays.ensureInDisplayThread(new Runnable() {
+ @Override
+ public void run() {
+ clear();
+ }
+ });
+ }
+ if (transData.isChanged(getOptions().getArtifact()) || transData.isRelAddedChangedDeleted(getOptions().getArtifact())) {
+ Displays.ensureInDisplayThread(new Runnable() {
+ @Override
+ public void run() {
+ explore(getOptions().getArtifact());
+ }
+ });
+ }
+ }
+
+ @Override
+ public void perspectiveActivated(IWorkbenchPage page, IPerspectiveDescriptor perspective) {
+ processWindowActivated();
+ }
+
+ @Override
+ public void perspectiveChanged(IWorkbenchPage page, IPerspectiveDescriptor perspective, String changeId) {
+ processWindowActivated();
+ }
+
+ @Override
+ public void perspectiveChanged(IWorkbenchPage page, IPerspectiveDescriptor perspective, IWorkbenchPartReference partRef, String changeId) {
+ processWindowActivated();
+ }
+
+ @Override
+ public List<? extends IEventFilter> getEventFilters() {
+ return AtsUtil.getAtsObjectEventFilters();
+ }
+
+ @Override
+ public void handleArtifactEvent(ArtifactEvent artifactEvent, Sender sender) {
+ if (sender.isRemote()) {
+ return;
+ }
+ if (getOptions().getArtifact() == null) {
+ return;
+ }
+ if (artifactEvent.isDeletedPurged(getOptions().getArtifact())) {
+ Displays.ensureInDisplayThread(new Runnable() {
+ @Override
+ public void run() {
+ clear();
+ }
+ });
+ }
+ if (artifactEvent.isModifiedReloaded(getOptions().getArtifact()) ||
+ //
+ artifactEvent.isRelAddedChangedDeleted(getOptions().getArtifact())) {
+ Displays.ensureInDisplayThread(new Runnable() {
+ @Override
+ public void run() {
+ explore(getOptions().getArtifact());
+ }
+ });
+ }
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/hyper/ArtifactHyperView.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/hyper/ArtifactHyperView.java
index 998e245f009..90bd8d79c22 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/hyper/ArtifactHyperView.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/hyper/ArtifactHyperView.java
@@ -1,391 +1,391 @@
-/*******************************************************************************
- * 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.hyper;
-
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-import java.util.logging.Level;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.action.IToolBarManager;
-import org.eclipse.jface.action.Separator;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.osee.ats.AtsImage;
-import org.eclipse.osee.ats.actions.wizard.ArtifactSelectWizard;
-import org.eclipse.osee.ats.editor.SMAEditor;
-import org.eclipse.osee.ats.internal.AtsPlugin;
-import org.eclipse.osee.ats.util.AtsUtil;
-import org.eclipse.osee.framework.core.exception.OseeCoreException;
-import org.eclipse.osee.framework.logging.OseeLog;
-import org.eclipse.osee.framework.plugin.core.IActionable;
-import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
-import org.eclipse.osee.framework.skynet.core.artifact.BranchManager;
-import org.eclipse.osee.framework.skynet.core.artifact.search.ArtifactQuery;
-import org.eclipse.osee.framework.skynet.core.event.FrameworkTransactionData;
-import org.eclipse.osee.framework.skynet.core.event.IFrameworkTransactionEventListener;
-import org.eclipse.osee.framework.skynet.core.event.OseeEventManager;
-import org.eclipse.osee.framework.skynet.core.event.Sender;
-import org.eclipse.osee.framework.skynet.core.event2.ArtifactEvent;
-import org.eclipse.osee.framework.skynet.core.event2.artifact.IArtifactEventListener;
-import org.eclipse.osee.framework.skynet.core.event2.filter.IEventFilter;
-import org.eclipse.osee.framework.skynet.core.relation.RelationLink;
-import org.eclipse.osee.framework.ui.plugin.OseeUiActions;
-import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
-import org.eclipse.osee.framework.ui.skynet.util.DbConnectionExceptionComposite;
-import org.eclipse.osee.framework.ui.skynet.widgets.dialog.EntryDialog;
-import org.eclipse.osee.framework.ui.swt.Displays;
-import org.eclipse.osee.framework.ui.swt.ImageManager;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.IActionBars;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IPerspectiveDescriptor;
-import org.eclipse.ui.IPerspectiveListener2;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchPartReference;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.PlatformUI;
-
-/**
- * <REM2>
- *
- * @author Donald G. Dunne
- */
-public class ArtifactHyperView extends HyperView implements IArtifactEventListener, IFrameworkTransactionEventListener, IActionable, IPerspectiveListener2 {
-
- public static String VIEW_ID = "org.eclipse.osee.ats.hyper.ArtifactHyperView";
- public static ArtifactHyperItem topAHI;
- public static Artifact currentArtifact;
- private Action pinAction;
-
- public ArtifactHyperView() {
- super();
- PlatformUI.getWorkbench().getActiveWorkbenchWindow().getPartService().addPartListener(this);
- PlatformUI.getWorkbench().getActiveWorkbenchWindow().addPerspectiveListener(this);
- HyperView.setNodeColor(whiteColor);
- HyperView.setCenterColor(whiteColor);
- defaultZoom.pcRadius += defaultZoom.pcRadiusFactor * 2;
- defaultZoom.uuRadius += defaultZoom.uuRadiusFactor * 2;
- defaultZoom.xSeparation += defaultZoom.xSeparationFactor;
- }
-
- public static ArtifactHyperView getArtifactHyperView() {
- IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
- try {
- return (ArtifactHyperView) page.showView(ArtifactHyperView.VIEW_ID);
- } catch (PartInitException e1) {
- MessageDialog.openInformation(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), "Launch Error",
- "Couldn't Get OSEE Artifact Hyper View " + e1.getMessage());
- }
- return null;
- }
-
- public static void openArtifact(Artifact artifact) {
- getArtifactHyperView().load(artifact);
- }
-
- @Override
- public void createPartControl(Composite top) {
- if (!DbConnectionExceptionComposite.dbConnectionIsOk(top)) {
- PlatformUI.getWorkbench().getActiveWorkbenchWindow().getPartService().removePartListener(this);
- PlatformUI.getWorkbench().getActiveWorkbenchWindow().removePerspectiveListener(this);
- return;
- }
- super.createPartControl(top);
- OseeUiActions.addBugToViewToolbar(this, this, AtsPlugin.getInstance(), VIEW_ID, "ATS Action View");
- OseeEventManager.addListener(this);
- }
-
- @Override
- public void handleItemDoubleClick(HyperViewItem hvi) {
- currentArtifact = ((ArtifactHyperItem) hvi).getArtifact();
- display();
- }
-
- private void load(Artifact artifact) {
- currentArtifact = artifact;
- display();
- }
-
- @Override
- public void display() {
- try {
- if (currentArtifact == null) {
- return;
- }
- topAHI = new ArtifactHyperItem(currentArtifact);
- // System.out.println("Artifact "+currentArtifact.getArtifactTypeNameShort());
- int x = 0;
- for (RelationLink link : currentArtifact.getRelationsAll(false)) {
-
- // Don't process link if onlyShowRel is populated and doesn't contain link name
- if (onlyShowRelations.size() > 0) {
- if (!onlyShowRelations.contains(link.getRelationType().getName())) {
- continue;
- }
- x++;
- if (x == 4) {
- x = 0;
- }
- }
-
- Artifact otherArt = link.getArtifactB();
- if (otherArt.equals(currentArtifact)) {
- otherArt = link.getArtifactA();
- }
- if (!otherArt.isDeleted()) {
- ArtifactHyperItem ahi = new ArtifactHyperItem(otherArt);
- String tip = link.getRelationType().getName();
- if (!link.getRationale().equals("")) {
- tip += "(" + link.getRationale() + ")";
- }
- ahi.setRelationToolTip(tip);
- String label = "";
- if (!link.getRationale().equals("")) {
- label += "(" + link.getRationale() + ")";
- }
- ahi.setRelationLabel(label);
- ahi.setLink(link);
- ahi.setRelationDirty(link.isDirty());
- switch (x) {
- case 0:
- topAHI.addBottom(ahi);
- break;
- case 1:
- topAHI.addLeft(ahi);
- break;
- case 2:
- topAHI.addTop(ahi);
- break;
- case 3:
- topAHI.addRight(ahi);
- break;
- default:
- break;
- }
- }
- x++;
- if (x == 4) {
- x = 0;
- }
- }
- create(topAHI);
- center();
- } catch (OseeCoreException ex) {
- clear();
- }
- }
-
- @Override
- protected void handleRefreshButton() {
- display();
- }
-
- @Override
- public void dispose() {
- OseeEventManager.removeListener(this);
- super.dispose();
- }
-
- public void handleWindowChange() {
- if (pinAction.isChecked()) {
- return;
- }
- if (!this.getSite().getPage().isPartVisible(this)) {
- return;
- }
- IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
- if (page != null) {
- IEditorPart editor = page.getActiveEditor();
- if (editor != null && editor instanceof SMAEditor) {
- currentArtifact = ((SMAEditor) editor).getSma();
- load(currentArtifact);
- }
- }
- }
-
- @Override
- public void partActivated(IWorkbenchPart part) {
- handleWindowChange();
- }
-
- @Override
- public void partBroughtToTop(IWorkbenchPart part) {
- handleWindowChange();
- }
-
- @Override
- public void partClosed(IWorkbenchPart part) {
- if (part.equals(this)) {
- dispose();
- } else {
- handleWindowChange();
- }
- }
-
- @Override
- public void partDeactivated(IWorkbenchPart part) {
- handleWindowChange();
- }
-
- @Override
- public void partOpened(IWorkbenchPart part) {
- handleWindowChange();
- }
-
- @Override
- protected void createActions() {
- super.createActions();
-
- Action openArtAction = new Action("Open Artifact") {
-
- @Override
- public void run() {
- handleOpenArtifact();
- }
- };
- openArtAction.setToolTipText("Open Artifact");
- openArtAction.setImageDescriptor(ImageManager.getImageDescriptor(AtsImage.ART_VIEW));
-
- Action openByIdAction = new Action("Open by Id", IAction.AS_PUSH_BUTTON) {
-
- @Override
- public void run() {
- EntryDialog ed = new EntryDialog("Open by Id", "Enter HRID/Guid for Artifact");
- if (ed.open() != 0) {
- return;
- }
- String hridGuid = ed.getEntry().trim();
- try {
- Collection<Artifact> arts =
- ArtifactQuery.getArtifactListFromIds(Arrays.asList(hridGuid), BranchManager.getCommonBranch());
- if (arts.isEmpty()) {
- AWorkbench.popup("ERROR", "No Artifacts Found");
- return;
- }
- load(arts.iterator().next());
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
- }
- };
- openByIdAction.setToolTipText("Open by Id");
- openArtAction.setImageDescriptor(ImageManager.getImageDescriptor(AtsImage.ART_VIEW));
-
- IActionBars bars = getViewSite().getActionBars();
- IToolBarManager tbm = bars.getToolBarManager();
- tbm.add(new Separator());
- tbm.add(openByIdAction);
- tbm.add(openArtAction);
- tbm.add(pinAction);
- }
-
- public void handleOpenArtifact() {
-
- ArtifactSelectWizard selWizard = new ArtifactSelectWizard();
- WizardDialog dialog =
- new WizardDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), selWizard);
- dialog.create();
- if (dialog.open() == 0) {
- load(selWizard.getSelectedArtifact());
- }
- }
-
- @Override
- public String getActionDescription() {
- if (currentArtifact != null && currentArtifact.isDeleted()) {
- return String.format("Current Artifact - %s - %s", currentArtifact.getGuid(), currentArtifact.getName());
- }
- return "";
- }
-
- @Override
- public void perspectiveActivated(IWorkbenchPage page, IPerspectiveDescriptor perspective) {
- handleWindowChange();
- }
-
- @Override
- public void perspectiveChanged(IWorkbenchPage page, IPerspectiveDescriptor perspective, String changeId) {
- handleWindowChange();
- }
-
- @Override
- public void perspectiveChanged(IWorkbenchPage page, IPerspectiveDescriptor perspective, IWorkbenchPartReference partRef, String changeId) {
- handleWindowChange();
- }
-
- @Override
- public void handleFrameworkTransactionEvent(Sender sender, FrameworkTransactionData transData) throws OseeCoreException {
- if (sender.isRemote()) {
- return;
- }
- if (transData.branchId != AtsUtil.getAtsBranch().getId()) {
- return;
- }
- if (currentArtifact == null) {
- return;
- }
- if (transData.isDeleted(currentArtifact)) {
- Displays.ensureInDisplayThread(new Runnable() {
- @Override
- public void run() {
- clear();
- }
- });
- }
- if (transData.isRelAddedChangedDeleted(currentArtifact)) {
- Displays.ensureInDisplayThread(new Runnable() {
- @Override
- public void run() {
- display();
- }
- });
- }
- }
-
- @Override
- public List<? extends IEventFilter> getEventFilters() {
- return null;
- }
-
- @Override
- public void handleArtifactEvent(ArtifactEvent artifactEvent, Sender sender) {
- if (sender.isRemote()) {
- return;
- }
- if (currentArtifact == null) {
- return;
- }
- if (!artifactEvent.isForBranch(currentArtifact.getBranch())) {
- return;
- }
-
- if (artifactEvent.isDeletedPurged(currentArtifact)) {
- Displays.ensureInDisplayThread(new Runnable() {
- @Override
- public void run() {
- clear();
- }
- });
- }
- if (artifactEvent.isRelAddedChangedDeleted(currentArtifact)) {
- Displays.ensureInDisplayThread(new Runnable() {
- @Override
- public void run() {
- display();
- }
- });
- }
-
- }
-}
+/*******************************************************************************
+ * 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.hyper;
+
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+import java.util.logging.Level;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.wizard.WizardDialog;
+import org.eclipse.osee.ats.AtsImage;
+import org.eclipse.osee.ats.actions.wizard.ArtifactSelectWizard;
+import org.eclipse.osee.ats.editor.SMAEditor;
+import org.eclipse.osee.ats.internal.AtsPlugin;
+import org.eclipse.osee.ats.util.AtsUtil;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.logging.OseeLog;
+import org.eclipse.osee.framework.plugin.core.IActionable;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.BranchManager;
+import org.eclipse.osee.framework.skynet.core.artifact.search.ArtifactQuery;
+import org.eclipse.osee.framework.skynet.core.event.FrameworkTransactionData;
+import org.eclipse.osee.framework.skynet.core.event.IFrameworkTransactionEventListener;
+import org.eclipse.osee.framework.skynet.core.event.OseeEventManager;
+import org.eclipse.osee.framework.skynet.core.event.Sender;
+import org.eclipse.osee.framework.skynet.core.event2.ArtifactEvent;
+import org.eclipse.osee.framework.skynet.core.event2.artifact.IArtifactEventListener;
+import org.eclipse.osee.framework.skynet.core.event2.filter.IEventFilter;
+import org.eclipse.osee.framework.skynet.core.relation.RelationLink;
+import org.eclipse.osee.framework.ui.plugin.OseeUiActions;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
+import org.eclipse.osee.framework.ui.skynet.util.DbConnectionExceptionComposite;
+import org.eclipse.osee.framework.ui.skynet.widgets.dialog.EntryDialog;
+import org.eclipse.osee.framework.ui.swt.Displays;
+import org.eclipse.osee.framework.ui.swt.ImageManager;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.IActionBars;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IPerspectiveDescriptor;
+import org.eclipse.ui.IPerspectiveListener2;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.IWorkbenchPartReference;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.PlatformUI;
+
+/**
+ * <REM2>
+ *
+ * @author Donald G. Dunne
+ */
+public class ArtifactHyperView extends HyperView implements IArtifactEventListener, IFrameworkTransactionEventListener, IActionable, IPerspectiveListener2 {
+
+ public static String VIEW_ID = "org.eclipse.osee.ats.hyper.ArtifactHyperView";
+ public static ArtifactHyperItem topAHI;
+ public static Artifact currentArtifact;
+ private Action pinAction;
+
+ public ArtifactHyperView() {
+ super();
+ PlatformUI.getWorkbench().getActiveWorkbenchWindow().getPartService().addPartListener(this);
+ PlatformUI.getWorkbench().getActiveWorkbenchWindow().addPerspectiveListener(this);
+ HyperView.setNodeColor(whiteColor);
+ HyperView.setCenterColor(whiteColor);
+ defaultZoom.pcRadius += defaultZoom.pcRadiusFactor * 2;
+ defaultZoom.uuRadius += defaultZoom.uuRadiusFactor * 2;
+ defaultZoom.xSeparation += defaultZoom.xSeparationFactor;
+ }
+
+ public static ArtifactHyperView getArtifactHyperView() {
+ IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
+ try {
+ return (ArtifactHyperView) page.showView(ArtifactHyperView.VIEW_ID);
+ } catch (PartInitException e1) {
+ MessageDialog.openInformation(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), "Launch Error",
+ "Couldn't Get OSEE Artifact Hyper View " + e1.getMessage());
+ }
+ return null;
+ }
+
+ public static void openArtifact(Artifact artifact) {
+ getArtifactHyperView().load(artifact);
+ }
+
+ @Override
+ public void createPartControl(Composite top) {
+ if (!DbConnectionExceptionComposite.dbConnectionIsOk(top)) {
+ PlatformUI.getWorkbench().getActiveWorkbenchWindow().getPartService().removePartListener(this);
+ PlatformUI.getWorkbench().getActiveWorkbenchWindow().removePerspectiveListener(this);
+ return;
+ }
+ super.createPartControl(top);
+ OseeUiActions.addBugToViewToolbar(this, this, AtsPlugin.getInstance(), VIEW_ID, "ATS Action View");
+ OseeEventManager.addListener(this);
+ }
+
+ @Override
+ public void handleItemDoubleClick(HyperViewItem hvi) {
+ currentArtifact = ((ArtifactHyperItem) hvi).getArtifact();
+ display();
+ }
+
+ private void load(Artifact artifact) {
+ currentArtifact = artifact;
+ display();
+ }
+
+ @Override
+ public void display() {
+ try {
+ if (currentArtifact == null) {
+ return;
+ }
+ topAHI = new ArtifactHyperItem(currentArtifact);
+ // System.out.println("Artifact "+currentArtifact.getArtifactTypeNameShort());
+ int x = 0;
+ for (RelationLink link : currentArtifact.getRelationsAll(false)) {
+
+ // Don't process link if onlyShowRel is populated and doesn't contain link name
+ if (onlyShowRelations.size() > 0) {
+ if (!onlyShowRelations.contains(link.getRelationType().getName())) {
+ continue;
+ }
+ x++;
+ if (x == 4) {
+ x = 0;
+ }
+ }
+
+ Artifact otherArt = link.getArtifactB();
+ if (otherArt.equals(currentArtifact)) {
+ otherArt = link.getArtifactA();
+ }
+ if (!otherArt.isDeleted()) {
+ ArtifactHyperItem ahi = new ArtifactHyperItem(otherArt);
+ String tip = link.getRelationType().getName();
+ if (!link.getRationale().equals("")) {
+ tip += "(" + link.getRationale() + ")";
+ }
+ ahi.setRelationToolTip(tip);
+ String label = "";
+ if (!link.getRationale().equals("")) {
+ label += "(" + link.getRationale() + ")";
+ }
+ ahi.setRelationLabel(label);
+ ahi.setLink(link);
+ ahi.setRelationDirty(link.isDirty());
+ switch (x) {
+ case 0:
+ topAHI.addBottom(ahi);
+ break;
+ case 1:
+ topAHI.addLeft(ahi);
+ break;
+ case 2:
+ topAHI.addTop(ahi);
+ break;
+ case 3:
+ topAHI.addRight(ahi);
+ break;
+ default:
+ break;
+ }
+ }
+ x++;
+ if (x == 4) {
+ x = 0;
+ }
+ }
+ create(topAHI);
+ center();
+ } catch (OseeCoreException ex) {
+ clear();
+ }
+ }
+
+ @Override
+ protected void handleRefreshButton() {
+ display();
+ }
+
+ @Override
+ public void dispose() {
+ OseeEventManager.removeListener(this);
+ super.dispose();
+ }
+
+ public void handleWindowChange() {
+ if (pinAction.isChecked()) {
+ return;
+ }
+ if (!this.getSite().getPage().isPartVisible(this)) {
+ return;
+ }
+ IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
+ if (page != null) {
+ IEditorPart editor = page.getActiveEditor();
+ if (editor != null && editor instanceof SMAEditor) {
+ currentArtifact = ((SMAEditor) editor).getSma();
+ load(currentArtifact);
+ }
+ }
+ }
+
+ @Override
+ public void partActivated(IWorkbenchPart part) {
+ handleWindowChange();
+ }
+
+ @Override
+ public void partBroughtToTop(IWorkbenchPart part) {
+ handleWindowChange();
+ }
+
+ @Override
+ public void partClosed(IWorkbenchPart part) {
+ if (part.equals(this)) {
+ dispose();
+ } else {
+ handleWindowChange();
+ }
+ }
+
+ @Override
+ public void partDeactivated(IWorkbenchPart part) {
+ handleWindowChange();
+ }
+
+ @Override
+ public void partOpened(IWorkbenchPart part) {
+ handleWindowChange();
+ }
+
+ @Override
+ protected void createActions() {
+ super.createActions();
+
+ Action openArtAction = new Action("Open Artifact") {
+
+ @Override
+ public void run() {
+ handleOpenArtifact();
+ }
+ };
+ openArtAction.setToolTipText("Open Artifact");
+ openArtAction.setImageDescriptor(ImageManager.getImageDescriptor(AtsImage.ART_VIEW));
+
+ Action openByIdAction = new Action("Open by Id", IAction.AS_PUSH_BUTTON) {
+
+ @Override
+ public void run() {
+ EntryDialog ed = new EntryDialog("Open by Id", "Enter HRID/Guid for Artifact");
+ if (ed.open() != 0) {
+ return;
+ }
+ String hridGuid = ed.getEntry().trim();
+ try {
+ Collection<Artifact> arts =
+ ArtifactQuery.getArtifactListFromIds(Arrays.asList(hridGuid), BranchManager.getCommonBranch());
+ if (arts.isEmpty()) {
+ AWorkbench.popup("ERROR", "No Artifacts Found");
+ return;
+ }
+ load(arts.iterator().next());
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ }
+ }
+ };
+ openByIdAction.setToolTipText("Open by Id");
+ openArtAction.setImageDescriptor(ImageManager.getImageDescriptor(AtsImage.ART_VIEW));
+
+ IActionBars bars = getViewSite().getActionBars();
+ IToolBarManager tbm = bars.getToolBarManager();
+ tbm.add(new Separator());
+ tbm.add(openByIdAction);
+ tbm.add(openArtAction);
+ tbm.add(pinAction);
+ }
+
+ public void handleOpenArtifact() {
+
+ ArtifactSelectWizard selWizard = new ArtifactSelectWizard();
+ WizardDialog dialog =
+ new WizardDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), selWizard);
+ dialog.create();
+ if (dialog.open() == 0) {
+ load(selWizard.getSelectedArtifact());
+ }
+ }
+
+ @Override
+ public String getActionDescription() {
+ if (currentArtifact != null && currentArtifact.isDeleted()) {
+ return String.format("Current Artifact - %s - %s", currentArtifact.getGuid(), currentArtifact.getName());
+ }
+ return "";
+ }
+
+ @Override
+ public void perspectiveActivated(IWorkbenchPage page, IPerspectiveDescriptor perspective) {
+ handleWindowChange();
+ }
+
+ @Override
+ public void perspectiveChanged(IWorkbenchPage page, IPerspectiveDescriptor perspective, String changeId) {
+ handleWindowChange();
+ }
+
+ @Override
+ public void perspectiveChanged(IWorkbenchPage page, IPerspectiveDescriptor perspective, IWorkbenchPartReference partRef, String changeId) {
+ handleWindowChange();
+ }
+
+ @Override
+ public void handleFrameworkTransactionEvent(Sender sender, FrameworkTransactionData transData) throws OseeCoreException {
+ if (sender.isRemote()) {
+ return;
+ }
+ if (transData.branchId != AtsUtil.getAtsBranch().getId()) {
+ return;
+ }
+ if (currentArtifact == null) {
+ return;
+ }
+ if (transData.isDeleted(currentArtifact)) {
+ Displays.ensureInDisplayThread(new Runnable() {
+ @Override
+ public void run() {
+ clear();
+ }
+ });
+ }
+ if (transData.isRelAddedChangedDeleted(currentArtifact)) {
+ Displays.ensureInDisplayThread(new Runnable() {
+ @Override
+ public void run() {
+ display();
+ }
+ });
+ }
+ }
+
+ @Override
+ public List<? extends IEventFilter> getEventFilters() {
+ return null;
+ }
+
+ @Override
+ public void handleArtifactEvent(ArtifactEvent artifactEvent, Sender sender) {
+ if (sender.isRemote()) {
+ return;
+ }
+ if (currentArtifact == null) {
+ return;
+ }
+ if (!artifactEvent.isForBranch(currentArtifact.getBranch())) {
+ return;
+ }
+
+ if (artifactEvent.isDeletedPurged(currentArtifact)) {
+ Displays.ensureInDisplayThread(new Runnable() {
+ @Override
+ public void run() {
+ clear();
+ }
+ });
+ }
+ if (artifactEvent.isRelAddedChangedDeleted(currentArtifact)) {
+ Displays.ensureInDisplayThread(new Runnable() {
+ @Override
+ public void run() {
+ display();
+ }
+ });
+ }
+
+ }
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/hyper/HyperView.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/hyper/HyperView.java
index fef072b7ce4..94bcaab3eb6 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/hyper/HyperView.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/hyper/HyperView.java
@@ -1,1168 +1,1168 @@
-/*******************************************************************************
- * 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.hyper;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Vector;
-import java.util.logging.Level;
-import org.eclipse.draw2d.ChopboxAnchor;
-import org.eclipse.draw2d.ColorConstants;
-import org.eclipse.draw2d.ConnectionEndpointLocator;
-import org.eclipse.draw2d.Figure;
-import org.eclipse.draw2d.FigureCanvas;
-import org.eclipse.draw2d.Label;
-import org.eclipse.draw2d.LightweightSystem;
-import org.eclipse.draw2d.LineBorder;
-import org.eclipse.draw2d.MouseEvent;
-import org.eclipse.draw2d.MouseListener;
-import org.eclipse.draw2d.PolylineConnection;
-import org.eclipse.draw2d.ToolbarLayout;
-import org.eclipse.draw2d.XYLayout;
-import org.eclipse.draw2d.geometry.Dimension;
-import org.eclipse.draw2d.geometry.Point;
-import org.eclipse.draw2d.geometry.Rectangle;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.IToolBarManager;
-import org.eclipse.jface.action.Separator;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.osee.ats.AtsImage;
-import org.eclipse.osee.ats.AtsOpenOption;
-import org.eclipse.osee.ats.artifact.StateMachineArtifact;
-import org.eclipse.osee.ats.editor.SMAEditor;
-import org.eclipse.osee.ats.internal.AtsPlugin;
-import org.eclipse.osee.ats.util.AtsUtil;
-import org.eclipse.osee.framework.core.exception.OseeCoreException;
-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.skynet.core.artifact.Artifact;
-import org.eclipse.osee.framework.ui.plugin.PluginUiImage;
-import org.eclipse.osee.framework.ui.skynet.OseeContributionItem;
-import org.eclipse.osee.framework.ui.skynet.render.PresentationType;
-import org.eclipse.osee.framework.ui.skynet.render.RendererManager;
-import org.eclipse.osee.framework.ui.swt.Displays;
-import org.eclipse.osee.framework.ui.swt.ImageManager;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Cursor;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.MenuItem;
-import org.eclipse.swt.widgets.ScrollBar;
-import org.eclipse.ui.IActionBars;
-import org.eclipse.ui.IPartListener;
-import org.eclipse.ui.ISharedImages;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.part.ViewPart;
-
-public class HyperView extends ViewPart implements IPartListener {
-
- private static final boolean debugOn = false;
- public static String VIEW_ID = "org.eclipse.osee.ats.hyper.HyperView";
- private LightweightSystem lws;
- private HyperViewItem centerSearchItem;
- private NodeFigure centerFigure;
- protected Composite composite;
- private Figure container; // main container Figure to hold others
- private XYLayout contentsLayout;
- private final Vector<PolylineConnection> connectors = new Vector<PolylineConnection>(); // PolylineConnection
- private final Vector<HyperViewItem> backList = new Vector<HyperViewItem>();
- // List of SearchItems visited
- private int backListIndex = 0; // Index we are on in backList
- private HyperViewItem homeSearchItem = null;
- // private static Canvas canvas;
- private FigureCanvas canvas;
- private final Cursor hCursor = null;
- private Menu popupMenu;
- private Menu connectPopupMenu;
- /* Full circle is (2*Math.PI) */
- private static final double quadrant = 2 * Math.PI / 4;
- /* Each quadrant is 90 degrees */
- private static final double oneEighthCircle = quadrant / 2; /* Start 45 degrees off 0 */
- private static final double bottomQuadrantStart = oneEighthCircle;
- private static final double topQuadrantStart = oneEighthCircle + 2 * quadrant;
- private static final double leftQuadrantStart = oneEighthCircle + quadrant;
- private static final double rightQuadrantStart = oneEighthCircle + 3 * quadrant;
- // private ChopboxAnchor sourceAnchor = null;
- private boolean dragCenter = false;
- protected static Color nodeColor = new Color(null, 255, 255, 206);
- protected static Color centerColor = new Color(null, 106, 219, 255);
- protected static final Color cyanColor = ColorConstants.cyan;
- protected static final Color blackColor = ColorConstants.black;
- protected static final Color whiteColor = ColorConstants.white;
- private ScrollBar vsb;
- private ScrollBar hsb;
- private Action titleAction, backAction, forwardAction;
- private Zoom zoom;
- protected Zoom defaultZoom = new Zoom();
- private int verticalSelection = 40;
- protected ArrayList<String> onlyShowRelations = new ArrayList<String>();
-
- public static class Zoom {
-
- int pcRadius = 50;
- int pcRadiusFactor = 5;
- int uuRadius = 60;
- int uuRadiusFactor = 20;
- int uuRadiusSeparation = 13; // left/right
- int pcRadiusSeparation = 13; // top/bottom
- int xSeparation = 27;
- int xSeparationFactor = 20;
- int ySeparation = 5;
- Point dragCenter = null;
-
- @Override
- public String toString() {
- StringBuilder builder = new StringBuilder();
- builder.append("xR:" + pcRadius);
- builder.append("yR:" + uuRadius);
- builder.append(" xRF:" + pcRadiusFactor);
- builder.append(" yRF:" + uuRadiusFactor);
- builder.append(" pcRS: " + pcRadiusSeparation);
- builder.append(" uuRS: " + uuRadiusSeparation);
- builder.append(" xS: " + xSeparation);
- builder.append(" yS: " + ySeparation);
- return builder.toString();
- }
- }
-
- enum RelationEnum {
- TOP,
- BOTTOM,
- BOTTOM2,
- LEFT,
- RIGHT
- };
-
- public boolean provideBackForwardActions() {
- return true;
- }
-
- public static class NodeFigure extends Figure {
-
- HyperViewItem hvi = null;
-
- public HyperViewItem getSearchItem() {
- return hvi;
- }
-
- public NodeFigure(Label name, Label infoLabel, HyperViewItem hvi, boolean center) {
- ToolbarLayout layout = new ToolbarLayout();
- layout.setVertical(false);
- setLayoutManager(layout);
- if (hvi.isCurrent()) {
- setBorder(new LineBorder(cyanColor, 3));
- } else {
- setBorder(new LineBorder(blackColor, 1));
- }
- if (center) {
- setBackgroundColor(centerColor);
- } else {
- setBackgroundColor(nodeColor);
- }
- setOpaque(true);
- this.hvi = hvi;
- if (name != null) {
- add(name);
- }
- if (infoLabel != null) {
- add(infoLabel);
- }
- }
-
- public HyperViewItem getHvi() {
- return hvi;
- }
-
- }
-
- public HyperView() {
- zoom = defaultZoom;
- }
-
- public void create(HyperViewItem hvi) {
- clear();
- gridLoad(hvi);
- }
-
- private void gridLoad(HyperViewItem hvi) {
- if (HyperView.debugOn) {
- System.out.println("gridLoad");
- }
- /*
- * If grid already loaded and it was a collection, remove old home and all links associated with it.
- */
- if (homeSearchItem != null) {
- for (HyperViewItem hyperItem : homeSearchItem.getBottom()) {
- hyperItem.removeTop(homeSearchItem);
- }
- }
- homeSearchItem = hvi;
- centerSearchItem = hvi;
- backListAddSearchItem(homeSearchItem);
- jumpTo(homeSearchItem);
- }
-
- /**
- * This is a callback that will allow us to create the viewer and initialize it.
- */
- @Override
- public void createPartControl(Composite parent) {
- if (HyperView.debugOn) {
- System.out.println("createPartControl");
- }
- OseeContributionItem.addTo(this, true);
-
- canvas = new FigureCanvas(parent);
- canvas.setScrollBarVisibility(FigureCanvas.ALWAYS);
- vsb = canvas.getVerticalBar();
- vsb.setIncrement(1);
- vsb.setSelection(verticalSelection);
- vsb.addListener(SWT.Selection, new Listener() {
-
- @Override
- public void handleEvent(Event event) {
- refresh();
- // System.out.println("vScroll " + event);
- // int v = canvas.getVerticalBar().getSelection();
- // System.out.println("v *" + v + "*");
- }
- });
- hsb = canvas.getHorizontalBar();
- hsb.setIncrement(1);
- hsb.setSelection(40);
- hsb.addListener(SWT.Selection, new Listener() {
-
- @Override
- public void handleEvent(Event event) {
- refresh();
- // System.out.println("hScroll " + event);
- // int h = canvas.getVerticalBar().getSelection();
- // System.out.println("h *" + h + "*");
- }
- });
- // canvas = new Canvas(top, SWT.NONE);
- composite = parent;
- canvas.setBackground(composite.getDisplay().getSystemColor(SWT.COLOR_WHITE));
- lws = new LightweightSystem(canvas);
- container = new Figure();
- setContainerMouseListener(container);
- setMouseListener(container);
- contentsLayout = new XYLayout();
- container.setLayoutManager(contentsLayout);
- lws.setContents(container);
- // canvas.addPaintListener(new PaintListener() {
- //
- // public void paintControl(PaintEvent e) {
- // if (centerSearchItem == null || centerSearchItem.getArtifact() == null
- // || centerSearchItem.getArtifact().isDeleted())
- // return;
- // // refresh();
- // }
- // });
- canvas.layout();
- composite.layout();
- createActions();
-
- }
-
- private void printBackList(String inStr) {
- final boolean debug = false;
- if (debug) {
- StringBuilder builder = new StringBuilder();
- builder.append(inStr + "backList : [");
- for (int i = 0; i < backList.size(); i++) {
- builder.append(i + " ");
- }
- builder.append("] index: " + backListIndex);
- System.err.println(builder.toString());
- }
- }
-
- private void backListClearToIndex() {
- printBackList("pre backListClearToIndex");
- // Remove any extra items after where we are in backList
- for (int i = backListIndex + 1; i < backList.size(); i++) {
- backList.remove(i);
- }
- printBackList("post backListClearToIndex");
- }
-
- private void backListAddSearchItem(HyperViewItem hvi) {
- // If we are adding, then any items past backListIndex are
- // invalid and should be removed
- printBackList("pre backListAddSearchItem");
- backListClearToIndex();
- if (backList.size() > 0) {
- if (backList.get(backList.size() - 1).equals(hvi)) {
- // System.out.println("same as last; skip");
- return;
- }
- }
- backList.add(hvi);
- backListIndex = backList.size() - 1;
- printBackList("post backListAddSearchItem");
- }
-
- // private void backListClear() {
- // backList.clear();
- // backListIndex = 0;
- // }
-
- public void refresh() {
- gridDrawCenterItem();
- }
-
- protected void clear() {
- if (HyperView.debugOn) {
- System.out.println("gridClear");
- }
- if (connectors != null) {
- for (int i = 0; i < connectors.size(); i++) {
- connectors.get(i).erase();
- }
- connectors.clear();
- }
- if (container != null) {
- container.removeAll();
- }
- }
-
- private void gridDrawCenterItem() {
- clear();
- Rectangle grid = container.getClientArea();
- // System.out.println("grid w: " + grid.width + " h:" + grid.height);
- gridDraw(centerSearchItem, new Point(grid.width / 2, grid.height / 2));
- }
-
- private void gridDraw(HyperViewItem hvi, Point center) {
- if (HyperView.debugOn) {
- System.out.println("zoom *" + zoom + "*");
- }
- // Draw center node
- if (hvi != null) {
- if (HyperView.debugOn) {
- System.out.println("center x: " + center.x + " y:" + center.y);
- }
- if (HyperView.debugOn) {
- System.out.println("centerFigure *" + hvi.getTitle() + "*");
- }
- Point useCenter;
- if (zoom.dragCenter != null) {
- useCenter = zoom.dragCenter.getCopy();
- } else {
- useCenter = center.getCopy();
- }
- // Offset by scroll
- if (vsb != null) {
- useCenter.y -= (vsb.getSelection() - 40) * 10;
- }
- if (hsb != null) {
- useCenter.x -= (hsb.getSelection() - 40) * 10;
- }
- // System.out.println("zoom.dragCenter *" + zoom.dragCenter + "*");
- // System.out.println("center *" + center + "*");
- // System.out.println("vsb.getSelection() *" + vsb.getSelection() +
- // "*");
- // System.out.println("hsb.getSelection() *" + hsb.getSelection() +
- // "*");
- Point nwPoint;
- Point cPoint;
- centerFigure = createFigure(centerSearchItem, true);
- Dimension dim = centerFigure.getPreferredSize();
- if (HyperView.debugOn) {
- System.out.println("dim center w: " + dim.width + " h:" + dim.height);
- }
- nwPoint = new Point((useCenter.x - dim.width / 2), (useCenter.y - dim.height / 2));
- cPoint = new Point((nwPoint.x + dim.width / 2), (nwPoint.y + dim.height / 2));
- if (HyperView.debugOn) {
- System.out.println("nwPoint *" + nwPoint + "*");
- }
- if (HyperView.debugOn) {
- System.out.println("cPoint *" + cPoint + "*");
- }
- contentsLayout.setConstraint(centerFigure, new Rectangle(nwPoint.x, nwPoint.y, -1, -1));
- // centerFigure.repaint();
- ChopboxAnchor sourceAnchor = new ChopboxAnchor(centerFigure);
- setMouseListener(centerFigure);
- // debug only
- // drawQuadrant(topQuadrantStart, quadrant);
- // drawQuadrant(bottomQuadrantStart, quadrant);
- // drawQuadrant(leftQuadrantStart, quadrant);
- // drawQuadrant(rightQuadrantStart, quadrant);
- /*
- * Bottomren draw from right to left Tops draw from left to right Left draws from low to high Usedby draws from
- * high to low
- */
- // Draw other nodes
- drawNodes(RelationEnum.TOP, hvi.getTop(), cPoint, sourceAnchor);
- drawNodes(RelationEnum.BOTTOM, hvi.getBottom(), cPoint, sourceAnchor);
- drawNodes(RelationEnum.LEFT, hvi.getLeft(), cPoint, sourceAnchor);
- drawNodes(RelationEnum.RIGHT, hvi.getRight(), cPoint, sourceAnchor);
- }
- container.repaint();
- canvas.layout();
- composite.layout();
- }
-
- /**
- * Draw figures around center offsetPoint #param relType - relation
- *
- * @param hvis - HyperViewItems to show.
- * @param offsetPoint - x,y to offset figures
- */
- private void drawNodes(RelationEnum relType, ArrayList<HyperViewItem> hvis, Point offsetPoint, ChopboxAnchor sourceAnchor) {
- if (HyperView.debugOn) {
- System.out.println("drawNodes");
- }
- if (hvis.isEmpty()) {
- return;
- }
- final boolean isRight = relType == RelationEnum.RIGHT;
- final boolean isLeft = relType == RelationEnum.LEFT;
- final boolean isBottom = relType == RelationEnum.BOTTOM;
- final boolean isTop = relType == RelationEnum.TOP;
- if (HyperView.debugOn) {
- System.out.println("offsetPoint *" + offsetPoint + "*");
- }
- double startDegree = 0;
- if (isRight) {
- startDegree = HyperView.rightQuadrantStart;
- } else if (isLeft) {
- startDegree = HyperView.leftQuadrantStart;
- } else if (isTop) {
- startDegree = HyperView.topQuadrantStart;
- } else if (isBottom) {
- startDegree = HyperView.bottomQuadrantStart;
- }
- double degree = 0;
- Point cPoint = new Point(); // center of figure
- Point nwPoint = new Point();
- ArrayList<HyperViewItem> orderedHvis = new ArrayList<HyperViewItem>();
-
- // if bottomren, reverse order of figures
- if (isBottom) {
- for (int i = hvis.size() - 1; i >= 0; i--) {
- HyperViewItem hvi = hvis.get(i);
- if (hvi.isShow()) {
- orderedHvis.add(hvis.get(i));
- }
- }
- } else {
- for (HyperViewItem hvi : hvis) {
- if (hvi.isShow()) {
- orderedHvis.add(hvi);
- }
- }
- }
- final double degreeDiff = quadrant / (orderedHvis.size() + 1);
- if (HyperView.debugOn) {
- System.out.println("quadrant *" + quadrant + "*");
- }
- if (HyperView.debugOn) {
- System.out.println("orderedHvis size *" + orderedHvis.size() + "*");
- }
- if (HyperView.debugOn) {
- System.out.println("degreeDiff *" + degreeDiff + "*");
- }
-
- // what is sent into constraint as the nw corner
- int myRadius;
- if (isBottom || isTop) {
- myRadius = zoom.pcRadius;
- } else {
- myRadius = zoom.uuRadius;
- }
- for (int i = 0; i < orderedHvis.size(); i++) {
- HyperViewItem hvi = orderedHvis.get(i);
- if (HyperView.debugOn) {
- System.out.println("\n");
- }
- if (HyperView.debugOn) {
- System.out.println("HIV " + hvi.getShortTitle());
- }
- degree = startDegree + degreeDiff + degreeDiff * i;
- if (HyperView.debugOn) {
- System.out.println("startDegree *" + startDegree + "*");
- }
- if (HyperView.debugOn) {
- System.out.println("degree *" + degree + "*");
- }
- NodeFigure figure = createFigure(hvi, false);
- cPoint.x = offsetPoint.x + (int) Math.round((myRadius * Math.cos(degree)));
- cPoint.y = offsetPoint.y + (int) Math.round((myRadius * Math.sin(degree)));
- if (HyperView.debugOn) {
- drawX(offsetPoint.x, offsetPoint.y - 5, "o");
- }
- if (HyperView.debugOn) {
- drawX(cPoint.x, cPoint.y - 5, "c");
- }
- Dimension dim = figure.getPreferredSize();
- if (HyperView.debugOn) {
- System.out.println("dim " + relType + " w: " + dim.width + " h:" + dim.height);
- }
- if (isLeft) {
- nwPoint.x = cPoint.x - dim.width;
- nwPoint.y = cPoint.y - dim.height / 2;
- } else if (isRight) {
- nwPoint.x = cPoint.x;
- nwPoint.y = cPoint.y - dim.height / 2;
- } else if (isBottom) {
- nwPoint.x = cPoint.x - dim.width / 2;
- nwPoint.y = cPoint.y;
- } else if (isTop) {
- nwPoint.x = cPoint.x - dim.width / 2;
- nwPoint.y = cPoint.y - dim.height;
- }
- if (orderedHvis.size() > 1 && (isTop || isBottom)) {
- if (i < orderedHvis.size() / 2) {
- myRadius += zoom.pcRadiusSeparation;
- if (isBottom) {
- nwPoint.x += zoom.xSeparation;
- }
- if (isTop) {
- nwPoint.x -= zoom.xSeparation;
- }
- } else if (i > orderedHvis.size() / 2) {
- myRadius -= zoom.pcRadiusSeparation;
- if (isBottom) {
- nwPoint.x -= zoom.xSeparation;
- }
- if (isTop) {
- nwPoint.x += zoom.xSeparation;
- }
- }
- }
- if (orderedHvis.size() > 1 && (isLeft || isRight)) {
- // int half = orderedFigures.size() / 2;
- if (i < orderedHvis.size() / 2) {
- myRadius += zoom.uuRadiusSeparation;
- } else {
- myRadius -= zoom.uuRadiusSeparation;
- }
- }
- contentsLayout.setConstraint(figure, new Rectangle(nwPoint.x, nwPoint.y, -1, -1));
- setMouseListener(figure);
- /* Draw line to left */
- ChopboxAnchor targetAnchor = new ChopboxAnchor(figure);
- drawLine(sourceAnchor, targetAnchor, figure.getHvi());
- // .getRelationToolTip(),
- // ((NodeFigure) figure).getHvi().getRelationLabel(), ((NodeFigure)
- // figure).getHvi().getRelationDirty());
-
- if (HyperView.debugOn) {
- System.out.println("cPoint *" + cPoint + "*");
- }
- if (HyperView.debugOn) {
- System.out.println("nwPoint *" + nwPoint + "*");
- }
- if (HyperView.debugOn) {
- System.out.println("offsetPoint *" + offsetPoint + "*");
- }
- ChopboxAnchor thisAnchor = new ChopboxAnchor(figure);
- if (hvi.getTop().size() > 0) {
- drawNodes(RelationEnum.TOP, hvi.getTop(), cPoint, thisAnchor);
- }
- if (hvi.getBottom().size() > 0) {
- drawNodes(RelationEnum.BOTTOM, hvi.getBottom(), new Point((nwPoint.x + dim.width / 2),
- (nwPoint.y + dim.height / 2)), thisAnchor);
- }
- if (hvi.getLeft().size() > 0) {
- drawNodes(RelationEnum.LEFT, hvi.getLeft(), cPoint, thisAnchor);
- }
- if (hvi.getRight().size() > 0) {
- drawNodes(RelationEnum.RIGHT, hvi.getRight(), cPoint, thisAnchor);
- }
- }
- }
-
- /*
- * Used for debug only drawQuadrant(leftQuadrantStart,quadrant);
- */
- // @SuppressWarnings("unused")
- // private void drawQuadrant(double start, double degrees) {
- // int cx = 100, cy = 100, r = 100;
- // int x, y;
- // double a;
- // for (a = start; a < start + degrees; a += 0.01) {
- // x = (int) Math.round(r * Math.cos(a)) + cx;
- // y = (int) Math.round(r * Math.sin(a)) + cy;
- // drawX(x, y, "x");
- // }
- // double degreeDiff = degrees / 4;
- // for (int t = 0; t < 3; t += 1) {
- // x = (int) Math.round(r * Math.cos(start + degreeDiff + (t * degreeDiff))) + cx;
- // y = (int) Math.round(r * Math.sin(start + degreeDiff + (t * degreeDiff))) + cy;
- // drawX(x, y + 20, "x");
- // }
- // }
- private void drawX(int x, int y, String str) {
- Label label = new Label(str, null);
- Figure figure = new NodeFigure(label, null, new HyperViewItem(""), false);
- container.add(figure);
- contentsLayout.setConstraint(figure, new Rectangle(x, y, -1, -1));
- }
-
- private void drawLine(ChopboxAnchor source, ChopboxAnchor target, HyperViewItem hvi) {
- PolylineConnection c = new PolylineConnection();
- c.setLineWidth(2);
- if (hvi.isRelationDirty()) {
- c.setForegroundColor(Displays.getSystemColor(SWT.COLOR_BLUE));
- }
- c.setSourceAnchor(source);
- c.setTargetAnchor(target);
- setConnectionMouseListener(c, hvi);
- // Add tooltip
- if (Strings.isValid(hvi.getRelationToolTip())) {
- c.setToolTip(new Label(hvi.getRelationToolTip()));
- // Add label
- }
-
- ConnectionEndpointLocator targetEndpointLocator = new ConnectionEndpointLocator(c, true);
- targetEndpointLocator.setVDistance(1);
- Label targetMultiplicityLabel = new Label(hvi.getRelationLabel());
- c.add(targetMultiplicityLabel, targetEndpointLocator);
-
- connectors.add(c);
- container.add(c);
- }
-
- protected void display() {
- // provided for subclass implementation
- }
-
- private void createConnectionMenuBar(final HyperViewItem hvi) {
- if (AtsUtil.isAtsAdmin()) {
- if (connectPopupMenu == null || !connectPopupMenu.isVisible()) {
- // final PolylineConnection c = connection;
- connectPopupMenu = new Menu(canvas.getShell(), SWT.POP_UP);
- MenuItem editItem = new MenuItem(connectPopupMenu, SWT.CASCADE);
- editItem.setText("Delete Link");
- editItem.addSelectionListener(new SelectionAdapter() {
-
- @Override
- public void widgetSelected(SelectionEvent e) {
- try {
- if (MessageDialog.openQuestion(Displays.getActiveShell(), "Delete Link",
- "Delete Link\n\n" + hvi.getLink().toString() + "\n\nAre you sure?")) {
- Artifact artA = hvi.getLink().getArtifactA();
- hvi.getLink().delete(true);
- artA.persist();
- connectPopupMenu.dispose();
- connectPopupMenu = null;
- display();
- }
- } catch (OseeCoreException ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
- }
- });
- connectPopupMenu.setVisible(true);
- }
- }
- }
-
- private void setConnectionMouseListener(PolylineConnection c, final HyperViewItem hvi) {
- MouseListener mouseListener = new MouseListener() {
-
- @Override
- public void mouseDoubleClicked(MouseEvent e) {
- if (HyperView.debugOn) {
- System.out.println("DoubleClick");
- }
- }
-
- @Override
- public void mousePressed(MouseEvent e) {
- if (HyperView.debugOn) {
- System.out.println("mousePressed");
- }
- }
-
- @Override
- public void mouseReleased(MouseEvent e) {
- if (HyperView.debugOn) {
- System.out.println("mouseReleased");
- }
- if (e.button == 3) {
- if (e.getSource() instanceof PolylineConnection) {
- // PolylineConnection c = (PolylineConnection) e.getSource();
- createConnectionMenuBar(hvi);
- }
- return;
- }
- }
- };
- c.addMouseListener(mouseListener);
- }
-
- private NodeFigure createFigure(HyperViewItem hvi, boolean center) {
- Label infoLabel = null;
- String title = hvi.getShortTitle();
- if (!titleAction.isChecked()) {
- if (title.length() > 30) {
- title = title.substring(0, 30);
- }
- }
- Label nameLabel = null;
- try {
- nameLabel = new Label(title, hvi.getImage());
- } catch (OseeCoreException ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- nameLabel = new Label(title, null);
- }
- Image markImage = hvi.getMarkImage();
- if (markImage != null) {
- infoLabel = new Label(null, markImage);
- }
-
- NodeFigure figure = new NodeFigure(nameLabel, infoLabel, hvi, center);
- // System.out.println(title + " " + figure.hashCode());
- container.add(figure);
- figure.setToolTip(new Label(hvi.getToolTip()));
- return figure;
- }
-
- private void setContainerMouseListener(Figure figure) {
- MouseListener mouseListener = new MouseListener() {
-
- @Override
- public void mouseDoubleClicked(MouseEvent e) {
- // do nothing
- }
-
- @Override
- public void mousePressed(MouseEvent e) {
- // do nothing
- }
-
- @Override
- public void mouseReleased(MouseEvent e) {
- if (e.button == 1) {
- if (dragCenter) {
- if (zoom.dragCenter == null) {
- zoom.dragCenter = new Point();
- }
- zoom.dragCenter.x = e.x;
- zoom.dragCenter.y = e.y;
- refresh();
- dragCenter = false;
- if (hCursor != null) {
- container.setCursor(null);
- centerFigure.setCursor(null);
- hCursor.dispose();
- }
- }
- }
- }
- };
- figure.addMouseListener(mouseListener);
- }
-
- private void setMouseListener(Figure figure) {
- MouseListener mouseListener = new MouseListener() {
-
- @Override
- public void mouseDoubleClicked(MouseEvent e) {
- if (e.button == 1 && e.getSource() instanceof NodeFigure) {
- NodeFigure nf = (NodeFigure) e.getSource();
- HyperViewItem si = nf.getSearchItem();
- handleItemDoubleClick(si);
- }
- }
-
- @Override
- public void mousePressed(MouseEvent e) {
- // do nothing
- }
-
- @Override
- public void mouseReleased(MouseEvent e) {
- // System.out.println("mouseReleased");
- if (hCursor != null) {
- container.setCursor(null);
- centerFigure.setCursor(null);
- hCursor.dispose();
- }
- if (e.getSource() instanceof NodeFigure) {
- NodeFigure nf = (NodeFigure) e.getSource();
- HyperViewItem si = nf.getSearchItem();
- if (HyperView.debugOn) {
- System.out.println("Click: " + si.getTitle());
- }
- if (e.button == 3) {
- createMenuBar(si);
- }
- }
- }
- };
- figure.addMouseListener(mouseListener);
- }
-
- public void handleItemDoubleClick(HyperViewItem hvi) {
- backListAddSearchItem(hvi);
- jumpTo(hvi);
- }
-
- public static void openActionEditor(Artifact artifact) {
- if (artifact instanceof StateMachineArtifact) {
- AtsUtil.openATSAction(artifact, AtsOpenOption.OpenOneOrPopupSelect);
- }
- }
-
- private void createMenuBar(HyperViewItem hvi) {
- if (popupMenu == null || !popupMenu.isVisible()) {
- final HyperViewItem fHvi = hvi;
- popupMenu = new Menu(canvas.getShell(), SWT.POP_UP);
-
- if (AtsUtil.isAtsAdmin()) {
- MenuItem editItem = new MenuItem(popupMenu, SWT.CASCADE);
- editItem.setText("Open in Artifact Editor");
- editItem.addSelectionListener(new SelectionAdapter() {
-
- @Override
- public void widgetSelected(SelectionEvent e) {
- Artifact a = null;
- if (fHvi instanceof ArtifactHyperItem) {
- a = ((ArtifactHyperItem) fHvi).getArtifact();
- } else if (fHvi instanceof ActionHyperItem) {
- a = ((ActionHyperItem) fHvi).getArtifact();
- }
- if (a != null) {
- try {
- RendererManager.open(a, PresentationType.GENERALIZED_EDIT);
- } catch (OseeCoreException ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
- }
- popupMenu.dispose();
- popupMenu = null;
- }
- });
- MenuItem deleteItem = new MenuItem(popupMenu, SWT.CASCADE);
- deleteItem.setText("Delete Artifact");
- deleteItem.addSelectionListener(new SelectionAdapter() {
-
- @Override
- public void widgetSelected(SelectionEvent e) {
- Artifact art = null;
- if (fHvi instanceof ArtifactHyperItem) {
- art = ((ArtifactHyperItem) fHvi).getArtifact();
- } else {
- art = ((ActionHyperItem) fHvi).getArtifact();
- }
- String dialogTitle = "Confirm Artifact Deletion?";
- StringBuilder dialogText = new StringBuilder();
- dialogText.append("\"" + art.getName() + "\"\nguid: " + art.getGuid());
- dialogText.append("\n\n Are you sure you want to delete this artifact and its default-hierarchy children?");
- if (MessageDialog.openQuestion(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(),
- dialogTitle, dialogText.toString())) {
- if (art instanceof StateMachineArtifact) {
- SMAEditor.close(Collections.singleton((StateMachineArtifact) art), false);
- }
- try {
- art.deleteAndPersist();
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
- }
- }
- popupMenu.dispose();
- popupMenu = null;
- }
- });
- }
-
- MenuItem previewItem = new MenuItem(popupMenu, SWT.CASCADE);
- previewItem.setText("Open in ATS");
- previewItem.setEnabled(fHvi instanceof ArtifactHyperItem && ((ArtifactHyperItem) fHvi).getArtifact() instanceof StateMachineArtifact || fHvi instanceof ActionHyperItem && ((ActionHyperItem) fHvi).getArtifact() instanceof StateMachineArtifact);
- previewItem.addSelectionListener(new SelectionAdapter() {
-
- @Override
- public void widgetSelected(SelectionEvent e) {
- Artifact a = null;
- if (fHvi instanceof ArtifactHyperItem) {
- a = ((ArtifactHyperItem) fHvi).getArtifact();
- } else if (fHvi instanceof ActionHyperItem) {
- a = ((ActionHyperItem) fHvi).getArtifact();
- }
- if (a != null) {
- openActionEditor(a);
- }
- }
- });
- popupMenu.setVisible(true);
- }
- }
-
- public void jumpTo(HyperViewItem si) {
- if (homeSearchItem == null) {
- return;
- }
- centerSearchItem = si;
- refresh();
- }
-
- protected void center() {
- zoom = defaultZoom;
- vsb.setSelection(verticalSelection);
- hsb.setSelection(40);
- refresh();
- }
-
- protected void createActions() {
-
- // Reset Action
- Action centerAction = new Action() {
-
- @Override
- public void run() {
- center();
- }
- };
- centerAction.setText("Center");
- centerAction.setToolTipText("Center");
- centerAction.setImageDescriptor(ImageManager.getImageDescriptor(AtsImage.CENTER));
-
- if (provideBackForwardActions()) {
- // Back Action
- backAction = new Action() {
-
- @Override
- public void run() {
- printBackList("pre backSelected");
- if (backList.isEmpty()) {
- return;
- }
- if (backListIndex > 0) {
- backListIndex--;
- }
- jumpTo(backList.get(backListIndex));
- printBackList("post backSelected");
- }
- };
-
- backAction.setText("Back");
- backAction.setToolTipText("Back");
- backAction.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(
- ISharedImages.IMG_TOOL_BACK));
- // Forward Action
- forwardAction = new Action() {
-
- @Override
- public void run() {
- printBackList("pre forwardSelected");
- if (backList.size() - 1 > backListIndex) {
- backListIndex++;
- jumpTo(backList.get(backListIndex));
- }
- printBackList("post forwardSelected");
- }
- };
- forwardAction.setText("Forward");
- forwardAction.setToolTipText("Forward");
- forwardAction.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(
- ISharedImages.IMG_TOOL_FORWARD));
- }
- // // Home
- // Action homeAction = new Action() {
- //
- // public void run() {
- // if (homeSearchItem == null) {
- // return;
- // }
- // vsb.setSelection(verticalSelection);
- // hsb.setSelection(40);
- // backListAddSearchItem(homeSearchItem);
- // jumpTo(homeSearchItem);
- // }
- // };
- // homeAction.setText("Home");
- // homeAction.setToolTipText("Home");
- // homeAction.setImageDescriptor(AtsPlugin.getImageDescriptor("home.gif"));
- // Zoom in
- Action zoomInAction = new Action() {
-
- @Override
- public void run() {
- if (homeSearchItem == null) {
- return;
- }
- if (HyperView.debugOn) {
- System.out.println("zoomInAction");
- }
- zoom.pcRadius += zoom.pcRadiusFactor;
- zoom.uuRadius += zoom.uuRadiusFactor;
- zoom.xSeparation += zoom.xSeparationFactor;
- refresh();
-
- }
- };
- zoomInAction.setText("Zoom In");
- zoomInAction.setToolTipText("Zoom In");
- zoomInAction.setImageDescriptor(ImageManager.getImageDescriptor(AtsImage.ZOOM_IN));
- // Zoom Out
- Action zoomOutAction = new Action() {
-
- @Override
- public void run() {
- if (homeSearchItem == null) {
- return;
- }
- if (HyperView.debugOn) {
- System.out.println("zoomOutAction");
- }
- if (zoom.pcRadius >= zoom.pcRadiusFactor) {
- zoom.pcRadius -= zoom.pcRadiusFactor;
- }
- if (zoom.uuRadius >= zoom.uuRadiusFactor) {
- zoom.uuRadius -= zoom.uuRadiusFactor;
- }
- if (zoom.xSeparation >= zoom.xSeparationFactor) {
- zoom.xSeparation -= zoom.xSeparationFactor;
- }
- refresh();
- }
- };
- zoomOutAction.setText("Zoom Out");
- zoomOutAction.setToolTipText("Zoom Out");
- zoomOutAction.setImageDescriptor(ImageManager.getImageDescriptor(AtsImage.ZOOM_OUT));
-
- titleAction = new Action("Expand Titles", IAction.AS_CHECK_BOX) {
-
- @Override
- public void run() {
- if (HyperView.debugOn) {
- System.out.println("expandTitles");
- }
- refresh();
- }
- };
- titleAction.setToolTipText("Expand Titles");
-
- Action refreshAction = new Action("Refresh") {
-
- @Override
- public void run() {
- if (homeSearchItem == null) {
- MessageDialog.openInformation(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(),
- "Refresh Error", "Viewer not loaded, nothing to refresh.");
- return;
- }
- handleRefreshButton();
- }
- };
- refreshAction.setToolTipText("Refresh");
- ImageManager.getImageDescriptor(PluginUiImage.REFRESH);
- refreshAction.setImageDescriptor(ImageManager.getImageDescriptor(PluginUiImage.REFRESH));
-
- IActionBars bars = getViewSite().getActionBars();
- IMenuManager mm = bars.getMenuManager();
- mm.add(new Separator());
- mm.add(titleAction);
-
- IToolBarManager tbm = bars.getToolBarManager();
- tbm.add(new Separator());
- // tbm.add(homeAction);
- tbm.add(centerAction);
- tbm.add(zoomInAction);
- tbm.add(zoomOutAction);
- if (provideBackForwardActions()) {
- tbm.add(backAction);
- tbm.add(forwardAction);
- }
- tbm.add(refreshAction);
-
- }
-
- protected void handleRefreshButton() {
- refresh();
- }
-
- /**
- * Passing the focus request to the viewer's control.
- */
- @Override
- public void setFocus() {
- // viewer.getControl().setFocus();
- }
-
- public Color getCenterColor() {
- return HyperView.centerColor;
- }
-
- public static void setCenterColor(Color color) {
- centerColor = color;
- }
-
- public Color getNodeColor() {
- return HyperView.nodeColor;
- }
-
- public static void setNodeColor(Color color) {
- nodeColor = color;
- }
-
- public int getVerticalSelection() {
- return verticalSelection;
- }
-
- public void setVerticalSelection(int verticalSelection) {
- this.verticalSelection = verticalSelection;
- if (vsb != null) {
- vsb.setSelection(verticalSelection);
- }
- }
-
- @Override
- public void dispose() {
- // do nothing
- }
-
- @Override
- public void partActivated(IWorkbenchPart part) {
- // do nothing
- }
-
- @Override
- public void partBroughtToTop(IWorkbenchPart part) {
- // do nothing
- }
-
- @Override
- public void partClosed(IWorkbenchPart part) {
- if (part.equals(this)) {
- dispose();
- }
- }
-
- @Override
- public void partDeactivated(IWorkbenchPart part) {
- // do nothing
- }
-
- @Override
- public void partOpened(IWorkbenchPart part) {
- // do nothing
- }
-
- public Figure getContainer() {
- return container;
- }
+/*******************************************************************************
+ * 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.hyper;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Vector;
+import java.util.logging.Level;
+import org.eclipse.draw2d.ChopboxAnchor;
+import org.eclipse.draw2d.ColorConstants;
+import org.eclipse.draw2d.ConnectionEndpointLocator;
+import org.eclipse.draw2d.Figure;
+import org.eclipse.draw2d.FigureCanvas;
+import org.eclipse.draw2d.Label;
+import org.eclipse.draw2d.LightweightSystem;
+import org.eclipse.draw2d.LineBorder;
+import org.eclipse.draw2d.MouseEvent;
+import org.eclipse.draw2d.MouseListener;
+import org.eclipse.draw2d.PolylineConnection;
+import org.eclipse.draw2d.ToolbarLayout;
+import org.eclipse.draw2d.XYLayout;
+import org.eclipse.draw2d.geometry.Dimension;
+import org.eclipse.draw2d.geometry.Point;
+import org.eclipse.draw2d.geometry.Rectangle;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.osee.ats.AtsImage;
+import org.eclipse.osee.ats.AtsOpenOption;
+import org.eclipse.osee.ats.artifact.StateMachineArtifact;
+import org.eclipse.osee.ats.editor.SMAEditor;
+import org.eclipse.osee.ats.internal.AtsPlugin;
+import org.eclipse.osee.ats.util.AtsUtil;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+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.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.ui.plugin.PluginUiImage;
+import org.eclipse.osee.framework.ui.skynet.OseeContributionItem;
+import org.eclipse.osee.framework.ui.skynet.render.PresentationType;
+import org.eclipse.osee.framework.ui.skynet.render.RendererManager;
+import org.eclipse.osee.framework.ui.swt.Displays;
+import org.eclipse.osee.framework.ui.swt.ImageManager;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.graphics.Cursor;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.MenuItem;
+import org.eclipse.swt.widgets.ScrollBar;
+import org.eclipse.ui.IActionBars;
+import org.eclipse.ui.IPartListener;
+import org.eclipse.ui.ISharedImages;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.part.ViewPart;
+
+public class HyperView extends ViewPart implements IPartListener {
+
+ private static final boolean debugOn = false;
+ public static String VIEW_ID = "org.eclipse.osee.ats.hyper.HyperView";
+ private LightweightSystem lws;
+ private HyperViewItem centerSearchItem;
+ private NodeFigure centerFigure;
+ protected Composite composite;
+ private Figure container; // main container Figure to hold others
+ private XYLayout contentsLayout;
+ private final Vector<PolylineConnection> connectors = new Vector<PolylineConnection>(); // PolylineConnection
+ private final Vector<HyperViewItem> backList = new Vector<HyperViewItem>();
+ // List of SearchItems visited
+ private int backListIndex = 0; // Index we are on in backList
+ private HyperViewItem homeSearchItem = null;
+ // private static Canvas canvas;
+ private FigureCanvas canvas;
+ private final Cursor hCursor = null;
+ private Menu popupMenu;
+ private Menu connectPopupMenu;
+ /* Full circle is (2*Math.PI) */
+ private static final double quadrant = 2 * Math.PI / 4;
+ /* Each quadrant is 90 degrees */
+ private static final double oneEighthCircle = quadrant / 2; /* Start 45 degrees off 0 */
+ private static final double bottomQuadrantStart = oneEighthCircle;
+ private static final double topQuadrantStart = oneEighthCircle + 2 * quadrant;
+ private static final double leftQuadrantStart = oneEighthCircle + quadrant;
+ private static final double rightQuadrantStart = oneEighthCircle + 3 * quadrant;
+ // private ChopboxAnchor sourceAnchor = null;
+ private boolean dragCenter = false;
+ protected static Color nodeColor = new Color(null, 255, 255, 206);
+ protected static Color centerColor = new Color(null, 106, 219, 255);
+ protected static final Color cyanColor = ColorConstants.cyan;
+ protected static final Color blackColor = ColorConstants.black;
+ protected static final Color whiteColor = ColorConstants.white;
+ private ScrollBar vsb;
+ private ScrollBar hsb;
+ private Action titleAction, backAction, forwardAction;
+ private Zoom zoom;
+ protected Zoom defaultZoom = new Zoom();
+ private int verticalSelection = 40;
+ protected ArrayList<String> onlyShowRelations = new ArrayList<String>();
+
+ public static class Zoom {
+
+ int pcRadius = 50;
+ int pcRadiusFactor = 5;
+ int uuRadius = 60;
+ int uuRadiusFactor = 20;
+ int uuRadiusSeparation = 13; // left/right
+ int pcRadiusSeparation = 13; // top/bottom
+ int xSeparation = 27;
+ int xSeparationFactor = 20;
+ int ySeparation = 5;
+ Point dragCenter = null;
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("xR:" + pcRadius);
+ builder.append("yR:" + uuRadius);
+ builder.append(" xRF:" + pcRadiusFactor);
+ builder.append(" yRF:" + uuRadiusFactor);
+ builder.append(" pcRS: " + pcRadiusSeparation);
+ builder.append(" uuRS: " + uuRadiusSeparation);
+ builder.append(" xS: " + xSeparation);
+ builder.append(" yS: " + ySeparation);
+ return builder.toString();
+ }
+ }
+
+ enum RelationEnum {
+ TOP,
+ BOTTOM,
+ BOTTOM2,
+ LEFT,
+ RIGHT
+ };
+
+ public boolean provideBackForwardActions() {
+ return true;
+ }
+
+ public static class NodeFigure extends Figure {
+
+ HyperViewItem hvi = null;
+
+ public HyperViewItem getSearchItem() {
+ return hvi;
+ }
+
+ public NodeFigure(Label name, Label infoLabel, HyperViewItem hvi, boolean center) {
+ ToolbarLayout layout = new ToolbarLayout();
+ layout.setVertical(false);
+ setLayoutManager(layout);
+ if (hvi.isCurrent()) {
+ setBorder(new LineBorder(cyanColor, 3));
+ } else {
+ setBorder(new LineBorder(blackColor, 1));
+ }
+ if (center) {
+ setBackgroundColor(centerColor);
+ } else {
+ setBackgroundColor(nodeColor);
+ }
+ setOpaque(true);
+ this.hvi = hvi;
+ if (name != null) {
+ add(name);
+ }
+ if (infoLabel != null) {
+ add(infoLabel);
+ }
+ }
+
+ public HyperViewItem getHvi() {
+ return hvi;
+ }
+
+ }
+
+ public HyperView() {
+ zoom = defaultZoom;
+ }
+
+ public void create(HyperViewItem hvi) {
+ clear();
+ gridLoad(hvi);
+ }
+
+ private void gridLoad(HyperViewItem hvi) {
+ if (HyperView.debugOn) {
+ System.out.println("gridLoad");
+ }
+ /*
+ * If grid already loaded and it was a collection, remove old home and all links associated with it.
+ */
+ if (homeSearchItem != null) {
+ for (HyperViewItem hyperItem : homeSearchItem.getBottom()) {
+ hyperItem.removeTop(homeSearchItem);
+ }
+ }
+ homeSearchItem = hvi;
+ centerSearchItem = hvi;
+ backListAddSearchItem(homeSearchItem);
+ jumpTo(homeSearchItem);
+ }
+
+ /**
+ * This is a callback that will allow us to create the viewer and initialize it.
+ */
+ @Override
+ public void createPartControl(Composite parent) {
+ if (HyperView.debugOn) {
+ System.out.println("createPartControl");
+ }
+ OseeContributionItem.addTo(this, true);
+
+ canvas = new FigureCanvas(parent);
+ canvas.setScrollBarVisibility(FigureCanvas.ALWAYS);
+ vsb = canvas.getVerticalBar();
+ vsb.setIncrement(1);
+ vsb.setSelection(verticalSelection);
+ vsb.addListener(SWT.Selection, new Listener() {
+
+ @Override
+ public void handleEvent(Event event) {
+ refresh();
+ // System.out.println("vScroll " + event);
+ // int v = canvas.getVerticalBar().getSelection();
+ // System.out.println("v *" + v + "*");
+ }
+ });
+ hsb = canvas.getHorizontalBar();
+ hsb.setIncrement(1);
+ hsb.setSelection(40);
+ hsb.addListener(SWT.Selection, new Listener() {
+
+ @Override
+ public void handleEvent(Event event) {
+ refresh();
+ // System.out.println("hScroll " + event);
+ // int h = canvas.getVerticalBar().getSelection();
+ // System.out.println("h *" + h + "*");
+ }
+ });
+ // canvas = new Canvas(top, SWT.NONE);
+ composite = parent;
+ canvas.setBackground(composite.getDisplay().getSystemColor(SWT.COLOR_WHITE));
+ lws = new LightweightSystem(canvas);
+ container = new Figure();
+ setContainerMouseListener(container);
+ setMouseListener(container);
+ contentsLayout = new XYLayout();
+ container.setLayoutManager(contentsLayout);
+ lws.setContents(container);
+ // canvas.addPaintListener(new PaintListener() {
+ //
+ // public void paintControl(PaintEvent e) {
+ // if (centerSearchItem == null || centerSearchItem.getArtifact() == null
+ // || centerSearchItem.getArtifact().isDeleted())
+ // return;
+ // // refresh();
+ // }
+ // });
+ canvas.layout();
+ composite.layout();
+ createActions();
+
+ }
+
+ private void printBackList(String inStr) {
+ final boolean debug = false;
+ if (debug) {
+ StringBuilder builder = new StringBuilder();
+ builder.append(inStr + "backList : [");
+ for (int i = 0; i < backList.size(); i++) {
+ builder.append(i + " ");
+ }
+ builder.append("] index: " + backListIndex);
+ System.err.println(builder.toString());
+ }
+ }
+
+ private void backListClearToIndex() {
+ printBackList("pre backListClearToIndex");
+ // Remove any extra items after where we are in backList
+ for (int i = backListIndex + 1; i < backList.size(); i++) {
+ backList.remove(i);
+ }
+ printBackList("post backListClearToIndex");
+ }
+
+ private void backListAddSearchItem(HyperViewItem hvi) {
+ // If we are adding, then any items past backListIndex are
+ // invalid and should be removed
+ printBackList("pre backListAddSearchItem");
+ backListClearToIndex();
+ if (backList.size() > 0) {
+ if (backList.get(backList.size() - 1).equals(hvi)) {
+ // System.out.println("same as last; skip");
+ return;
+ }
+ }
+ backList.add(hvi);
+ backListIndex = backList.size() - 1;
+ printBackList("post backListAddSearchItem");
+ }
+
+ // private void backListClear() {
+ // backList.clear();
+ // backListIndex = 0;
+ // }
+
+ public void refresh() {
+ gridDrawCenterItem();
+ }
+
+ protected void clear() {
+ if (HyperView.debugOn) {
+ System.out.println("gridClear");
+ }
+ if (connectors != null) {
+ for (int i = 0; i < connectors.size(); i++) {
+ connectors.get(i).erase();
+ }
+ connectors.clear();
+ }
+ if (container != null) {
+ container.removeAll();
+ }
+ }
+
+ private void gridDrawCenterItem() {
+ clear();
+ Rectangle grid = container.getClientArea();
+ // System.out.println("grid w: " + grid.width + " h:" + grid.height);
+ gridDraw(centerSearchItem, new Point(grid.width / 2, grid.height / 2));
+ }
+
+ private void gridDraw(HyperViewItem hvi, Point center) {
+ if (HyperView.debugOn) {
+ System.out.println("zoom *" + zoom + "*");
+ }
+ // Draw center node
+ if (hvi != null) {
+ if (HyperView.debugOn) {
+ System.out.println("center x: " + center.x + " y:" + center.y);
+ }
+ if (HyperView.debugOn) {
+ System.out.println("centerFigure *" + hvi.getTitle() + "*");
+ }
+ Point useCenter;
+ if (zoom.dragCenter != null) {
+ useCenter = zoom.dragCenter.getCopy();
+ } else {
+ useCenter = center.getCopy();
+ }
+ // Offset by scroll
+ if (vsb != null) {
+ useCenter.y -= (vsb.getSelection() - 40) * 10;
+ }
+ if (hsb != null) {
+ useCenter.x -= (hsb.getSelection() - 40) * 10;
+ }
+ // System.out.println("zoom.dragCenter *" + zoom.dragCenter + "*");
+ // System.out.println("center *" + center + "*");
+ // System.out.println("vsb.getSelection() *" + vsb.getSelection() +
+ // "*");
+ // System.out.println("hsb.getSelection() *" + hsb.getSelection() +
+ // "*");
+ Point nwPoint;
+ Point cPoint;
+ centerFigure = createFigure(centerSearchItem, true);
+ Dimension dim = centerFigure.getPreferredSize();
+ if (HyperView.debugOn) {
+ System.out.println("dim center w: " + dim.width + " h:" + dim.height);
+ }
+ nwPoint = new Point((useCenter.x - dim.width / 2), (useCenter.y - dim.height / 2));
+ cPoint = new Point((nwPoint.x + dim.width / 2), (nwPoint.y + dim.height / 2));
+ if (HyperView.debugOn) {
+ System.out.println("nwPoint *" + nwPoint + "*");
+ }
+ if (HyperView.debugOn) {
+ System.out.println("cPoint *" + cPoint + "*");
+ }
+ contentsLayout.setConstraint(centerFigure, new Rectangle(nwPoint.x, nwPoint.y, -1, -1));
+ // centerFigure.repaint();
+ ChopboxAnchor sourceAnchor = new ChopboxAnchor(centerFigure);
+ setMouseListener(centerFigure);
+ // debug only
+ // drawQuadrant(topQuadrantStart, quadrant);
+ // drawQuadrant(bottomQuadrantStart, quadrant);
+ // drawQuadrant(leftQuadrantStart, quadrant);
+ // drawQuadrant(rightQuadrantStart, quadrant);
+ /*
+ * Bottomren draw from right to left Tops draw from left to right Left draws from low to high Usedby draws from
+ * high to low
+ */
+ // Draw other nodes
+ drawNodes(RelationEnum.TOP, hvi.getTop(), cPoint, sourceAnchor);
+ drawNodes(RelationEnum.BOTTOM, hvi.getBottom(), cPoint, sourceAnchor);
+ drawNodes(RelationEnum.LEFT, hvi.getLeft(), cPoint, sourceAnchor);
+ drawNodes(RelationEnum.RIGHT, hvi.getRight(), cPoint, sourceAnchor);
+ }
+ container.repaint();
+ canvas.layout();
+ composite.layout();
+ }
+
+ /**
+ * Draw figures around center offsetPoint #param relType - relation
+ *
+ * @param hvis - HyperViewItems to show.
+ * @param offsetPoint - x,y to offset figures
+ */
+ private void drawNodes(RelationEnum relType, ArrayList<HyperViewItem> hvis, Point offsetPoint, ChopboxAnchor sourceAnchor) {
+ if (HyperView.debugOn) {
+ System.out.println("drawNodes");
+ }
+ if (hvis.isEmpty()) {
+ return;
+ }
+ final boolean isRight = relType == RelationEnum.RIGHT;
+ final boolean isLeft = relType == RelationEnum.LEFT;
+ final boolean isBottom = relType == RelationEnum.BOTTOM;
+ final boolean isTop = relType == RelationEnum.TOP;
+ if (HyperView.debugOn) {
+ System.out.println("offsetPoint *" + offsetPoint + "*");
+ }
+ double startDegree = 0;
+ if (isRight) {
+ startDegree = HyperView.rightQuadrantStart;
+ } else if (isLeft) {
+ startDegree = HyperView.leftQuadrantStart;
+ } else if (isTop) {
+ startDegree = HyperView.topQuadrantStart;
+ } else if (isBottom) {
+ startDegree = HyperView.bottomQuadrantStart;
+ }
+ double degree = 0;
+ Point cPoint = new Point(); // center of figure
+ Point nwPoint = new Point();
+ ArrayList<HyperViewItem> orderedHvis = new ArrayList<HyperViewItem>();
+
+ // if bottomren, reverse order of figures
+ if (isBottom) {
+ for (int i = hvis.size() - 1; i >= 0; i--) {
+ HyperViewItem hvi = hvis.get(i);
+ if (hvi.isShow()) {
+ orderedHvis.add(hvis.get(i));
+ }
+ }
+ } else {
+ for (HyperViewItem hvi : hvis) {
+ if (hvi.isShow()) {
+ orderedHvis.add(hvi);
+ }
+ }
+ }
+ final double degreeDiff = quadrant / (orderedHvis.size() + 1);
+ if (HyperView.debugOn) {
+ System.out.println("quadrant *" + quadrant + "*");
+ }
+ if (HyperView.debugOn) {
+ System.out.println("orderedHvis size *" + orderedHvis.size() + "*");
+ }
+ if (HyperView.debugOn) {
+ System.out.println("degreeDiff *" + degreeDiff + "*");
+ }
+
+ // what is sent into constraint as the nw corner
+ int myRadius;
+ if (isBottom || isTop) {
+ myRadius = zoom.pcRadius;
+ } else {
+ myRadius = zoom.uuRadius;
+ }
+ for (int i = 0; i < orderedHvis.size(); i++) {
+ HyperViewItem hvi = orderedHvis.get(i);
+ if (HyperView.debugOn) {
+ System.out.println("\n");
+ }
+ if (HyperView.debugOn) {
+ System.out.println("HIV " + hvi.getShortTitle());
+ }
+ degree = startDegree + degreeDiff + degreeDiff * i;
+ if (HyperView.debugOn) {
+ System.out.println("startDegree *" + startDegree + "*");
+ }
+ if (HyperView.debugOn) {
+ System.out.println("degree *" + degree + "*");
+ }
+ NodeFigure figure = createFigure(hvi, false);
+ cPoint.x = offsetPoint.x + (int) Math.round((myRadius * Math.cos(degree)));
+ cPoint.y = offsetPoint.y + (int) Math.round((myRadius * Math.sin(degree)));
+ if (HyperView.debugOn) {
+ drawX(offsetPoint.x, offsetPoint.y - 5, "o");
+ }
+ if (HyperView.debugOn) {
+ drawX(cPoint.x, cPoint.y - 5, "c");
+ }
+ Dimension dim = figure.getPreferredSize();
+ if (HyperView.debugOn) {
+ System.out.println("dim " + relType + " w: " + dim.width + " h:" + dim.height);
+ }
+ if (isLeft) {
+ nwPoint.x = cPoint.x - dim.width;
+ nwPoint.y = cPoint.y - dim.height / 2;
+ } else if (isRight) {
+ nwPoint.x = cPoint.x;
+ nwPoint.y = cPoint.y - dim.height / 2;
+ } else if (isBottom) {
+ nwPoint.x = cPoint.x - dim.width / 2;
+ nwPoint.y = cPoint.y;
+ } else if (isTop) {
+ nwPoint.x = cPoint.x - dim.width / 2;
+ nwPoint.y = cPoint.y - dim.height;
+ }
+ if (orderedHvis.size() > 1 && (isTop || isBottom)) {
+ if (i < orderedHvis.size() / 2) {
+ myRadius += zoom.pcRadiusSeparation;
+ if (isBottom) {
+ nwPoint.x += zoom.xSeparation;
+ }
+ if (isTop) {
+ nwPoint.x -= zoom.xSeparation;
+ }
+ } else if (i > orderedHvis.size() / 2) {
+ myRadius -= zoom.pcRadiusSeparation;
+ if (isBottom) {
+ nwPoint.x -= zoom.xSeparation;
+ }
+ if (isTop) {
+ nwPoint.x += zoom.xSeparation;
+ }
+ }
+ }
+ if (orderedHvis.size() > 1 && (isLeft || isRight)) {
+ // int half = orderedFigures.size() / 2;
+ if (i < orderedHvis.size() / 2) {
+ myRadius += zoom.uuRadiusSeparation;
+ } else {
+ myRadius -= zoom.uuRadiusSeparation;
+ }
+ }
+ contentsLayout.setConstraint(figure, new Rectangle(nwPoint.x, nwPoint.y, -1, -1));
+ setMouseListener(figure);
+ /* Draw line to left */
+ ChopboxAnchor targetAnchor = new ChopboxAnchor(figure);
+ drawLine(sourceAnchor, targetAnchor, figure.getHvi());
+ // .getRelationToolTip(),
+ // ((NodeFigure) figure).getHvi().getRelationLabel(), ((NodeFigure)
+ // figure).getHvi().getRelationDirty());
+
+ if (HyperView.debugOn) {
+ System.out.println("cPoint *" + cPoint + "*");
+ }
+ if (HyperView.debugOn) {
+ System.out.println("nwPoint *" + nwPoint + "*");
+ }
+ if (HyperView.debugOn) {
+ System.out.println("offsetPoint *" + offsetPoint + "*");
+ }
+ ChopboxAnchor thisAnchor = new ChopboxAnchor(figure);
+ if (hvi.getTop().size() > 0) {
+ drawNodes(RelationEnum.TOP, hvi.getTop(), cPoint, thisAnchor);
+ }
+ if (hvi.getBottom().size() > 0) {
+ drawNodes(RelationEnum.BOTTOM, hvi.getBottom(), new Point((nwPoint.x + dim.width / 2),
+ (nwPoint.y + dim.height / 2)), thisAnchor);
+ }
+ if (hvi.getLeft().size() > 0) {
+ drawNodes(RelationEnum.LEFT, hvi.getLeft(), cPoint, thisAnchor);
+ }
+ if (hvi.getRight().size() > 0) {
+ drawNodes(RelationEnum.RIGHT, hvi.getRight(), cPoint, thisAnchor);
+ }
+ }
+ }
+
+ /*
+ * Used for debug only drawQuadrant(leftQuadrantStart,quadrant);
+ */
+ // @SuppressWarnings("unused")
+ // private void drawQuadrant(double start, double degrees) {
+ // int cx = 100, cy = 100, r = 100;
+ // int x, y;
+ // double a;
+ // for (a = start; a < start + degrees; a += 0.01) {
+ // x = (int) Math.round(r * Math.cos(a)) + cx;
+ // y = (int) Math.round(r * Math.sin(a)) + cy;
+ // drawX(x, y, "x");
+ // }
+ // double degreeDiff = degrees / 4;
+ // for (int t = 0; t < 3; t += 1) {
+ // x = (int) Math.round(r * Math.cos(start + degreeDiff + (t * degreeDiff))) + cx;
+ // y = (int) Math.round(r * Math.sin(start + degreeDiff + (t * degreeDiff))) + cy;
+ // drawX(x, y + 20, "x");
+ // }
+ // }
+ private void drawX(int x, int y, String str) {
+ Label label = new Label(str, null);
+ Figure figure = new NodeFigure(label, null, new HyperViewItem(""), false);
+ container.add(figure);
+ contentsLayout.setConstraint(figure, new Rectangle(x, y, -1, -1));
+ }
+
+ private void drawLine(ChopboxAnchor source, ChopboxAnchor target, HyperViewItem hvi) {
+ PolylineConnection c = new PolylineConnection();
+ c.setLineWidth(2);
+ if (hvi.isRelationDirty()) {
+ c.setForegroundColor(Displays.getSystemColor(SWT.COLOR_BLUE));
+ }
+ c.setSourceAnchor(source);
+ c.setTargetAnchor(target);
+ setConnectionMouseListener(c, hvi);
+ // Add tooltip
+ if (Strings.isValid(hvi.getRelationToolTip())) {
+ c.setToolTip(new Label(hvi.getRelationToolTip()));
+ // Add label
+ }
+
+ ConnectionEndpointLocator targetEndpointLocator = new ConnectionEndpointLocator(c, true);
+ targetEndpointLocator.setVDistance(1);
+ Label targetMultiplicityLabel = new Label(hvi.getRelationLabel());
+ c.add(targetMultiplicityLabel, targetEndpointLocator);
+
+ connectors.add(c);
+ container.add(c);
+ }
+
+ protected void display() {
+ // provided for subclass implementation
+ }
+
+ private void createConnectionMenuBar(final HyperViewItem hvi) {
+ if (AtsUtil.isAtsAdmin()) {
+ if (connectPopupMenu == null || !connectPopupMenu.isVisible()) {
+ // final PolylineConnection c = connection;
+ connectPopupMenu = new Menu(canvas.getShell(), SWT.POP_UP);
+ MenuItem editItem = new MenuItem(connectPopupMenu, SWT.CASCADE);
+ editItem.setText("Delete Link");
+ editItem.addSelectionListener(new SelectionAdapter() {
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ try {
+ if (MessageDialog.openQuestion(Displays.getActiveShell(), "Delete Link",
+ "Delete Link\n\n" + hvi.getLink().toString() + "\n\nAre you sure?")) {
+ Artifact artA = hvi.getLink().getArtifactA();
+ hvi.getLink().delete(true);
+ artA.persist();
+ connectPopupMenu.dispose();
+ connectPopupMenu = null;
+ display();
+ }
+ } catch (OseeCoreException ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ }
+ }
+ });
+ connectPopupMenu.setVisible(true);
+ }
+ }
+ }
+
+ private void setConnectionMouseListener(PolylineConnection c, final HyperViewItem hvi) {
+ MouseListener mouseListener = new MouseListener() {
+
+ @Override
+ public void mouseDoubleClicked(MouseEvent e) {
+ if (HyperView.debugOn) {
+ System.out.println("DoubleClick");
+ }
+ }
+
+ @Override
+ public void mousePressed(MouseEvent e) {
+ if (HyperView.debugOn) {
+ System.out.println("mousePressed");
+ }
+ }
+
+ @Override
+ public void mouseReleased(MouseEvent e) {
+ if (HyperView.debugOn) {
+ System.out.println("mouseReleased");
+ }
+ if (e.button == 3) {
+ if (e.getSource() instanceof PolylineConnection) {
+ // PolylineConnection c = (PolylineConnection) e.getSource();
+ createConnectionMenuBar(hvi);
+ }
+ return;
+ }
+ }
+ };
+ c.addMouseListener(mouseListener);
+ }
+
+ private NodeFigure createFigure(HyperViewItem hvi, boolean center) {
+ Label infoLabel = null;
+ String title = hvi.getShortTitle();
+ if (!titleAction.isChecked()) {
+ if (title.length() > 30) {
+ title = title.substring(0, 30);
+ }
+ }
+ Label nameLabel = null;
+ try {
+ nameLabel = new Label(title, hvi.getImage());
+ } catch (OseeCoreException ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ nameLabel = new Label(title, null);
+ }
+ Image markImage = hvi.getMarkImage();
+ if (markImage != null) {
+ infoLabel = new Label(null, markImage);
+ }
+
+ NodeFigure figure = new NodeFigure(nameLabel, infoLabel, hvi, center);
+ // System.out.println(title + " " + figure.hashCode());
+ container.add(figure);
+ figure.setToolTip(new Label(hvi.getToolTip()));
+ return figure;
+ }
+
+ private void setContainerMouseListener(Figure figure) {
+ MouseListener mouseListener = new MouseListener() {
+
+ @Override
+ public void mouseDoubleClicked(MouseEvent e) {
+ // do nothing
+ }
+
+ @Override
+ public void mousePressed(MouseEvent e) {
+ // do nothing
+ }
+
+ @Override
+ public void mouseReleased(MouseEvent e) {
+ if (e.button == 1) {
+ if (dragCenter) {
+ if (zoom.dragCenter == null) {
+ zoom.dragCenter = new Point();
+ }
+ zoom.dragCenter.x = e.x;
+ zoom.dragCenter.y = e.y;
+ refresh();
+ dragCenter = false;
+ if (hCursor != null) {
+ container.setCursor(null);
+ centerFigure.setCursor(null);
+ hCursor.dispose();
+ }
+ }
+ }
+ }
+ };
+ figure.addMouseListener(mouseListener);
+ }
+
+ private void setMouseListener(Figure figure) {
+ MouseListener mouseListener = new MouseListener() {
+
+ @Override
+ public void mouseDoubleClicked(MouseEvent e) {
+ if (e.button == 1 && e.getSource() instanceof NodeFigure) {
+ NodeFigure nf = (NodeFigure) e.getSource();
+ HyperViewItem si = nf.getSearchItem();
+ handleItemDoubleClick(si);
+ }
+ }
+
+ @Override
+ public void mousePressed(MouseEvent e) {
+ // do nothing
+ }
+
+ @Override
+ public void mouseReleased(MouseEvent e) {
+ // System.out.println("mouseReleased");
+ if (hCursor != null) {
+ container.setCursor(null);
+ centerFigure.setCursor(null);
+ hCursor.dispose();
+ }
+ if (e.getSource() instanceof NodeFigure) {
+ NodeFigure nf = (NodeFigure) e.getSource();
+ HyperViewItem si = nf.getSearchItem();
+ if (HyperView.debugOn) {
+ System.out.println("Click: " + si.getTitle());
+ }
+ if (e.button == 3) {
+ createMenuBar(si);
+ }
+ }
+ }
+ };
+ figure.addMouseListener(mouseListener);
+ }
+
+ public void handleItemDoubleClick(HyperViewItem hvi) {
+ backListAddSearchItem(hvi);
+ jumpTo(hvi);
+ }
+
+ public static void openActionEditor(Artifact artifact) {
+ if (artifact instanceof StateMachineArtifact) {
+ AtsUtil.openATSAction(artifact, AtsOpenOption.OpenOneOrPopupSelect);
+ }
+ }
+
+ private void createMenuBar(HyperViewItem hvi) {
+ if (popupMenu == null || !popupMenu.isVisible()) {
+ final HyperViewItem fHvi = hvi;
+ popupMenu = new Menu(canvas.getShell(), SWT.POP_UP);
+
+ if (AtsUtil.isAtsAdmin()) {
+ MenuItem editItem = new MenuItem(popupMenu, SWT.CASCADE);
+ editItem.setText("Open in Artifact Editor");
+ editItem.addSelectionListener(new SelectionAdapter() {
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ Artifact a = null;
+ if (fHvi instanceof ArtifactHyperItem) {
+ a = ((ArtifactHyperItem) fHvi).getArtifact();
+ } else if (fHvi instanceof ActionHyperItem) {
+ a = ((ActionHyperItem) fHvi).getArtifact();
+ }
+ if (a != null) {
+ try {
+ RendererManager.open(a, PresentationType.GENERALIZED_EDIT);
+ } catch (OseeCoreException ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ }
+ }
+ popupMenu.dispose();
+ popupMenu = null;
+ }
+ });
+ MenuItem deleteItem = new MenuItem(popupMenu, SWT.CASCADE);
+ deleteItem.setText("Delete Artifact");
+ deleteItem.addSelectionListener(new SelectionAdapter() {
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ Artifact art = null;
+ if (fHvi instanceof ArtifactHyperItem) {
+ art = ((ArtifactHyperItem) fHvi).getArtifact();
+ } else {
+ art = ((ActionHyperItem) fHvi).getArtifact();
+ }
+ String dialogTitle = "Confirm Artifact Deletion?";
+ StringBuilder dialogText = new StringBuilder();
+ dialogText.append("\"" + art.getName() + "\"\nguid: " + art.getGuid());
+ dialogText.append("\n\n Are you sure you want to delete this artifact and its default-hierarchy children?");
+ if (MessageDialog.openQuestion(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(),
+ dialogTitle, dialogText.toString())) {
+ if (art instanceof StateMachineArtifact) {
+ SMAEditor.close(Collections.singleton((StateMachineArtifact) art), false);
+ }
+ try {
+ art.deleteAndPersist();
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
+ }
+ }
+ popupMenu.dispose();
+ popupMenu = null;
+ }
+ });
+ }
+
+ MenuItem previewItem = new MenuItem(popupMenu, SWT.CASCADE);
+ previewItem.setText("Open in ATS");
+ previewItem.setEnabled(fHvi instanceof ArtifactHyperItem && ((ArtifactHyperItem) fHvi).getArtifact() instanceof StateMachineArtifact || fHvi instanceof ActionHyperItem && ((ActionHyperItem) fHvi).getArtifact() instanceof StateMachineArtifact);
+ previewItem.addSelectionListener(new SelectionAdapter() {
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ Artifact a = null;
+ if (fHvi instanceof ArtifactHyperItem) {
+ a = ((ArtifactHyperItem) fHvi).getArtifact();
+ } else if (fHvi instanceof ActionHyperItem) {
+ a = ((ActionHyperItem) fHvi).getArtifact();
+ }
+ if (a != null) {
+ openActionEditor(a);
+ }
+ }
+ });
+ popupMenu.setVisible(true);
+ }
+ }
+
+ public void jumpTo(HyperViewItem si) {
+ if (homeSearchItem == null) {
+ return;
+ }
+ centerSearchItem = si;
+ refresh();
+ }
+
+ protected void center() {
+ zoom = defaultZoom;
+ vsb.setSelection(verticalSelection);
+ hsb.setSelection(40);
+ refresh();
+ }
+
+ protected void createActions() {
+
+ // Reset Action
+ Action centerAction = new Action() {
+
+ @Override
+ public void run() {
+ center();
+ }
+ };
+ centerAction.setText("Center");
+ centerAction.setToolTipText("Center");
+ centerAction.setImageDescriptor(ImageManager.getImageDescriptor(AtsImage.CENTER));
+
+ if (provideBackForwardActions()) {
+ // Back Action
+ backAction = new Action() {
+
+ @Override
+ public void run() {
+ printBackList("pre backSelected");
+ if (backList.isEmpty()) {
+ return;
+ }
+ if (backListIndex > 0) {
+ backListIndex--;
+ }
+ jumpTo(backList.get(backListIndex));
+ printBackList("post backSelected");
+ }
+ };
+
+ backAction.setText("Back");
+ backAction.setToolTipText("Back");
+ backAction.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(
+ ISharedImages.IMG_TOOL_BACK));
+ // Forward Action
+ forwardAction = new Action() {
+
+ @Override
+ public void run() {
+ printBackList("pre forwardSelected");
+ if (backList.size() - 1 > backListIndex) {
+ backListIndex++;
+ jumpTo(backList.get(backListIndex));
+ }
+ printBackList("post forwardSelected");
+ }
+ };
+ forwardAction.setText("Forward");
+ forwardAction.setToolTipText("Forward");
+ forwardAction.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(
+ ISharedImages.IMG_TOOL_FORWARD));
+ }
+ // // Home
+ // Action homeAction = new Action() {
+ //
+ // public void run() {
+ // if (homeSearchItem == null) {
+ // return;
+ // }
+ // vsb.setSelection(verticalSelection);
+ // hsb.setSelection(40);
+ // backListAddSearchItem(homeSearchItem);
+ // jumpTo(homeSearchItem);
+ // }
+ // };
+ // homeAction.setText("Home");
+ // homeAction.setToolTipText("Home");
+ // homeAction.setImageDescriptor(AtsPlugin.getImageDescriptor("home.gif"));
+ // Zoom in
+ Action zoomInAction = new Action() {
+
+ @Override
+ public void run() {
+ if (homeSearchItem == null) {
+ return;
+ }
+ if (HyperView.debugOn) {
+ System.out.println("zoomInAction");
+ }
+ zoom.pcRadius += zoom.pcRadiusFactor;
+ zoom.uuRadius += zoom.uuRadiusFactor;
+ zoom.xSeparation += zoom.xSeparationFactor;
+ refresh();
+
+ }
+ };
+ zoomInAction.setText("Zoom In");
+ zoomInAction.setToolTipText("Zoom In");
+ zoomInAction.setImageDescriptor(ImageManager.getImageDescriptor(AtsImage.ZOOM_IN));
+ // Zoom Out
+ Action zoomOutAction = new Action() {
+
+ @Override
+ public void run() {
+ if (homeSearchItem == null) {
+ return;
+ }
+ if (HyperView.debugOn) {
+ System.out.println("zoomOutAction");
+ }
+ if (zoom.pcRadius >= zoom.pcRadiusFactor) {
+ zoom.pcRadius -= zoom.pcRadiusFactor;
+ }
+ if (zoom.uuRadius >= zoom.uuRadiusFactor) {
+ zoom.uuRadius -= zoom.uuRadiusFactor;
+ }
+ if (zoom.xSeparation >= zoom.xSeparationFactor) {
+ zoom.xSeparation -= zoom.xSeparationFactor;
+ }
+ refresh();
+ }
+ };
+ zoomOutAction.setText("Zoom Out");
+ zoomOutAction.setToolTipText("Zoom Out");
+ zoomOutAction.setImageDescriptor(ImageManager.getImageDescriptor(AtsImage.ZOOM_OUT));
+
+ titleAction = new Action("Expand Titles", IAction.AS_CHECK_BOX) {
+
+ @Override
+ public void run() {
+ if (HyperView.debugOn) {
+ System.out.println("expandTitles");
+ }
+ refresh();
+ }
+ };
+ titleAction.setToolTipText("Expand Titles");
+
+ Action refreshAction = new Action("Refresh") {
+
+ @Override
+ public void run() {
+ if (homeSearchItem == null) {
+ MessageDialog.openInformation(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(),
+ "Refresh Error", "Viewer not loaded, nothing to refresh.");
+ return;
+ }
+ handleRefreshButton();
+ }
+ };
+ refreshAction.setToolTipText("Refresh");
+ ImageManager.getImageDescriptor(PluginUiImage.REFRESH);
+ refreshAction.setImageDescriptor(ImageManager.getImageDescriptor(PluginUiImage.REFRESH));
+
+ IActionBars bars = getViewSite().getActionBars();
+ IMenuManager mm = bars.getMenuManager();
+ mm.add(new Separator());
+ mm.add(titleAction);
+
+ IToolBarManager tbm = bars.getToolBarManager();
+ tbm.add(new Separator());
+ // tbm.add(homeAction);
+ tbm.add(centerAction);
+ tbm.add(zoomInAction);
+ tbm.add(zoomOutAction);
+ if (provideBackForwardActions()) {
+ tbm.add(backAction);
+ tbm.add(forwardAction);
+ }
+ tbm.add(refreshAction);
+
+ }
+
+ protected void handleRefreshButton() {
+ refresh();
+ }
+
+ /**
+ * Passing the focus request to the viewer's control.
+ */
+ @Override
+ public void setFocus() {
+ // viewer.getControl().setFocus();
+ }
+
+ public Color getCenterColor() {
+ return HyperView.centerColor;
+ }
+
+ public static void setCenterColor(Color color) {
+ centerColor = color;
+ }
+
+ public Color getNodeColor() {
+ return HyperView.nodeColor;
+ }
+
+ public static void setNodeColor(Color color) {
+ nodeColor = color;
+ }
+
+ public int getVerticalSelection() {
+ return verticalSelection;
+ }
+
+ public void setVerticalSelection(int verticalSelection) {
+ this.verticalSelection = verticalSelection;
+ if (vsb != null) {
+ vsb.setSelection(verticalSelection);
+ }
+ }
+
+ @Override
+ public void dispose() {
+ // do nothing
+ }
+
+ @Override
+ public void partActivated(IWorkbenchPart part) {
+ // do nothing
+ }
+
+ @Override
+ public void partBroughtToTop(IWorkbenchPart part) {
+ // do nothing
+ }
+
+ @Override
+ public void partClosed(IWorkbenchPart part) {
+ if (part.equals(this)) {
+ dispose();
+ }
+ }
+
+ @Override
+ public void partDeactivated(IWorkbenchPart part) {
+ // do nothing
+ }
+
+ @Override
+ public void partOpened(IWorkbenchPart part) {
+ // do nothing
+ }
+
+ public Figure getContainer() {
+ return container;
+ }
} \ No newline at end of file
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/hyper/HyperViewItem.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/hyper/HyperViewItem.java
index b9195ad8937..be4b1e0cde3 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/hyper/HyperViewItem.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/hyper/HyperViewItem.java
@@ -1,196 +1,196 @@
-/*******************************************************************************
- * 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.hyper;
-
-import java.util.ArrayList;
-import org.eclipse.osee.framework.core.exception.OseeCoreException;
-import org.eclipse.osee.framework.skynet.core.relation.RelationLink;
-import org.eclipse.swt.graphics.Image;
-
-public class HyperViewItem {
-
- private final ArrayList<HyperViewItem> bottoms = new ArrayList<HyperViewItem>(); // bottom
- private final ArrayList<HyperViewItem> tops = new ArrayList<HyperViewItem>(); // top
- private final ArrayList<HyperViewItem> lefts = new ArrayList<HyperViewItem>(); // left
- private final ArrayList<HyperViewItem> rights = new ArrayList<HyperViewItem>(); // right
- private String guid;
- private final String title;
- private Image image;
- private String toolTip;
- private String relationToolTip;
- private String relationLabel;
- private boolean relationDirty = false;
- private boolean highlight = false;
- private boolean current = false;
- private boolean show = true;
- private RelationLink link;
-
- public HyperViewItem(String title) {
- this(title, null);
- }
-
- public HyperViewItem(String title, Image image) {
- this.title = title;
- this.image = image;
- this.toolTip = title;
- }
-
- // lastModified
- public void clearAllSearchItemLinks() {
- bottoms.clear();
- tops.clear();
- lefts.clear();
- rights.clear();
- }
-
- public Image getMarkImage() {
- return null;
- }
-
- public void addBottom(HyperViewItem si) {
- bottoms.add(si);
- }
-
- public void addTop(HyperViewItem si) {
- tops.add(si);
- }
-
- public void removeTop(HyperViewItem si) {
- if (tops.contains(si)) {
- tops.remove(si);
- }
- }
-
- public String getShortTitle() {
- return title;
- }
-
- public void addLeft(HyperViewItem si) {
- lefts.add(si);
- }
-
- public void addRight(HyperViewItem si) {
- rights.add(si);
- }
-
- /**
- * @return ArrayList of HyperViewItems
- */
- public ArrayList<HyperViewItem> getBottom() {
- return bottoms;
- }
-
- /**
- * @return ArrayList of HyperViewItems
- */
- public ArrayList<HyperViewItem> getTop() {
- return tops;
- }
-
- /**
- * @return ArrayList of HyperViewItems
- */
- public ArrayList<HyperViewItem> getLeft() {
- return lefts;
- }
-
- /**
- * @return ArrayList of HyperViewItems
- */
- public ArrayList<HyperViewItem> getRight() {
- return rights;
- }
-
- @SuppressWarnings("unused")
- public Image getImage() throws OseeCoreException {
- return image;
- }
-
- public String getTitle() {
- return title;
- }
-
- public String getToolTip() {
- return toolTip;
- }
-
- public void setToolTip(String toolTip) {
- this.toolTip = toolTip;
- }
-
- public boolean isShow() {
- return show;
- }
-
- public void setShow(boolean show) {
- this.show = show;
- }
-
- public void setImage(Image image) {
- this.image = image;
- }
-
- public boolean isHighlight() {
- return highlight;
- }
-
- public void setHighlight(boolean highlight) {
- this.highlight = highlight;
- }
-
- public boolean isCurrent() {
- return current;
- }
-
- public void setCurrent(boolean current) {
- this.current = current;
- }
-
- public void setGuid(String guid) {
- this.guid = guid;
- }
-
- public String getGuid() {
- return guid;
- }
-
- public String getRelationToolTip() {
- return relationToolTip;
- }
-
- public void setRelationToolTip(String relationToolTip) {
- this.relationToolTip = relationToolTip;
- }
-
- public String getRelationLabel() {
- return relationLabel;
- }
-
- public boolean isRelationDirty() {
- return relationDirty;
- }
-
- public void setRelationLabel(String relationLabel) {
- this.relationLabel = relationLabel;
- }
-
- public void setRelationDirty(boolean relationDirty) {
- this.relationDirty = relationDirty;
- }
-
- public RelationLink getLink() {
- return link;
- }
-
- public void setLink(RelationLink link) {
- this.link = link;
- }
+/*******************************************************************************
+ * 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.hyper;
+
+import java.util.ArrayList;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.skynet.core.relation.RelationLink;
+import org.eclipse.swt.graphics.Image;
+
+public class HyperViewItem {
+
+ private final ArrayList<HyperViewItem> bottoms = new ArrayList<HyperViewItem>(); // bottom
+ private final ArrayList<HyperViewItem> tops = new ArrayList<HyperViewItem>(); // top
+ private final ArrayList<HyperViewItem> lefts = new ArrayList<HyperViewItem>(); // left
+ private final ArrayList<HyperViewItem> rights = new ArrayList<HyperViewItem>(); // right
+ private String guid;
+ private final String title;
+ private Image image;
+ private String toolTip;
+ private String relationToolTip;
+ private String relationLabel;
+ private boolean relationDirty = false;
+ private boolean highlight = false;
+ private boolean current = false;
+ private boolean show = true;
+ private RelationLink link;
+
+ public HyperViewItem(String title) {
+ this(title, null);
+ }
+
+ public HyperViewItem(String title, Image image) {
+ this.title = title;
+ this.image = image;
+ this.toolTip = title;
+ }
+
+ // lastModified
+ public void clearAllSearchItemLinks() {
+ bottoms.clear();
+ tops.clear();
+ lefts.clear();
+ rights.clear();
+ }
+
+ public Image getMarkImage() {
+ return null;
+ }
+
+ public void addBottom(HyperViewItem si) {
+ bottoms.add(si);
+ }
+
+ public void addTop(HyperViewItem si) {
+ tops.add(si);
+ }
+
+ public void removeTop(HyperViewItem si) {
+ if (tops.contains(si)) {
+ tops.remove(si);
+ }
+ }
+
+ public String getShortTitle() {
+ return title;
+ }
+
+ public void addLeft(HyperViewItem si) {
+ lefts.add(si);
+ }
+
+ public void addRight(HyperViewItem si) {
+ rights.add(si);
+ }
+
+ /**
+ * @return ArrayList of HyperViewItems
+ */
+ public ArrayList<HyperViewItem> getBottom() {
+ return bottoms;
+ }
+
+ /**
+ * @return ArrayList of HyperViewItems
+ */
+ public ArrayList<HyperViewItem> getTop() {
+ return tops;
+ }
+
+ /**
+ * @return ArrayList of HyperViewItems
+ */
+ public ArrayList<HyperViewItem> getLeft() {
+ return lefts;
+ }
+
+ /**
+ * @return ArrayList of HyperViewItems
+ */
+ public ArrayList<HyperViewItem> getRight() {
+ return rights;
+ }
+
+ @SuppressWarnings("unused")
+ public Image getImage() throws OseeCoreException {
+ return image;
+ }
+
+ public String getTitle() {
+ return title;
+ }
+
+ public String getToolTip() {
+ return toolTip;
+ }
+
+ public void setToolTip(String toolTip) {
+ this.toolTip = toolTip;
+ }
+
+ public boolean isShow() {
+ return show;
+ }
+
+ public void setShow(boolean show) {
+ this.show = show;
+ }
+
+ public void setImage(Image image) {
+ this.image = image;
+ }
+
+ public boolean isHighlight() {
+ return highlight;
+ }
+
+ public void setHighlight(boolean highlight) {
+ this.highlight = highlight;
+ }
+
+ public boolean isCurrent() {
+ return current;
+ }
+
+ public void setCurrent(boolean current) {
+ this.current = current;
+ }
+
+ public void setGuid(String guid) {
+ this.guid = guid;
+ }
+
+ public String getGuid() {
+ return guid;
+ }
+
+ public String getRelationToolTip() {
+ return relationToolTip;
+ }
+
+ public void setRelationToolTip(String relationToolTip) {
+ this.relationToolTip = relationToolTip;
+ }
+
+ public String getRelationLabel() {
+ return relationLabel;
+ }
+
+ public boolean isRelationDirty() {
+ return relationDirty;
+ }
+
+ public void setRelationLabel(String relationLabel) {
+ this.relationLabel = relationLabel;
+ }
+
+ public void setRelationDirty(boolean relationDirty) {
+ this.relationDirty = relationDirty;
+ }
+
+ public RelationLink getLink() {
+ return link;
+ }
+
+ public void setLink(RelationLink link) {
+ this.link = link;
+ }
} \ No newline at end of file
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/hyper/TasksActionHyperItem.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/hyper/TasksActionHyperItem.java
index a19a00a7a82..46c14bd37d3 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/hyper/TasksActionHyperItem.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/hyper/TasksActionHyperItem.java
@@ -1,54 +1,54 @@
-/*******************************************************************************
- * 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.hyper;
-
-import java.util.Collection;
-import org.eclipse.osee.ats.artifact.TaskArtifact;
-import org.eclipse.osee.ats.util.AtsArtifactTypes;
-import org.eclipse.osee.ats.world.WorldEditor;
-import org.eclipse.osee.ats.world.WorldEditorSimpleProvider;
-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.ArtifactTypeManager;
-import org.eclipse.osee.framework.ui.skynet.ArtifactImageManager;
-import org.eclipse.swt.graphics.Image;
-
-/**
- * @author Donald G. Dunne
- */
-public class TasksActionHyperItem extends ActionHyperItem {
-
- private final Collection<TaskArtifact> taskArtifacts;
-
- public TasksActionHyperItem(Collection<TaskArtifact> taskArtifacts) {
- super(new TasksHyperViewArtifact(taskArtifacts));
- this.taskArtifacts = taskArtifacts;
- setRelationToolTip("Task");
- }
-
- @Override
- public void handleDoubleClick(HyperViewItem hyperViewItem) {
- super.handleDoubleClick(hyperViewItem);
- WorldEditor.open(new WorldEditorSimpleProvider("Tasks", taskArtifacts));
- }
-
- @Override
- public void calculateCurrent(Artifact currentArtifact) {
- setCurrent(taskArtifacts.contains(currentArtifact));
- }
-
- @Override
- public Image getImage() throws OseeCoreException {
- return ArtifactImageManager.getImage(ArtifactTypeManager.getType(AtsArtifactTypes.Task));
-
- }
-
-}
+/*******************************************************************************
+ * 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.hyper;
+
+import java.util.Collection;
+import org.eclipse.osee.ats.artifact.TaskArtifact;
+import org.eclipse.osee.ats.util.AtsArtifactTypes;
+import org.eclipse.osee.ats.world.WorldEditor;
+import org.eclipse.osee.ats.world.WorldEditorSimpleProvider;
+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.ArtifactTypeManager;
+import org.eclipse.osee.framework.ui.skynet.ArtifactImageManager;
+import org.eclipse.swt.graphics.Image;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class TasksActionHyperItem extends ActionHyperItem {
+
+ private final Collection<TaskArtifact> taskArtifacts;
+
+ public TasksActionHyperItem(Collection<TaskArtifact> taskArtifacts) {
+ super(new TasksHyperViewArtifact(taskArtifacts));
+ this.taskArtifacts = taskArtifacts;
+ setRelationToolTip("Task");
+ }
+
+ @Override
+ public void handleDoubleClick(HyperViewItem hyperViewItem) {
+ super.handleDoubleClick(hyperViewItem);
+ WorldEditor.open(new WorldEditorSimpleProvider("Tasks", taskArtifacts));
+ }
+
+ @Override
+ public void calculateCurrent(Artifact currentArtifact) {
+ setCurrent(taskArtifacts.contains(currentArtifact));
+ }
+
+ @Override
+ public Image getImage() throws OseeCoreException {
+ return ArtifactImageManager.getImage(ArtifactTypeManager.getType(AtsArtifactTypes.Task));
+
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/hyper/TasksHyperViewArtifact.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/hyper/TasksHyperViewArtifact.java
index c8e28b0b36e..9159a008339 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/hyper/TasksHyperViewArtifact.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/hyper/TasksHyperViewArtifact.java
@@ -1,75 +1,75 @@
-/*******************************************************************************
- * 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.hyper;
-
-import java.util.Collection;
-import org.eclipse.osee.ats.artifact.TaskArtifact;
-import org.eclipse.osee.ats.util.AtsArtifactTypes;
-import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
-import org.eclipse.swt.graphics.Image;
-
-/**
- * @author Donald G. Dunne
- */
-public class TasksHyperViewArtifact implements IHyperArtifact {
-
- private final Collection<? extends TaskArtifact> taskArts;
-
- public TasksHyperViewArtifact(Collection<? extends TaskArtifact> taskArts) {
- this.taskArts = taskArts;
- }
-
- @Override
- public String getGuid() {
- return null;
- }
-
- @Override
- public Artifact getHyperArtifact() {
- return null;
- }
-
- @Override
- public String getHyperAssignee() {
- return null;
- }
-
- @Override
- public Image getHyperAssigneeImage() {
- return null;
- }
-
- @Override
- public String getHyperName() {
- return taskArts.size() + " Tasks";
- }
-
- @Override
- public String getHyperState() {
- return null;
- }
-
- @Override
- public String getHyperType() {
- return AtsArtifactTypes.Task.getName();
- }
-
- @Override
- public String getHyperTargetVersion() {
- return null;
- }
-
- @Override
- public boolean isDeleted() {
- return false;
- }
-
-}
+/*******************************************************************************
+ * 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.hyper;
+
+import java.util.Collection;
+import org.eclipse.osee.ats.artifact.TaskArtifact;
+import org.eclipse.osee.ats.util.AtsArtifactTypes;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.swt.graphics.Image;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class TasksHyperViewArtifact implements IHyperArtifact {
+
+ private final Collection<? extends TaskArtifact> taskArts;
+
+ public TasksHyperViewArtifact(Collection<? extends TaskArtifact> taskArts) {
+ this.taskArts = taskArts;
+ }
+
+ @Override
+ public String getGuid() {
+ return null;
+ }
+
+ @Override
+ public Artifact getHyperArtifact() {
+ return null;
+ }
+
+ @Override
+ public String getHyperAssignee() {
+ return null;
+ }
+
+ @Override
+ public Image getHyperAssigneeImage() {
+ return null;
+ }
+
+ @Override
+ public String getHyperName() {
+ return taskArts.size() + " Tasks";
+ }
+
+ @Override
+ public String getHyperState() {
+ return null;
+ }
+
+ @Override
+ public String getHyperType() {
+ return AtsArtifactTypes.Task.getName();
+ }
+
+ @Override
+ public String getHyperTargetVersion() {
+ return null;
+ }
+
+ @Override
+ public boolean isDeleted() {
+ return false;
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/internal/AtsActionReportingServiceImpl.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/internal/AtsActionReportingServiceImpl.java
index 71aed83216d..4650afa6253 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/internal/AtsActionReportingServiceImpl.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/internal/AtsActionReportingServiceImpl.java
@@ -1,25 +1,25 @@
-/*******************************************************************************
- * 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.internal;
-
-import org.eclipse.osee.ats.util.AtsUtil;
-import org.eclipse.osee.framework.plugin.core.IActionReportingService;
-
-/**
- * @author Roberto E. Escobar
- */
-public class AtsActionReportingServiceImpl implements IActionReportingService {
-
- @Override
- public void report(String actionableItem, String desc) throws Exception {
- AtsUtil.createATSAction(desc, actionableItem);
- }
-}
+/*******************************************************************************
+ * 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.internal;
+
+import org.eclipse.osee.ats.util.AtsUtil;
+import org.eclipse.osee.framework.plugin.core.IActionReportingService;
+
+/**
+ * @author Roberto E. Escobar
+ */
+public class AtsActionReportingServiceImpl implements IActionReportingService {
+
+ @Override
+ public void report(String actionableItem, String desc) throws Exception {
+ AtsUtil.createATSAction(desc, actionableItem);
+ }
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/internal/AtsPlugin.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/internal/AtsPlugin.java
index 51d81175e5f..ba03676e051 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/internal/AtsPlugin.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/internal/AtsPlugin.java
@@ -1,91 +1,91 @@
-/*******************************************************************************
- * 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.internal;
-
-import org.eclipse.osee.ats.config.AtsCacheManager;
-import org.eclipse.osee.ats.util.AtsNotifyUsers;
-import org.eclipse.osee.ats.util.AtsPreSaveCacheRemoteEventHandler;
-import org.eclipse.osee.framework.core.services.CmAccessControl;
-import org.eclipse.osee.framework.core.util.ServiceDependencyTracker;
-import org.eclipse.osee.framework.jdk.core.util.Lib;
-import org.eclipse.osee.framework.plugin.core.IActionReportingService;
-import org.eclipse.osee.framework.ui.plugin.OseeUiActivator;
-import org.eclipse.osee.framework.ui.skynet.ats.IOseeAtsService;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.ServiceRegistration;
-
-/**
- * The main plugin class to be used in the desktop.
- *
- * @author Donald G. Dunne
- */
-public class AtsPlugin extends OseeUiActivator {
- public static final String PLUGIN_ID = "org.eclipse.osee.ats";
-
- private static AtsPlugin pluginInstance;
-
- private ServiceRegistration service1;
- private ServiceRegistration service2;
-
- private ServiceDependencyTracker tracker;
- private AtsCmAccessControlRegHandler cmAccessHandler;
-
- public AtsPlugin() {
- super();
- AtsPlugin.pluginInstance = this;
- AtsPreSaveCacheRemoteEventHandler.start();
- AtsCacheManager.start();
- AtsNotifyUsers.getInstance();
- }
-
- @Override
- public void start(BundleContext context) throws Exception {
- super.start(context);
- service1 =
- context.registerService(IActionReportingService.class.getName(), new AtsActionReportingServiceImpl(), null);
- service2 = context.registerService(IOseeAtsService.class.getName(), new OseeAtsServiceImpl(), null);
-
- // TODO Uncomment to re-enable ATS CM Access providing
- // if (OseeInfo.isEnabled("atsAccessEnabled")) {
- cmAccessHandler = new AtsCmAccessControlRegHandler();
- // tracker = new ServiceDependencyTracker(context, cmAccessHandler);
- // tracker.open();
- // }
- }
-
- @Override
- public void stop(BundleContext context) throws Exception {
- if (tracker != null) {
- Lib.close(tracker);
- }
- if (service1 != null) {
- service1.unregister();
- }
- if (service2 != null) {
- service2.unregister();
- }
- super.stop(context);
- }
-
- @Override
- protected String getPluginName() {
- return PLUGIN_ID;
- }
-
- public static AtsPlugin getInstance() {
- return pluginInstance;
- }
-
- public CmAccessControl getCmService() {
- return cmAccessHandler.getCmService();
- }
-}
+/*******************************************************************************
+ * 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.internal;
+
+import org.eclipse.osee.ats.config.AtsCacheManager;
+import org.eclipse.osee.ats.util.AtsNotifyUsers;
+import org.eclipse.osee.ats.util.AtsPreSaveCacheRemoteEventHandler;
+import org.eclipse.osee.framework.core.services.CmAccessControl;
+import org.eclipse.osee.framework.core.util.ServiceDependencyTracker;
+import org.eclipse.osee.framework.jdk.core.util.Lib;
+import org.eclipse.osee.framework.plugin.core.IActionReportingService;
+import org.eclipse.osee.framework.ui.plugin.OseeUiActivator;
+import org.eclipse.osee.framework.ui.skynet.ats.IOseeAtsService;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceRegistration;
+
+/**
+ * The main plugin class to be used in the desktop.
+ *
+ * @author Donald G. Dunne
+ */
+public class AtsPlugin extends OseeUiActivator {
+ public static final String PLUGIN_ID = "org.eclipse.osee.ats";
+
+ private static AtsPlugin pluginInstance;
+
+ private ServiceRegistration service1;
+ private ServiceRegistration service2;
+
+ private ServiceDependencyTracker tracker;
+ private AtsCmAccessControlRegHandler cmAccessHandler;
+
+ public AtsPlugin() {
+ super();
+ AtsPlugin.pluginInstance = this;
+ AtsPreSaveCacheRemoteEventHandler.start();
+ AtsCacheManager.start();
+ AtsNotifyUsers.getInstance();
+ }
+
+ @Override
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ service1 =
+ context.registerService(IActionReportingService.class.getName(), new AtsActionReportingServiceImpl(), null);
+ service2 = context.registerService(IOseeAtsService.class.getName(), new OseeAtsServiceImpl(), null);
+
+ // TODO Uncomment to re-enable ATS CM Access providing
+ // if (OseeInfo.isEnabled("atsAccessEnabled")) {
+ cmAccessHandler = new AtsCmAccessControlRegHandler();
+ // tracker = new ServiceDependencyTracker(context, cmAccessHandler);
+ // tracker.open();
+ // }
+ }
+
+ @Override
+ public void stop(BundleContext context) throws Exception {
+ if (tracker != null) {
+ Lib.close(tracker);
+ }
+ if (service1 != null) {
+ service1.unregister();
+ }
+ if (service2 != null) {
+ service2.unregister();
+ }
+ super.stop(context);
+ }
+
+ @Override
+ protected String getPluginName() {
+ return PLUGIN_ID;
+ }
+
+ public static AtsPlugin getInstance() {
+ return pluginInstance;
+ }
+
+ public CmAccessControl getCmService() {
+ return cmAccessHandler.getCmService();
+ }
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/internal/OseeDslProviderUpdateListener.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/internal/OseeDslProviderUpdateListener.java
index 2e1543bfa09..2e71de8d25c 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/internal/OseeDslProviderUpdateListener.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/internal/OseeDslProviderUpdateListener.java
@@ -1,60 +1,60 @@
-/*******************************************************************************
- * 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.internal;
-
-import java.util.Arrays;
-import java.util.List;
-import java.util.logging.Level;
-import org.eclipse.osee.framework.core.dsl.integration.OseeDslProvider;
-import org.eclipse.osee.framework.core.enums.CoreArtifactTypes;
-import org.eclipse.osee.framework.core.enums.CoreBranches;
-import org.eclipse.osee.framework.core.exception.OseeCoreException;
-import org.eclipse.osee.framework.logging.OseeLog;
-import org.eclipse.osee.framework.skynet.core.event.Sender;
-import org.eclipse.osee.framework.skynet.core.event2.ArtifactEvent;
-import org.eclipse.osee.framework.skynet.core.event2.artifact.IArtifactEventListener;
-import org.eclipse.osee.framework.skynet.core.event2.filter.ArtifactTypeEventFilter;
-import org.eclipse.osee.framework.skynet.core.event2.filter.BranchGuidEventFilter;
-import org.eclipse.osee.framework.skynet.core.event2.filter.IEventFilter;
-
-/**
- * @author Roberto E. Escobar
- */
-public final class OseeDslProviderUpdateListener implements IArtifactEventListener {
-
- //@formatter:off
- private static final List<? extends IEventFilter> eventFilters =
- Arrays.asList(
- new ArtifactTypeEventFilter(CoreArtifactTypes.AccessControlModel),
- new BranchGuidEventFilter(CoreBranches.COMMON)
- );
- //@formatter:on
-
- private final OseeDslProvider dslProvider;
-
- public OseeDslProviderUpdateListener(OseeDslProvider dslProvider) {
- this.dslProvider = dslProvider;
- }
-
- @Override
- public List<? extends IEventFilter> getEventFilters() {
- return eventFilters;
- }
-
- @Override
- public void handleArtifactEvent(ArtifactEvent artifactEvent, Sender sender) {
- try {
- dslProvider.loadDsl();
- } catch (OseeCoreException ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
- }
+/*******************************************************************************
+ * 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.internal;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.logging.Level;
+import org.eclipse.osee.framework.core.dsl.integration.OseeDslProvider;
+import org.eclipse.osee.framework.core.enums.CoreArtifactTypes;
+import org.eclipse.osee.framework.core.enums.CoreBranches;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.logging.OseeLog;
+import org.eclipse.osee.framework.skynet.core.event.Sender;
+import org.eclipse.osee.framework.skynet.core.event2.ArtifactEvent;
+import org.eclipse.osee.framework.skynet.core.event2.artifact.IArtifactEventListener;
+import org.eclipse.osee.framework.skynet.core.event2.filter.ArtifactTypeEventFilter;
+import org.eclipse.osee.framework.skynet.core.event2.filter.BranchGuidEventFilter;
+import org.eclipse.osee.framework.skynet.core.event2.filter.IEventFilter;
+
+/**
+ * @author Roberto E. Escobar
+ */
+public final class OseeDslProviderUpdateListener implements IArtifactEventListener {
+
+ //@formatter:off
+ private static final List<? extends IEventFilter> eventFilters =
+ Arrays.asList(
+ new ArtifactTypeEventFilter(CoreArtifactTypes.AccessControlModel),
+ new BranchGuidEventFilter(CoreBranches.COMMON)
+ );
+ //@formatter:on
+
+ private final OseeDslProvider dslProvider;
+
+ public OseeDslProviderUpdateListener(OseeDslProvider dslProvider) {
+ this.dslProvider = dslProvider;
+ }
+
+ @Override
+ public List<? extends IEventFilter> getEventFilters() {
+ return eventFilters;
+ }
+
+ @Override
+ public void handleArtifactEvent(ArtifactEvent artifactEvent, Sender sender) {
+ try {
+ dslProvider.loadDsl();
+ } catch (OseeCoreException ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ }
+ }
} \ No newline at end of file
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/ArtifactImpactToActionSearchItem.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/ArtifactImpactToActionSearchItem.java
index f4a52ea6e4e..b6218a1d721 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/ArtifactImpactToActionSearchItem.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/ArtifactImpactToActionSearchItem.java
@@ -1,179 +1,182 @@
-/*******************************************************************************
- * 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 static org.eclipse.osee.framework.skynet.core.artifact.DeletionFlag.INCLUDE_DELETED;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Set;
-import java.util.logging.Level;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact;
-import org.eclipse.osee.ats.internal.AtsPlugin;
-import org.eclipse.osee.framework.core.data.SystemUser;
-import org.eclipse.osee.framework.core.exception.OseeCoreException;
-import org.eclipse.osee.framework.core.model.Branch;
-import org.eclipse.osee.framework.core.model.TransactionRecord;
-import org.eclipse.osee.framework.jdk.core.type.HashCollection;
-import org.eclipse.osee.framework.jdk.core.util.AHTML;
-import org.eclipse.osee.framework.logging.OseeLog;
-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.BranchManager;
-import org.eclipse.osee.framework.skynet.core.artifact.search.ArtifactQuery;
-import org.eclipse.osee.framework.skynet.core.revision.ChangeManager;
-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.FrameworkImage;
-import org.eclipse.osee.framework.ui.skynet.results.XResultData;
-import org.eclipse.osee.framework.ui.skynet.widgets.dialog.ArtifactCheckTreeDialog;
-import org.eclipse.osee.framework.ui.skynet.widgets.dialog.EntryDialogWithBranchSelect;
-import org.eclipse.osee.framework.ui.swt.Displays;
-
-/**
- * @author Donald G. Dunne
- */
-public class ArtifactImpactToActionSearchItem extends XNavigateItemAction {
-
- private static String TITLE = "Search Artifact Impact to Action";
-
- /**
- * @param parent
- */
- public ArtifactImpactToActionSearchItem(XNavigateItem parent) {
- super(parent, TITLE, FrameworkImage.FLASHLIGHT);
- }
-
- @Override
- public void run(TableLoadOption... tableLoadOptions) {
- EntryDialogWithBranchSelect ed =
- new EntryDialogWithBranchSelect(getName(), "Enter Artifact Name (or string) to search (no wildcards)");
- if (ed.open() == 0) {
- ActionToArtifactImpactJob job = new ActionToArtifactImpactJob(ed.getEntry(), ed.getBranch());
- job.setUser(true);
- job.setPriority(Job.LONG);
- job.schedule();
- }
- }
-
- public static class ActionToArtifactImpactJob extends Job {
- private IProgressMonitor monitor;
- private final String artifactName;
- private final XResultData rd = new XResultData();
- private final Branch branch;
-
- public ActionToArtifactImpactJob(String artifactName, Branch branch) {
- super("Searching \"" + artifactName + "\"...");
- this.artifactName = artifactName;
- this.branch = branch;
- }
-
- @Override
- public IStatus run(IProgressMonitor monitor) {
- this.monitor = monitor;
- try {
- getMatrixItems();
- rd.report(TITLE + " - \"" + artifactName + "\"");
- return Status.OK_STATUS;
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- return new Status(IStatus.ERROR, AtsPlugin.PLUGIN_ID, -1, ex.getMessage(), ex);
- }
- }
-
- private void getMatrixItems() throws OseeCoreException {
- final Collection<Artifact> srchArts =
- ArtifactQuery.getArtifactListFromName("%" + artifactName + "%", branch, INCLUDE_DELETED);
- final Set<Artifact> processArts = new HashSet<Artifact>();
- if (srchArts.isEmpty()) {
- return;
- }
- if (srchArts.size() > 1) {
- Displays.pendInDisplayThread(new Runnable() {
- @Override
- public void run() {
- ArtifactCheckTreeDialog dialog = new ArtifactCheckTreeDialog(srchArts);
- dialog.setTitle(TITLE);
- dialog.setMessage("Select Artifacts to Search");
- if (dialog.open() == 0) {
- processArts.addAll(dialog.getSelection());
- }
- }
- });
-
- } else {
- processArts.addAll(srchArts);
- }
- int x = 1;
- rd.log("Artifact Impact to Action for artifact(s) on branch \"" + branch.getShortName() + "\"");
-
- HashCollection<Artifact, TransactionRecord> transactionMap =
- ChangeManager.getModifingTransactions(processArts);
- HashCollection<Artifact, Branch> branchMap = ChangeManager.getModifingBranches(processArts);
- for (Artifact srchArt : processArts) {
- String str = String.format("Processing %d/%d - %s ", x++, processArts.size(), srchArt.getName());
- System.out.println(str);
- rd.log("\n" + AHTML.bold(srchArt.getName()));
- monitor.subTask(str);
- int y = 1;
- rd.addRaw(AHTML.beginMultiColumnTable(95, 1));
- rd.addRaw(AHTML.addHeaderRowMultiColumnTable(new String[] {"Type", "Status", "HRID", "Title"}));
-
- // Check for changes on working branches
- boolean workingBranchesFound = false;
-
- Collection<Branch> branches = branchMap.getValues(srchArt);
- if (branches != null) {
- for (Branch branch : branches) {
- Artifact assocArt = BranchManager.getAssociatedArtifact(branch);
- if (assocArt != null && !assocArt.equals(UserManager.getUser(SystemUser.OseeSystem))) {
- rd.addRaw(AHTML.addRowMultiColumnTable(new String[] {assocArt.getArtifactTypeName(), "Working",
- XResultData.getHyperlink(assocArt), assocArt.getName()}));
- } else {
- rd.addRaw(AHTML.addRowMultiColumnTable(new String[] {"Branch", "", branch.getName()}));
- }
- workingBranchesFound = true;
- }
- }
- if (!workingBranchesFound) {
- rd.addRaw(AHTML.addRowSpanMultiColumnTable("No Impacting Working Branches Found", 3));
- }
- // Add committed changes
- boolean committedChanges = false;
- Collection<TransactionRecord> transactions = transactionMap.getValues(srchArt);
- if (transactions != null) {
- for (TransactionRecord transactionId : transactions) {
- String transStr = String.format("Tranaction %d/%d", y++, transactions.size());
- System.out.println(transStr);
- monitor.subTask(transStr);
- if (transactionId.getCommit() > 0) {
- Artifact assocArt =
- ArtifactQuery.getArtifactFromId(transactionId.getCommit(), BranchManager.getCommonBranch());
- if (assocArt instanceof TeamWorkFlowArtifact) {
- rd.addRaw(AHTML.addRowMultiColumnTable(new String[] {assocArt.getArtifactTypeName(),
- "Committed", assocArt.getHumanReadableId(), assocArt.getName()}));
- committedChanges = true;
- }
- }
- }
- }
- if (!committedChanges) {
- rd.addRaw(AHTML.addRowSpanMultiColumnTable("No Impacting Actions Found", 3));
- }
- rd.addRaw(AHTML.endMultiColumnTable());
- }
- }
- }
-}
+/*******************************************************************************
+ * 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 static org.eclipse.osee.framework.skynet.core.artifact.DeletionFlag.INCLUDE_DELETED;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
+import java.util.logging.Level;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact;
+import org.eclipse.osee.ats.internal.AtsPlugin;
+import org.eclipse.osee.framework.core.data.SystemUser;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.core.model.Branch;
+import org.eclipse.osee.framework.core.model.TransactionRecord;
+import org.eclipse.osee.framework.jdk.core.type.HashCollection;
+import org.eclipse.osee.framework.jdk.core.util.AHTML;
+import org.eclipse.osee.framework.logging.OseeLog;
+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.BranchManager;
+import org.eclipse.osee.framework.skynet.core.artifact.search.ArtifactQuery;
+import org.eclipse.osee.framework.skynet.core.revision.ChangeManager;
+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.FrameworkImage;
+import org.eclipse.osee.framework.ui.skynet.results.XResultData;
+import org.eclipse.osee.framework.ui.skynet.widgets.dialog.ArtifactCheckTreeDialog;
+import org.eclipse.osee.framework.ui.skynet.widgets.dialog.EntryDialogWithBranchSelect;
+import org.eclipse.osee.framework.ui.swt.Displays;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class ArtifactImpactToActionSearchItem extends XNavigateItemAction {
+
+ private static String TITLE = "Search Artifact Impact to Action";
+
+ public ArtifactImpactToActionSearchItem(XNavigateItem parent) {
+ super(parent, TITLE, FrameworkImage.FLASHLIGHT);
+ }
+
+ @Override
+ public void run(TableLoadOption... tableLoadOptions) {
+ EntryDialogWithBranchSelect ed =
+ new EntryDialogWithBranchSelect(getName(), "Enter Artifact Name (or string) to search (no wildcards)");
+ if (ed.open() == 0) {
+ ActionToArtifactImpactJob job = new ActionToArtifactImpactJob(ed.getEntry(), ed.getBranch());
+ job.setUser(true);
+ job.setPriority(Job.LONG);
+ job.schedule();
+ }
+ }
+
+ public static class ActionToArtifactImpactJob extends Job {
+ private IProgressMonitor monitor;
+ private final String artifactName;
+ private final XResultData rd = new XResultData();
+ private final Branch branch;
+
+ public ActionToArtifactImpactJob(String artifactName, Branch branch) {
+ super("Searching \"" + artifactName + "\"...");
+ this.artifactName = artifactName;
+ this.branch = branch;
+ }
+
+ @Override
+ public IStatus run(IProgressMonitor monitor) {
+ this.monitor = monitor;
+ try {
+ getMatrixItems();
+ rd.report(TITLE + " - \"" + artifactName + "\"");
+ return Status.OK_STATUS;
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ return new Status(IStatus.ERROR, AtsPlugin.PLUGIN_ID, -1, ex.getMessage(), ex);
+ }
+ }
+
+ private void getMatrixItems() throws OseeCoreException {
+ final Collection<Artifact> srchArts =
+ ArtifactQuery.getArtifactListFromName("%" + artifactName + "%", branch, INCLUDE_DELETED);
+ final Set<Artifact> processArts = new HashSet<Artifact>();
+ if (srchArts.isEmpty()) {
+ return;
+ }
+ if (srchArts.size() > 1) {
+ Displays.pendInDisplayThread(new Runnable() {
+ @Override
+ public void run() {
+ ArtifactCheckTreeDialog dialog = new ArtifactCheckTreeDialog(srchArts);
+ dialog.setTitle(TITLE);
+ dialog.setMessage("Select Artifacts to Search");
+ if (dialog.open() == 0) {
+ processArts.addAll(dialog.getSelection());
+ }
+ }
+ });
+
+ } else {
+ processArts.addAll(srchArts);
+ }
+ int x = 1;
+ rd.log("Artifact Impact to Action for artifact(s) on branch \"" + branch.getShortName() + "\"");
+
+ HashCollection<Artifact, TransactionRecord> transactionMap =
+ ChangeManager.getModifingTransactions(processArts);
+ HashCollection<Artifact, Branch> branchMap = ChangeManager.getModifingBranches(processArts);
+ for (Artifact srchArt : processArts) {
+ String str = String.format("Processing %d/%d - %s ", x++, processArts.size(), srchArt.getName());
+ System.out.println(str);
+ rd.log("\n" + AHTML.bold(srchArt.getName()));
+ monitor.subTask(str);
+ int y = 1;
+ rd.addRaw(AHTML.beginMultiColumnTable(95, 1));
+ rd.addRaw(AHTML.addHeaderRowMultiColumnTable(new String[] {"Type", "Status", "HRID", "Title"}));
+
+ // Check for changes on working branches
+ boolean workingBranchesFound = false;
+
+ Collection<Branch> branches = branchMap.getValues(srchArt);
+ if (branches != null) {
+ for (Branch branch : branches) {
+ Artifact assocArt = BranchManager.getAssociatedArtifact(branch);
+ if (assocArt != null && !assocArt.equals(UserManager.getUser(SystemUser.OseeSystem))) {
+ rd.addRaw(AHTML.addRowMultiColumnTable(new String[] {
+ assocArt.getArtifactTypeName(),
+ "Working",
+ XResultData.getHyperlink(assocArt),
+ assocArt.getName()}));
+ } else {
+ rd.addRaw(AHTML.addRowMultiColumnTable(new String[] {"Branch", "", branch.getName()}));
+ }
+ workingBranchesFound = true;
+ }
+ }
+ if (!workingBranchesFound) {
+ rd.addRaw(AHTML.addRowSpanMultiColumnTable("No Impacting Working Branches Found", 3));
+ }
+ // Add committed changes
+ boolean committedChanges = false;
+ Collection<TransactionRecord> transactions = transactionMap.getValues(srchArt);
+ if (transactions != null) {
+ for (TransactionRecord transactionId : transactions) {
+ String transStr = String.format("Tranaction %d/%d", y++, transactions.size());
+ System.out.println(transStr);
+ monitor.subTask(transStr);
+ if (transactionId.getCommit() > 0) {
+ Artifact assocArt =
+ ArtifactQuery.getArtifactFromId(transactionId.getCommit(), BranchManager.getCommonBranch());
+ if (assocArt instanceof TeamWorkFlowArtifact) {
+ rd.addRaw(AHTML.addRowMultiColumnTable(new String[] {
+ assocArt.getArtifactTypeName(),
+ "Committed",
+ assocArt.getHumanReadableId(),
+ assocArt.getName()}));
+ committedChanges = true;
+ }
+ }
+ }
+ }
+ if (!committedChanges) {
+ rd.addRaw(AHTML.addRowSpanMultiColumnTable("No Impacting Actions Found", 3));
+ }
+ rd.addRaw(AHTML.endMultiColumnTable());
+ }
+ }
+ }
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/AtsNavigateComposite.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/AtsNavigateComposite.java
index ee6d1e7ba4f..66c00f866a9 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/AtsNavigateComposite.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/AtsNavigateComposite.java
@@ -1,69 +1,69 @@
-/*******************************************************************************
- * 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.jface.viewers.IStructuredSelection;
-import org.eclipse.osee.ats.util.AtsUtil;
-import org.eclipse.osee.framework.core.exception.OseeCoreException;
-import org.eclipse.osee.framework.ui.plugin.OseeUiActivator;
-import org.eclipse.osee.framework.ui.plugin.util.Result;
-import org.eclipse.osee.framework.ui.plugin.xnavigate.XNavigateComposite;
-import org.eclipse.osee.framework.ui.plugin.xnavigate.XNavigateItem;
-import org.eclipse.osee.framework.ui.plugin.xnavigate.XNavigateViewItems;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Label;
-
-/**
- * @author Donald G. Dunne
- */
-public class AtsNavigateComposite extends XNavigateComposite {
-
- public AtsNavigateComposite(XNavigateViewItems navigateViewItems, Composite parent, int style) {
- super(navigateViewItems, parent, style);
- Result result = OseeUiActivator.areOSEEServicesAvailable();
- if (result.isFalse()) {
- new Label(parent, SWT.NONE).setText(result.getText());
- return;
- }
- }
-
- @Override
- protected void handleDoubleClick() throws OseeCoreException {
- IStructuredSelection sel = (IStructuredSelection) filteredTree.getViewer().getSelection();
- if (!sel.iterator().hasNext()) {
- return;
- }
- XNavigateItem item = (XNavigateItem) sel.iterator().next();
- handleDoubleClick(item);
- }
-
- @Override
- protected void handleDoubleClick(XNavigateItem item, TableLoadOption... tableLoadOptions) throws OseeCoreException {
- super.disposeTooltip();
- if (item.getChildren().size() > 0) {
- filteredTree.getViewer().setExpandedState(item, true);
- }
- AtsXNavigateItemLauncher.handleDoubleClick(item, tableLoadOptions);
- }
-
- @Override
- public void refresh() {
- super.refresh();
- if (AtsUtil.isAtsAdmin()) {
- for (XNavigateItem item : getItems()) {
- if (item.getName().equals("Admin")) {
- filteredTree.getViewer().expandToLevel(item, 1);
- }
- }
- }
- }
-}
+/*******************************************************************************
+ * 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.jface.viewers.IStructuredSelection;
+import org.eclipse.osee.ats.util.AtsUtil;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.ui.plugin.OseeUiActivator;
+import org.eclipse.osee.framework.ui.plugin.util.Result;
+import org.eclipse.osee.framework.ui.plugin.xnavigate.XNavigateComposite;
+import org.eclipse.osee.framework.ui.plugin.xnavigate.XNavigateItem;
+import org.eclipse.osee.framework.ui.plugin.xnavigate.XNavigateViewItems;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class AtsNavigateComposite extends XNavigateComposite {
+
+ public AtsNavigateComposite(XNavigateViewItems navigateViewItems, Composite parent, int style) {
+ super(navigateViewItems, parent, style);
+ Result result = OseeUiActivator.areOSEEServicesAvailable();
+ if (result.isFalse()) {
+ new Label(parent, SWT.NONE).setText(result.getText());
+ return;
+ }
+ }
+
+ @Override
+ protected void handleDoubleClick() throws OseeCoreException {
+ IStructuredSelection sel = (IStructuredSelection) filteredTree.getViewer().getSelection();
+ if (!sel.iterator().hasNext()) {
+ return;
+ }
+ XNavigateItem item = (XNavigateItem) sel.iterator().next();
+ handleDoubleClick(item);
+ }
+
+ @Override
+ protected void handleDoubleClick(XNavigateItem item, TableLoadOption... tableLoadOptions) throws OseeCoreException {
+ super.disposeTooltip();
+ if (item.getChildren().size() > 0) {
+ filteredTree.getViewer().setExpandedState(item, true);
+ }
+ AtsXNavigateItemLauncher.handleDoubleClick(item, tableLoadOptions);
+ }
+
+ @Override
+ public void refresh() {
+ super.refresh();
+ if (AtsUtil.isAtsAdmin()) {
+ for (XNavigateItem item : getItems()) {
+ if (item.getName().equals("Admin")) {
+ filteredTree.getViewer().expandToLevel(item, 1);
+ }
+ }
+ }
+ }
+}
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 ffe80fd508e..3da099f744d 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
@@ -1,367 +1,367 @@
-/*******************************************************************************
- * 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 java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.logging.Level;
-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.AtsImage;
-import org.eclipse.osee.ats.actions.NewAction;
-import org.eclipse.osee.ats.artifact.TeamDefinitionArtifact;
-import org.eclipse.osee.ats.health.ValidateAtsDatabase;
-import org.eclipse.osee.ats.health.ValidateChangeReportByHrid;
-import org.eclipse.osee.ats.health.ValidateChangeReports;
-import org.eclipse.osee.ats.internal.AtsPlugin;
-import org.eclipse.osee.ats.navigate.EmailTeamsItem.MemberType;
-import org.eclipse.osee.ats.notify.AtsNotificationNavigateItem;
-import org.eclipse.osee.ats.util.AtsArtifactTypes;
-import org.eclipse.osee.ats.util.AtsEditor;
-import org.eclipse.osee.ats.util.AtsUtil;
-import org.eclipse.osee.ats.util.DoesNotWorkItemAts;
-import org.eclipse.osee.ats.world.search.ActionableItemWorldSearchItem;
-import org.eclipse.osee.ats.world.search.ArtifactTypeSearchItem;
-import org.eclipse.osee.ats.world.search.ArtifactTypeWithInheritenceSearchItem;
-import org.eclipse.osee.ats.world.search.GoalSearchItem;
-import org.eclipse.osee.ats.world.search.GroupWorldSearchItem;
-import org.eclipse.osee.ats.world.search.MultipleHridSearchData;
-import org.eclipse.osee.ats.world.search.MultipleHridSearchOperation;
-import org.eclipse.osee.ats.world.search.MyFavoritesGoalsSearchItem;
-import org.eclipse.osee.ats.world.search.MyFavoritesSearchItem;
-import org.eclipse.osee.ats.world.search.MyGoalWorkflowItem;
-import org.eclipse.osee.ats.world.search.MyGoalWorkflowItem.GoalSearchState;
-import org.eclipse.osee.ats.world.search.MyReviewWorkflowItem;
-import org.eclipse.osee.ats.world.search.MyReviewWorkflowItem.ReviewState;
-import org.eclipse.osee.ats.world.search.MySubscribedSearchItem;
-import org.eclipse.osee.ats.world.search.MyWorldSearchItem;
-import org.eclipse.osee.ats.world.search.NextVersionSearchItem;
-import org.eclipse.osee.ats.world.search.ShowOpenWorkflowsByArtifactType;
-import org.eclipse.osee.ats.world.search.StateWorldSearchItem;
-import org.eclipse.osee.ats.world.search.TaskSearchWorldSearchItem;
-import org.eclipse.osee.ats.world.search.UserCommunitySearchItem;
-import org.eclipse.osee.ats.world.search.UserRelatedToAtsObjectSearch;
-import org.eclipse.osee.ats.world.search.VersionTargetedForTeamSearchItem;
-import org.eclipse.osee.ats.world.search.WorldSearchItem.LoadView;
-import org.eclipse.osee.framework.core.exception.OseeCoreException;
-import org.eclipse.osee.framework.core.model.Branch;
-import org.eclipse.osee.framework.core.operation.IOperation;
-import org.eclipse.osee.framework.logging.OseeLevel;
-import org.eclipse.osee.framework.logging.OseeLog;
-import org.eclipse.osee.framework.skynet.core.User;
-import org.eclipse.osee.framework.skynet.core.UserManager;
-import org.eclipse.osee.framework.ui.plugin.OseeUiActivator;
-import org.eclipse.osee.framework.ui.plugin.PluginUiImage;
-import org.eclipse.osee.framework.ui.plugin.xnavigate.IOperationFactory;
-import org.eclipse.osee.framework.ui.plugin.xnavigate.XNavigateContributionManager;
-import org.eclipse.osee.framework.ui.plugin.xnavigate.XNavigateExtensionPointData;
-import org.eclipse.osee.framework.ui.plugin.xnavigate.XNavigateItem;
-import org.eclipse.osee.framework.ui.plugin.xnavigate.XNavigateItemAction;
-import org.eclipse.osee.framework.ui.plugin.xnavigate.XNavigateItemFolder;
-import org.eclipse.osee.framework.ui.plugin.xnavigate.XNavigateItemOperation;
-import org.eclipse.osee.framework.ui.plugin.xnavigate.XNavigateViewItems;
-import org.eclipse.osee.framework.ui.skynet.FrameworkImage;
-import org.eclipse.osee.framework.ui.skynet.action.CompareTwoStringsAction;
-import org.eclipse.osee.framework.ui.skynet.artifact.MassEditDirtyArtifactOperation;
-import org.eclipse.osee.framework.ui.skynet.blam.BlamContributionManager;
-import org.eclipse.osee.framework.ui.skynet.results.example.ResultsEditorExample;
-import org.eclipse.osee.framework.ui.skynet.results.example.XResultDataExample;
-import org.eclipse.osee.framework.ui.skynet.results.example.XViewerExample;
-import org.eclipse.osee.framework.ui.skynet.util.email.EmailUserGroups;
-import org.eclipse.osee.framework.ui.skynet.widgets.dialog.EntryCheckDialog;
-import org.osgi.framework.Bundle;
-
-/**
- * @author Donald G. Dunne
- */
-public class AtsNavigateViewItems extends XNavigateViewItems {
- private static AtsNavigateViewItems navigateItems = new AtsNavigateViewItems();
- private List<XNavigateItem> items;
-
- public AtsNavigateViewItems() {
- super();
- }
-
- public static AtsNavigateViewItems getInstance() {
- return navigateItems;
- }
-
- @Override
- public List<XNavigateItem> getSearchNavigateItems() {
- if (items == null) {
- items = getItems();
- }
- return items;
- }
-
- private List<XNavigateItem> getItems() {
- List<XNavigateItem> items = new ArrayList<XNavigateItem>();
-
- if (OseeUiActivator.areOSEEServicesAvailable().isFalse()) {
- return items;
- }
-
- try {
- User user = UserManager.getUser();
-
- items.add(new SearchNavigateItem(null, new MyWorldSearchItem("My World", user)));
- items.add(new SearchNavigateItem(null, new MyFavoritesSearchItem("My Favorites", user)));
- items.add(new SearchNavigateItem(null, new MySubscribedSearchItem("My Subscribed", user)));
- items.add(new SearchNavigateItem(null, new MyGoalWorkflowItem("My Goals", user, GoalSearchState.InWork)));
- items.add(new SearchNavigateItem(null, new MyReviewWorkflowItem("My Reviews", user, ReviewState.InWork)));
- items.add(new VisitedItems(null));
- items.add(new XNavigateItemAction(null, new NewAction(), AtsImage.NEW_ACTION));
- items.add(new SearchNavigateItem(null, new MyWorldSearchItem("User's World")));
-
- items.add(new SearchNavigateItem(null, new UserSearchWorkflowSearchItem()));
- items.add(new SearchNavigateItem(null, new TaskSearchWorldSearchItem()));
- items.add(new SearchNavigateItem(null, new GroupWorldSearchItem((Branch) null)));
- items.add(new SearchNavigateItem(null, new TeamWorkflowSearchWorkflowSearchItem()));
- items.add(new SearchNavigateItem(null, new UserCommunitySearchItem()));
- items.add(new SearchNavigateItem(null, new ActionableItemWorldSearchItem(null, "Actionable Item Search",
- false, false, false)));
-
- createGoalsSection(items);
- createVersionsSection(items);
- addExtensionPointItems(items);
- createReviewsSection(items);
-
- XNavigateItem stateItems = new XNavigateItem(null, "States", AtsImage.STATE);
- new SearchNavigateItem(stateItems, new StateWorldSearchItem());
- new SearchNavigateItem(stateItems, new StateWorldSearchItem("Search for Authorize Actions", "Authorize"));
- items.add(stateItems);
-
- // Search Items
- items.add(new XNavigateItemOperation(null, FrameworkImage.BRANCH_CHANGE, "Open Change Report(s) by ID(s)",
- new MultipleHridSearchOperationFactory("Open Change Report(s) by ID(s)", AtsEditor.ChangeReport)));
- items.add(new XNavigateItemOperation(null, AtsImage.OPEN_BY_ID, "Search by ID(s) - Open World Editor",
- new MultipleHridSearchOperationFactory("Search by ID(s) - Open World Editor", AtsEditor.WorldEditor)));
- items.add(new XNavigateItemOperation(null, AtsImage.WORKFLOW_CONFIG, "Search by ID(s) - Open Workflow Editor",
- new MultipleHridSearchOperationFactory("Search by ID(s) - Open Workflow Editor", AtsEditor.WorkflowEditor)));
- items.add(new XNavigateItemOperation(null, AtsImage.GLOBE, "Quick Search", new IOperationFactory() {
-
- @Override
- public IOperation createOperation() {
- EntryCheckDialog dialog =
- new EntryCheckDialog("Search by Strings", "Enter search strings",
- "Include Completed/Cancelled Workflows");
- if (dialog.open() == 0) {
- return new AtsQuickSearchOperation(new AtsQuickSearchData("Search by Strings", dialog.getEntry(),
- dialog.isChecked()));
- }
- return null;
- }
- }));
-
- items.add(new ArtifactImpactToActionSearchItem(null));
-
- XNavigateItem reportItems = new XNavigateItem(null, "Reports", AtsImage.REPORT);
- new FirstTimeQualityMetricReportItem(reportItems);
- new XNavigateItem(reportItems, "ATS World Reports - Input from Actions in ATS World", AtsImage.REPORT);
- new BarChartExample(reportItems);
- new ResultsEditorExample(reportItems);
- new CompareEditorExample(reportItems);
- new XViewerExample(reportItems);
- new XResultDataExample(reportItems);
- // new ExtendedStatusReportItem(atsReportItems, "ATS World Extended Status Report");
-
- XNavigateItem emailItems = new XNavigateItem(null, "Email & Notifications", FrameworkImage.EMAIL);
- new EmailTeamsItem(emailItems, null, MemberType.Both);
- new EmailTeamsItem(emailItems, null, MemberType.Leads);
- new EmailTeamsItem(emailItems, null, MemberType.Members);
- new EmailUserGroups(emailItems);
- new SubscribeByActionableItem(emailItems);
- new SubscribeByTeamDefinition(emailItems);
- items.add(emailItems);
-
- items.add(reportItems);
-
- XNavigateItem utilItems = new XNavigateItem(null, "Util", FrameworkImage.GEAR);
- new ImportActionsViaSpreadsheet(utilItems);
- new XNavigateItemAction(utilItems, new CompareTwoStringsAction(), FrameworkImage.EDIT);
- new GenerateGuid(utilItems);
- new XNavigateItemOperation(utilItems, FrameworkImage.GEAR, MassEditDirtyArtifactOperation.NAME,
- new MassEditDirtyArtifactOperation());
-
- items.add(utilItems);
-
- BlamContributionManager.addBlamOperationsToNavigator(items);
-
- if (AtsUtil.isAtsAdmin()) {
- XNavigateItem adminItems = new XNavigateItem(null, "Admin", PluginUiImage.ADMIN);
-
- new AtsNotificationNavigateItem(adminItems);
- new AtsNotificationNavigateItem(adminItems, true);
- new UpdateAtsWorkItemDefinitions(adminItems);
- new DisplayCurrentOseeEventListeners(adminItems);
- new AtsRemoteEventTestItem(adminItems);
-
- new SearchNavigateItem(adminItems, new UserRelatedToAtsObjectSearch(
- "User's All Related Objects - Admin Only", null, false, LoadView.WorldEditor));
- new SearchNavigateItem(adminItems, new UserRelatedToAtsObjectSearch(
- "User's All Active Related Objects - Admin Only", null, true, LoadView.WorldEditor));
-
- new SearchNavigateItem(adminItems, new ArtifactTypeSearchItem("Show all Actions", AtsArtifactTypes.Action));
- new SearchNavigateItem(adminItems, new ArtifactTypeSearchItem("Show all Decision Review",
- AtsArtifactTypes.DecisionReview));
- new SearchNavigateItem(adminItems, new ArtifactTypeSearchItem("Show all PeerToPeer Review",
- AtsArtifactTypes.PeerToPeerReview));
- new SearchNavigateItem(adminItems, new ArtifactTypeWithInheritenceSearchItem("Show all Team Workflows",
- AtsArtifactTypes.TeamWorkflow));
- new SearchNavigateItem(adminItems, new ArtifactTypeSearchItem("Show all Tasks", AtsArtifactTypes.Task));
- new CreateGoalTestArtifacts(adminItems);
-
- new DoesNotWorkItemAts(adminItems);
-
- XNavigateItem healthItems = new XNavigateItemFolder(adminItems, "Health");
- new ValidateAtsDatabase(healthItems);
- new ValidateChangeReports(healthItems);
- new ValidateChangeReportByHrid(healthItems);
-
- // new ActionNavigateItem(adminItems, new XViewerViewAction());
- // new ActionNavigateItem(adminItems, new OpenEditorAction());
- // new CreateBugFixesItem(adminItems);
-
- XNavigateItem extra = new XNavigateItemFolder(adminItems, "Other");
- Set<XNavigateExtensionPointData> extraItems =
- XNavigateContributionManager.getNavigateItems(NavigateView.VIEW_ID);
- for (XNavigateExtensionPointData extraItem : extraItems) {
- for (XNavigateItem navigateItem : extraItem.getNavigateItems()) {
- extra.addChild(navigateItem);
- }
- }
-
- items.add(adminItems);
- }
- } catch (OseeCoreException ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- return items;
- }
-
- return items;
- }
-
- public void createReviewsSection(List<XNavigateItem> items) {
- try {
- XNavigateItem reviewItem = new XNavigateItem(null, "Reviews", AtsImage.REVIEW);
- new SearchNavigateItem(reviewItem, new ShowOpenWorkflowsByArtifactType(
- "Show Open " + AtsArtifactTypes.DecisionReview.getName() + "s", AtsArtifactTypes.DecisionReview, false,
- false, AtsImage.REVIEW));
- new SearchNavigateItem(reviewItem, new ShowOpenWorkflowsByArtifactType(
- "Show Workflows Waiting " + AtsArtifactTypes.DecisionReview.getName() + "s",
- AtsArtifactTypes.DecisionReview, false, true, AtsImage.REVIEW));
- new SearchNavigateItem(reviewItem, new ShowOpenWorkflowsByArtifactType(
- "Show Open " + AtsArtifactTypes.PeerToPeerReview.getName() + "s", AtsArtifactTypes.PeerToPeerReview, false,
- false, AtsImage.REVIEW));
- new SearchNavigateItem(reviewItem, new ShowOpenWorkflowsByArtifactType(
- "Show Workflows Waiting " + AtsArtifactTypes.PeerToPeerReview.getName() + "s",
- AtsArtifactTypes.PeerToPeerReview, false, true, AtsImage.REVIEW));
- new NewPeerToPeerReviewItem(reviewItem);
- new GenerateReviewParticipationReport(reviewItem);
- items.add(reviewItem);
- } catch (OseeCoreException ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, "Can't create Goals section");
- }
- }
-
- public void createVersionsSection(List<XNavigateItem> items) {
- try {
- XNavigateItem releaseItems = new XNavigateItem(null, "Versions", FrameworkImage.VERSION);
- new MassEditTeamVersionItem("Team Versions", releaseItems, (TeamDefinitionArtifact) null,
- FrameworkImage.VERSION);
- new SearchNavigateItem(releaseItems, new VersionTargetedForTeamSearchItem(null, null, false,
- LoadView.WorldEditor));
- new SearchNavigateItem(releaseItems, new NextVersionSearchItem(null, LoadView.WorldEditor));
- new ReleaseVersionItem(releaseItems, null);
- new CreateNewVersionItem(releaseItems, null);
- new GenerateVersionReportItem(releaseItems);
- new GenerateFullVersionReportItem(releaseItems);
- items.add(releaseItems);
- } catch (OseeCoreException ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, "Can't create Goals section");
- }
- }
-
- public void createGoalsSection(List<XNavigateItem> items) {
- try {
- XNavigateItem goalItem = new XNavigateItem(null, "Goals", AtsImage.GOAL);
- new SearchNavigateItem(goalItem, new GoalSearchItem("InWork Goals", new ArrayList<TeamDefinitionArtifact>(),
- false, null));
- new SearchNavigateItem(goalItem, new GoalSearchWorkflowSearchItem());
- new SearchNavigateItem(goalItem, new MyFavoritesGoalsSearchItem("Favorites", UserManager.getUser()));
- items.add(goalItem);
- } catch (OseeCoreException ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, "Can't create Goals section");
- }
- }
-
- public void addExtensionPointItems(List<XNavigateItem> items) {
- IExtensionPoint point = Platform.getExtensionRegistry().getExtensionPoint("org.eclipse.osee.ats.AtsNavigateItem");
- if (point == null) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, "Can't access AtsNavigateItem extension point");
- return;
- }
- IExtension[] extensions = point.getExtensions();
- Map<String, XNavigateItem> nameToNavItem = new HashMap<String, XNavigateItem>();
- for (IExtension extension : extensions) {
- IConfigurationElement[] elements = extension.getConfigurationElements();
- String classname = null;
- String bundleName = null;
- for (IConfigurationElement el : elements) {
- if (el.getName().equals("AtsNavigateItem")) {
- classname = el.getAttribute("classname");
- bundleName = el.getContributor().getName();
- }
- }
- if (classname != null && bundleName != null) {
- Bundle bundle = Platform.getBundle(bundleName);
- try {
- Object obj = bundle.loadClass(classname).newInstance();
- IAtsNavigateItem task = (IAtsNavigateItem) obj;
- for (XNavigateItem navItem : task.getNavigateItems()) {
- nameToNavItem.put(navItem.getName(), navItem);
- }
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, "Error loading AtsNavigateItem extension", ex);
- }
- }
- }
- // Put in alpha order
- String[] names = nameToNavItem.keySet().toArray(new String[nameToNavItem.size()]);
- Arrays.sort(names);
- for (String name : names) {
- items.add(nameToNavItem.get(name));
- }
- }
-
- private static final class MultipleHridSearchOperationFactory implements IOperationFactory {
-
- private final AtsEditor atsEditor;
- private final String operationName;
-
- public MultipleHridSearchOperationFactory(String operationName, AtsEditor atsEditor) {
- this.operationName = operationName;
- this.atsEditor = atsEditor;
- }
-
- @Override
- public IOperation createOperation() {
- return new MultipleHridSearchOperation(new MultipleHridSearchData(operationName, atsEditor));
- }
- }
-}
+/*******************************************************************************
+ * 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 java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.logging.Level;
+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.AtsImage;
+import org.eclipse.osee.ats.actions.NewAction;
+import org.eclipse.osee.ats.artifact.TeamDefinitionArtifact;
+import org.eclipse.osee.ats.health.ValidateAtsDatabase;
+import org.eclipse.osee.ats.health.ValidateChangeReportByHrid;
+import org.eclipse.osee.ats.health.ValidateChangeReports;
+import org.eclipse.osee.ats.internal.AtsPlugin;
+import org.eclipse.osee.ats.navigate.EmailTeamsItem.MemberType;
+import org.eclipse.osee.ats.notify.AtsNotificationNavigateItem;
+import org.eclipse.osee.ats.util.AtsArtifactTypes;
+import org.eclipse.osee.ats.util.AtsEditor;
+import org.eclipse.osee.ats.util.AtsUtil;
+import org.eclipse.osee.ats.util.DoesNotWorkItemAts;
+import org.eclipse.osee.ats.world.search.ActionableItemWorldSearchItem;
+import org.eclipse.osee.ats.world.search.ArtifactTypeSearchItem;
+import org.eclipse.osee.ats.world.search.ArtifactTypeWithInheritenceSearchItem;
+import org.eclipse.osee.ats.world.search.GoalSearchItem;
+import org.eclipse.osee.ats.world.search.GroupWorldSearchItem;
+import org.eclipse.osee.ats.world.search.MultipleHridSearchData;
+import org.eclipse.osee.ats.world.search.MultipleHridSearchOperation;
+import org.eclipse.osee.ats.world.search.MyFavoritesGoalsSearchItem;
+import org.eclipse.osee.ats.world.search.MyFavoritesSearchItem;
+import org.eclipse.osee.ats.world.search.MyGoalWorkflowItem;
+import org.eclipse.osee.ats.world.search.MyGoalWorkflowItem.GoalSearchState;
+import org.eclipse.osee.ats.world.search.MyReviewWorkflowItem;
+import org.eclipse.osee.ats.world.search.MyReviewWorkflowItem.ReviewState;
+import org.eclipse.osee.ats.world.search.MySubscribedSearchItem;
+import org.eclipse.osee.ats.world.search.MyWorldSearchItem;
+import org.eclipse.osee.ats.world.search.NextVersionSearchItem;
+import org.eclipse.osee.ats.world.search.ShowOpenWorkflowsByArtifactType;
+import org.eclipse.osee.ats.world.search.StateWorldSearchItem;
+import org.eclipse.osee.ats.world.search.TaskSearchWorldSearchItem;
+import org.eclipse.osee.ats.world.search.UserCommunitySearchItem;
+import org.eclipse.osee.ats.world.search.UserRelatedToAtsObjectSearch;
+import org.eclipse.osee.ats.world.search.VersionTargetedForTeamSearchItem;
+import org.eclipse.osee.ats.world.search.WorldSearchItem.LoadView;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.core.model.Branch;
+import org.eclipse.osee.framework.core.operation.IOperation;
+import org.eclipse.osee.framework.logging.OseeLevel;
+import org.eclipse.osee.framework.logging.OseeLog;
+import org.eclipse.osee.framework.skynet.core.User;
+import org.eclipse.osee.framework.skynet.core.UserManager;
+import org.eclipse.osee.framework.ui.plugin.OseeUiActivator;
+import org.eclipse.osee.framework.ui.plugin.PluginUiImage;
+import org.eclipse.osee.framework.ui.plugin.xnavigate.IOperationFactory;
+import org.eclipse.osee.framework.ui.plugin.xnavigate.XNavigateContributionManager;
+import org.eclipse.osee.framework.ui.plugin.xnavigate.XNavigateExtensionPointData;
+import org.eclipse.osee.framework.ui.plugin.xnavigate.XNavigateItem;
+import org.eclipse.osee.framework.ui.plugin.xnavigate.XNavigateItemAction;
+import org.eclipse.osee.framework.ui.plugin.xnavigate.XNavigateItemFolder;
+import org.eclipse.osee.framework.ui.plugin.xnavigate.XNavigateItemOperation;
+import org.eclipse.osee.framework.ui.plugin.xnavigate.XNavigateViewItems;
+import org.eclipse.osee.framework.ui.skynet.FrameworkImage;
+import org.eclipse.osee.framework.ui.skynet.action.CompareTwoStringsAction;
+import org.eclipse.osee.framework.ui.skynet.artifact.MassEditDirtyArtifactOperation;
+import org.eclipse.osee.framework.ui.skynet.blam.BlamContributionManager;
+import org.eclipse.osee.framework.ui.skynet.results.example.ResultsEditorExample;
+import org.eclipse.osee.framework.ui.skynet.results.example.XResultDataExample;
+import org.eclipse.osee.framework.ui.skynet.results.example.XViewerExample;
+import org.eclipse.osee.framework.ui.skynet.util.email.EmailUserGroups;
+import org.eclipse.osee.framework.ui.skynet.widgets.dialog.EntryCheckDialog;
+import org.osgi.framework.Bundle;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class AtsNavigateViewItems extends XNavigateViewItems {
+ private static AtsNavigateViewItems navigateItems = new AtsNavigateViewItems();
+ private List<XNavigateItem> items;
+
+ public AtsNavigateViewItems() {
+ super();
+ }
+
+ public static AtsNavigateViewItems getInstance() {
+ return navigateItems;
+ }
+
+ @Override
+ public List<XNavigateItem> getSearchNavigateItems() {
+ if (items == null) {
+ items = getItems();
+ }
+ return items;
+ }
+
+ private List<XNavigateItem> getItems() {
+ List<XNavigateItem> items = new ArrayList<XNavigateItem>();
+
+ if (OseeUiActivator.areOSEEServicesAvailable().isFalse()) {
+ return items;
+ }
+
+ try {
+ User user = UserManager.getUser();
+
+ items.add(new SearchNavigateItem(null, new MyWorldSearchItem("My World", user)));
+ items.add(new SearchNavigateItem(null, new MyFavoritesSearchItem("My Favorites", user)));
+ items.add(new SearchNavigateItem(null, new MySubscribedSearchItem("My Subscribed", user)));
+ items.add(new SearchNavigateItem(null, new MyGoalWorkflowItem("My Goals", user, GoalSearchState.InWork)));
+ items.add(new SearchNavigateItem(null, new MyReviewWorkflowItem("My Reviews", user, ReviewState.InWork)));
+ items.add(new VisitedItems(null));
+ items.add(new XNavigateItemAction(null, new NewAction(), AtsImage.NEW_ACTION));
+ items.add(new SearchNavigateItem(null, new MyWorldSearchItem("User's World")));
+
+ items.add(new SearchNavigateItem(null, new UserSearchWorkflowSearchItem()));
+ items.add(new SearchNavigateItem(null, new TaskSearchWorldSearchItem()));
+ items.add(new SearchNavigateItem(null, new GroupWorldSearchItem((Branch) null)));
+ items.add(new SearchNavigateItem(null, new TeamWorkflowSearchWorkflowSearchItem()));
+ items.add(new SearchNavigateItem(null, new UserCommunitySearchItem()));
+ items.add(new SearchNavigateItem(null, new ActionableItemWorldSearchItem(null, "Actionable Item Search",
+ false, false, false)));
+
+ createGoalsSection(items);
+ createVersionsSection(items);
+ addExtensionPointItems(items);
+ createReviewsSection(items);
+
+ XNavigateItem stateItems = new XNavigateItem(null, "States", AtsImage.STATE);
+ new SearchNavigateItem(stateItems, new StateWorldSearchItem());
+ new SearchNavigateItem(stateItems, new StateWorldSearchItem("Search for Authorize Actions", "Authorize"));
+ items.add(stateItems);
+
+ // Search Items
+ items.add(new XNavigateItemOperation(null, FrameworkImage.BRANCH_CHANGE, "Open Change Report(s) by ID(s)",
+ new MultipleHridSearchOperationFactory("Open Change Report(s) by ID(s)", AtsEditor.ChangeReport)));
+ items.add(new XNavigateItemOperation(null, AtsImage.OPEN_BY_ID, "Search by ID(s) - Open World Editor",
+ new MultipleHridSearchOperationFactory("Search by ID(s) - Open World Editor", AtsEditor.WorldEditor)));
+ items.add(new XNavigateItemOperation(null, AtsImage.WORKFLOW_CONFIG, "Search by ID(s) - Open Workflow Editor",
+ new MultipleHridSearchOperationFactory("Search by ID(s) - Open Workflow Editor", AtsEditor.WorkflowEditor)));
+ items.add(new XNavigateItemOperation(null, AtsImage.GLOBE, "Quick Search", new IOperationFactory() {
+
+ @Override
+ public IOperation createOperation() {
+ EntryCheckDialog dialog =
+ new EntryCheckDialog("Search by Strings", "Enter search strings",
+ "Include Completed/Cancelled Workflows");
+ if (dialog.open() == 0) {
+ return new AtsQuickSearchOperation(new AtsQuickSearchData("Search by Strings", dialog.getEntry(),
+ dialog.isChecked()));
+ }
+ return null;
+ }
+ }));
+
+ items.add(new ArtifactImpactToActionSearchItem(null));
+
+ XNavigateItem reportItems = new XNavigateItem(null, "Reports", AtsImage.REPORT);
+ new FirstTimeQualityMetricReportItem(reportItems);
+ new XNavigateItem(reportItems, "ATS World Reports - Input from Actions in ATS World", AtsImage.REPORT);
+ new BarChartExample(reportItems);
+ new ResultsEditorExample(reportItems);
+ new CompareEditorExample(reportItems);
+ new XViewerExample(reportItems);
+ new XResultDataExample(reportItems);
+ // new ExtendedStatusReportItem(atsReportItems, "ATS World Extended Status Report");
+
+ XNavigateItem emailItems = new XNavigateItem(null, "Email & Notifications", FrameworkImage.EMAIL);
+ new EmailTeamsItem(emailItems, null, MemberType.Both);
+ new EmailTeamsItem(emailItems, null, MemberType.Leads);
+ new EmailTeamsItem(emailItems, null, MemberType.Members);
+ new EmailUserGroups(emailItems);
+ new SubscribeByActionableItem(emailItems);
+ new SubscribeByTeamDefinition(emailItems);
+ items.add(emailItems);
+
+ items.add(reportItems);
+
+ XNavigateItem utilItems = new XNavigateItem(null, "Util", FrameworkImage.GEAR);
+ new ImportActionsViaSpreadsheet(utilItems);
+ new XNavigateItemAction(utilItems, new CompareTwoStringsAction(), FrameworkImage.EDIT);
+ new GenerateGuid(utilItems);
+ new XNavigateItemOperation(utilItems, FrameworkImage.GEAR, MassEditDirtyArtifactOperation.NAME,
+ new MassEditDirtyArtifactOperation());
+
+ items.add(utilItems);
+
+ BlamContributionManager.addBlamOperationsToNavigator(items);
+
+ if (AtsUtil.isAtsAdmin()) {
+ XNavigateItem adminItems = new XNavigateItem(null, "Admin", PluginUiImage.ADMIN);
+
+ new AtsNotificationNavigateItem(adminItems);
+ new AtsNotificationNavigateItem(adminItems, true);
+ new UpdateAtsWorkItemDefinitions(adminItems);
+ new DisplayCurrentOseeEventListeners(adminItems);
+ new AtsRemoteEventTestItem(adminItems);
+
+ new SearchNavigateItem(adminItems, new UserRelatedToAtsObjectSearch(
+ "User's All Related Objects - Admin Only", null, false, LoadView.WorldEditor));
+ new SearchNavigateItem(adminItems, new UserRelatedToAtsObjectSearch(
+ "User's All Active Related Objects - Admin Only", null, true, LoadView.WorldEditor));
+
+ new SearchNavigateItem(adminItems, new ArtifactTypeSearchItem("Show all Actions", AtsArtifactTypes.Action));
+ new SearchNavigateItem(adminItems, new ArtifactTypeSearchItem("Show all Decision Review",
+ AtsArtifactTypes.DecisionReview));
+ new SearchNavigateItem(adminItems, new ArtifactTypeSearchItem("Show all PeerToPeer Review",
+ AtsArtifactTypes.PeerToPeerReview));
+ new SearchNavigateItem(adminItems, new ArtifactTypeWithInheritenceSearchItem("Show all Team Workflows",
+ AtsArtifactTypes.TeamWorkflow));
+ new SearchNavigateItem(adminItems, new ArtifactTypeSearchItem("Show all Tasks", AtsArtifactTypes.Task));
+ new CreateGoalTestArtifacts(adminItems);
+
+ new DoesNotWorkItemAts(adminItems);
+
+ XNavigateItem healthItems = new XNavigateItemFolder(adminItems, "Health");
+ new ValidateAtsDatabase(healthItems);
+ new ValidateChangeReports(healthItems);
+ new ValidateChangeReportByHrid(healthItems);
+
+ // new ActionNavigateItem(adminItems, new XViewerViewAction());
+ // new ActionNavigateItem(adminItems, new OpenEditorAction());
+ // new CreateBugFixesItem(adminItems);
+
+ XNavigateItem extra = new XNavigateItemFolder(adminItems, "Other");
+ Set<XNavigateExtensionPointData> extraItems =
+ XNavigateContributionManager.getNavigateItems(NavigateView.VIEW_ID);
+ for (XNavigateExtensionPointData extraItem : extraItems) {
+ for (XNavigateItem navigateItem : extraItem.getNavigateItems()) {
+ extra.addChild(navigateItem);
+ }
+ }
+
+ items.add(adminItems);
+ }
+ } catch (OseeCoreException ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ return items;
+ }
+
+ return items;
+ }
+
+ public void createReviewsSection(List<XNavigateItem> items) {
+ try {
+ XNavigateItem reviewItem = new XNavigateItem(null, "Reviews", AtsImage.REVIEW);
+ new SearchNavigateItem(reviewItem, new ShowOpenWorkflowsByArtifactType(
+ "Show Open " + AtsArtifactTypes.DecisionReview.getName() + "s", AtsArtifactTypes.DecisionReview, false,
+ false, AtsImage.REVIEW));
+ new SearchNavigateItem(reviewItem, new ShowOpenWorkflowsByArtifactType(
+ "Show Workflows Waiting " + AtsArtifactTypes.DecisionReview.getName() + "s",
+ AtsArtifactTypes.DecisionReview, false, true, AtsImage.REVIEW));
+ new SearchNavigateItem(reviewItem, new ShowOpenWorkflowsByArtifactType(
+ "Show Open " + AtsArtifactTypes.PeerToPeerReview.getName() + "s", AtsArtifactTypes.PeerToPeerReview, false,
+ false, AtsImage.REVIEW));
+ new SearchNavigateItem(reviewItem, new ShowOpenWorkflowsByArtifactType(
+ "Show Workflows Waiting " + AtsArtifactTypes.PeerToPeerReview.getName() + "s",
+ AtsArtifactTypes.PeerToPeerReview, false, true, AtsImage.REVIEW));
+ new NewPeerToPeerReviewItem(reviewItem);
+ new GenerateReviewParticipationReport(reviewItem);
+ items.add(reviewItem);
+ } catch (OseeCoreException ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, "Can't create Goals section");
+ }
+ }
+
+ public void createVersionsSection(List<XNavigateItem> items) {
+ try {
+ XNavigateItem releaseItems = new XNavigateItem(null, "Versions", FrameworkImage.VERSION);
+ new MassEditTeamVersionItem("Team Versions", releaseItems, (TeamDefinitionArtifact) null,
+ FrameworkImage.VERSION);
+ new SearchNavigateItem(releaseItems, new VersionTargetedForTeamSearchItem(null, null, false,
+ LoadView.WorldEditor));
+ new SearchNavigateItem(releaseItems, new NextVersionSearchItem(null, LoadView.WorldEditor));
+ new ReleaseVersionItem(releaseItems, null);
+ new CreateNewVersionItem(releaseItems, null);
+ new GenerateVersionReportItem(releaseItems);
+ new GenerateFullVersionReportItem(releaseItems);
+ items.add(releaseItems);
+ } catch (OseeCoreException ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, "Can't create Goals section");
+ }
+ }
+
+ public void createGoalsSection(List<XNavigateItem> items) {
+ try {
+ XNavigateItem goalItem = new XNavigateItem(null, "Goals", AtsImage.GOAL);
+ new SearchNavigateItem(goalItem, new GoalSearchItem("InWork Goals", new ArrayList<TeamDefinitionArtifact>(),
+ false, null));
+ new SearchNavigateItem(goalItem, new GoalSearchWorkflowSearchItem());
+ new SearchNavigateItem(goalItem, new MyFavoritesGoalsSearchItem("Favorites", UserManager.getUser()));
+ items.add(goalItem);
+ } catch (OseeCoreException ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, "Can't create Goals section");
+ }
+ }
+
+ public void addExtensionPointItems(List<XNavigateItem> items) {
+ IExtensionPoint point = Platform.getExtensionRegistry().getExtensionPoint("org.eclipse.osee.ats.AtsNavigateItem");
+ if (point == null) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, "Can't access AtsNavigateItem extension point");
+ return;
+ }
+ IExtension[] extensions = point.getExtensions();
+ Map<String, XNavigateItem> nameToNavItem = new HashMap<String, XNavigateItem>();
+ for (IExtension extension : extensions) {
+ IConfigurationElement[] elements = extension.getConfigurationElements();
+ String classname = null;
+ String bundleName = null;
+ for (IConfigurationElement el : elements) {
+ if (el.getName().equals("AtsNavigateItem")) {
+ classname = el.getAttribute("classname");
+ bundleName = el.getContributor().getName();
+ }
+ }
+ if (classname != null && bundleName != null) {
+ Bundle bundle = Platform.getBundle(bundleName);
+ try {
+ Object obj = bundle.loadClass(classname).newInstance();
+ IAtsNavigateItem task = (IAtsNavigateItem) obj;
+ for (XNavigateItem navItem : task.getNavigateItems()) {
+ nameToNavItem.put(navItem.getName(), navItem);
+ }
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, "Error loading AtsNavigateItem extension", ex);
+ }
+ }
+ }
+ // Put in alpha order
+ String[] names = nameToNavItem.keySet().toArray(new String[nameToNavItem.size()]);
+ Arrays.sort(names);
+ for (String name : names) {
+ items.add(nameToNavItem.get(name));
+ }
+ }
+
+ private static final class MultipleHridSearchOperationFactory implements IOperationFactory {
+
+ private final AtsEditor atsEditor;
+ private final String operationName;
+
+ public MultipleHridSearchOperationFactory(String operationName, AtsEditor atsEditor) {
+ this.operationName = operationName;
+ this.atsEditor = atsEditor;
+ }
+
+ @Override
+ public IOperation createOperation() {
+ return new MultipleHridSearchOperation(new MultipleHridSearchData(operationName, atsEditor));
+ }
+ }
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/AtsQuickSearchData.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/AtsQuickSearchData.java
index 1e26d01f0f0..15d275ef5ec 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/AtsQuickSearchData.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/AtsQuickSearchData.java
@@ -1,44 +1,44 @@
-/*******************************************************************************
- * 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;
-
-/**
- * @author Donald G. Dunne
- */
-public class AtsQuickSearchData {
- private final String searchStr;
- private boolean includeCompleteCancelled = false;
- private final String name;
-
- public AtsQuickSearchData(String name, String searchStr, boolean includeCompleteCancelled) {
- this.name = name;
- this.searchStr = searchStr;
- this.includeCompleteCancelled = includeCompleteCancelled;
- }
-
- public boolean isIncludeCompleteCancelled() {
- return includeCompleteCancelled;
- }
-
- public void setIncludeCompleteCancelled(boolean includeCompleteCancelled) {
- this.includeCompleteCancelled = includeCompleteCancelled;
- }
-
- public String getSearchStr() {
- return searchStr;
- }
-
- @Override
- public String toString() {
- return String.format("%s - [%s]%s", name, searchStr,
- includeCompleteCancelled ? " - Include Completed/Cancelled" : "");
- }
-}
+/*******************************************************************************
+ * 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;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class AtsQuickSearchData {
+ private final String searchStr;
+ private boolean includeCompleteCancelled = false;
+ private final String name;
+
+ public AtsQuickSearchData(String name, String searchStr, boolean includeCompleteCancelled) {
+ this.name = name;
+ this.searchStr = searchStr;
+ this.includeCompleteCancelled = includeCompleteCancelled;
+ }
+
+ public boolean isIncludeCompleteCancelled() {
+ return includeCompleteCancelled;
+ }
+
+ public void setIncludeCompleteCancelled(boolean includeCompleteCancelled) {
+ this.includeCompleteCancelled = includeCompleteCancelled;
+ }
+
+ public String getSearchStr() {
+ return searchStr;
+ }
+
+ @Override
+ public String toString() {
+ return String.format("%s - [%s]%s", name, searchStr,
+ includeCompleteCancelled ? " - Include Completed/Cancelled" : "");
+ }
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/AtsQuickSearchOperation.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/AtsQuickSearchOperation.java
index 37962035aee..378d6ac7a9d 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/AtsQuickSearchOperation.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/AtsQuickSearchOperation.java
@@ -1,109 +1,109 @@
-/*******************************************************************************
- * 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 static org.eclipse.osee.framework.skynet.core.artifact.DeletionFlag.EXCLUDE_DELETED;
-import java.util.HashSet;
-import java.util.Set;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.osee.ats.artifact.StateMachineArtifact;
-import org.eclipse.osee.ats.internal.AtsPlugin;
-import org.eclipse.osee.ats.util.AtsUtil;
-import org.eclipse.osee.ats.world.IWorldEditorConsumer;
-import org.eclipse.osee.ats.world.WorldEditor;
-import org.eclipse.osee.ats.world.WorldEditorOperationProvider;
-import org.eclipse.osee.framework.core.exception.ArtifactDoesNotExist;
-import org.eclipse.osee.framework.core.exception.OseeCoreException;
-import org.eclipse.osee.framework.core.operation.AbstractOperation;
-import org.eclipse.osee.framework.jdk.core.util.HumanReadableId;
-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.search.ArtifactQuery;
-import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
-import org.eclipse.osee.framework.ui.plugin.xnavigate.XNavigateComposite.TableLoadOption;
-
-/**
- * @author Donald G. Dunne
- */
-public class AtsQuickSearchOperation extends AbstractOperation implements IWorldEditorConsumer {
- Set<Artifact> allArtifacts = new HashSet<Artifact>();
- private final AtsQuickSearchData data;
- private WorldEditor worldEditor;
-
- public AtsQuickSearchOperation(AtsQuickSearchData data) {
- super(data.toString(), AtsPlugin.PLUGIN_ID);
- this.data = data;
- }
-
- @Override
- protected void doWork(IProgressMonitor monitor) throws OseeCoreException {
- if (!Strings.isValid(data.getSearchStr())) {
- AWorkbench.popup("Must Enter Search String");
- return;
- }
- if (worldEditor == null) {
- WorldEditor.open(new WorldEditorOperationProvider(new AtsQuickSearchOperation(data)));
- return;
- }
- for (String str : data.getSearchStr().split(", ")) {
- if (HumanReadableId.isValid(str)) {
- try {
- Artifact art = ArtifactQuery.getArtifactFromId(str, AtsUtil.getAtsBranch());
- if (art != null) {
- allArtifacts.add(art);
- }
- } catch (ArtifactDoesNotExist ex) {
- // do nothing
- }
- }
- }
- for (Artifact art : ArtifactQuery.getArtifactListFromAttributeKeywords(AtsUtil.getAtsBranch(),
- data.getSearchStr(), false, EXCLUDE_DELETED, false)) {
- // only ATS Artifacts
- if (art instanceof StateMachineArtifact) {
- StateMachineArtifact sma = (StateMachineArtifact) art;
- // default excludes canceled/completed
- if (data.isIncludeCompleteCancelled() == false) {
- if (!sma.isCancelledOrCompleted()) {
- allArtifacts.add(art);
- }
- } else {
- allArtifacts.add(art);
- }
- }
- }
- if (allArtifacts.isEmpty()) {
- AWorkbench.popup(getName(), getName() + "\n\nNo Results Found");
- } else if (worldEditor != null) {
- worldEditor.getWorldComposite().load(getName(), allArtifacts, TableLoadOption.None);
- }
- }
-
- @Override
- public String getName() {
- return data.toString();
- }
-
- public Set<Artifact> getAllArtifacts() {
- return allArtifacts;
- }
-
- @Override
- public WorldEditor getWorldEditor() {
- return worldEditor;
- }
-
- @Override
- public void setWorldEditor(WorldEditor worldEditor) {
- this.worldEditor = worldEditor;
- }
-
-}
+/*******************************************************************************
+ * 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 static org.eclipse.osee.framework.skynet.core.artifact.DeletionFlag.EXCLUDE_DELETED;
+import java.util.HashSet;
+import java.util.Set;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.osee.ats.artifact.StateMachineArtifact;
+import org.eclipse.osee.ats.internal.AtsPlugin;
+import org.eclipse.osee.ats.util.AtsUtil;
+import org.eclipse.osee.ats.world.IWorldEditorConsumer;
+import org.eclipse.osee.ats.world.WorldEditor;
+import org.eclipse.osee.ats.world.WorldEditorOperationProvider;
+import org.eclipse.osee.framework.core.exception.ArtifactDoesNotExist;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.core.operation.AbstractOperation;
+import org.eclipse.osee.framework.jdk.core.util.HumanReadableId;
+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.search.ArtifactQuery;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
+import org.eclipse.osee.framework.ui.plugin.xnavigate.XNavigateComposite.TableLoadOption;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class AtsQuickSearchOperation extends AbstractOperation implements IWorldEditorConsumer {
+ Set<Artifact> allArtifacts = new HashSet<Artifact>();
+ private final AtsQuickSearchData data;
+ private WorldEditor worldEditor;
+
+ public AtsQuickSearchOperation(AtsQuickSearchData data) {
+ super(data.toString(), AtsPlugin.PLUGIN_ID);
+ this.data = data;
+ }
+
+ @Override
+ protected void doWork(IProgressMonitor monitor) throws OseeCoreException {
+ if (!Strings.isValid(data.getSearchStr())) {
+ AWorkbench.popup("Must Enter Search String");
+ return;
+ }
+ if (worldEditor == null) {
+ WorldEditor.open(new WorldEditorOperationProvider(new AtsQuickSearchOperation(data)));
+ return;
+ }
+ for (String str : data.getSearchStr().split(", ")) {
+ if (HumanReadableId.isValid(str)) {
+ try {
+ Artifact art = ArtifactQuery.getArtifactFromId(str, AtsUtil.getAtsBranch());
+ if (art != null) {
+ allArtifacts.add(art);
+ }
+ } catch (ArtifactDoesNotExist ex) {
+ // do nothing
+ }
+ }
+ }
+ for (Artifact art : ArtifactQuery.getArtifactListFromAttributeKeywords(AtsUtil.getAtsBranch(),
+ data.getSearchStr(), false, EXCLUDE_DELETED, false)) {
+ // only ATS Artifacts
+ if (art instanceof StateMachineArtifact) {
+ StateMachineArtifact sma = (StateMachineArtifact) art;
+ // default excludes canceled/completed
+ if (data.isIncludeCompleteCancelled() == false) {
+ if (!sma.isCancelledOrCompleted()) {
+ allArtifacts.add(art);
+ }
+ } else {
+ allArtifacts.add(art);
+ }
+ }
+ }
+ if (allArtifacts.isEmpty()) {
+ AWorkbench.popup(getName(), getName() + "\n\nNo Results Found");
+ } else if (worldEditor != null) {
+ worldEditor.getWorldComposite().load(getName(), allArtifacts, TableLoadOption.None);
+ }
+ }
+
+ @Override
+ public String getName() {
+ return data.toString();
+ }
+
+ public Set<Artifact> getAllArtifacts() {
+ return allArtifacts;
+ }
+
+ @Override
+ public WorldEditor getWorldEditor() {
+ return worldEditor;
+ }
+
+ @Override
+ public void setWorldEditor(WorldEditor worldEditor) {
+ this.worldEditor = worldEditor;
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/AtsRemoteEventTestItem.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/AtsRemoteEventTestItem.java
index 0480abe0a87..f5941874e28 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/AtsRemoteEventTestItem.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/AtsRemoteEventTestItem.java
@@ -1,285 +1,288 @@
-/*******************************************************************************
- * 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 java.util.Arrays;
-import java.util.Collections;
-import java.util.logging.Level;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.osee.ats.AtsOpenOption;
-import org.eclipse.osee.ats.actions.wizard.NewActionJob;
-import org.eclipse.osee.ats.artifact.ActionArtifact;
-import org.eclipse.osee.ats.artifact.ActionableItemArtifact;
-import org.eclipse.osee.ats.artifact.AtsAttributeTypes;
-import org.eclipse.osee.ats.artifact.StateMachineArtifact.TransitionOption;
-import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact;
-import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact.DefaultTeamState;
-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.AtsPriority.PriorityType;
-import org.eclipse.osee.ats.util.AtsRelationTypes;
-import org.eclipse.osee.ats.util.AtsUtil;
-import org.eclipse.osee.ats.world.WorldXNavigateItemAction;
-import org.eclipse.osee.framework.core.exception.OseeCoreException;
-import org.eclipse.osee.framework.logging.OseeLog;
-import org.eclipse.osee.framework.skynet.core.UserManager;
-import org.eclipse.osee.framework.skynet.core.artifact.search.ArtifactQuery;
-import org.eclipse.osee.framework.skynet.core.event.OseeEventManager;
-import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction;
-import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
-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.skynet.results.XResultData;
-import org.eclipse.osee.framework.ui.skynet.util.ChangeType;
-import org.eclipse.osee.framework.ui.skynet.widgets.dialog.EntryDialog;
-import org.eclipse.osee.framework.ui.swt.Displays;
-
-/**
- * @author Donald G. Dunne
- */
-public class AtsRemoteEventTestItem extends WorldXNavigateItemAction {
-
- XResultData resultData;
-
- public AtsRemoteEventTestItem(XNavigateItem parent) {
- super(parent, "ATS Remote Event Test");
- }
-
- @Override
- public void run(TableLoadOption... tableLoadOptions) throws OseeCoreException {
- if (AtsUtil.isProductionDb()) {
- AWorkbench.popup("ERROR", "This should not to be run on production DB");
- return;
- }
- MessageDialog dialog =
- new MessageDialog(Displays.getActiveShell(), getName(), null,
- getName() + "\n\nSelect Source or Destination Client", MessageDialog.QUESTION, new String[] {
- "Source Client", "Destination Client - Start", "Destination Client - End", "Cancel"}, 2);
- int result = dialog.open();
- resultData = new XResultData();
- if (result == 0) {
- runClientTest();
- } else if (result == 1) {
- EntryDialog diag = new EntryDialog(getName(), "Enter tt number of Source Client created Action");
- if (diag.open() == 0) {
- runDestinationTestStart(diag.getEntry());
- }
- } else if (result == 2) {
- EntryDialog diag = new EntryDialog(getName(), "Enter tt number of Source Client created Action");
- if (diag.open() == 0) {
- runDestinationTestEnd(diag.getEntry());
- }
- }
- }
-
- private void runClientTest() throws OseeCoreException {
- String title = getName() + " - Destination Client Test";
- resultData.log("Running " + title);
- NewActionJob job = null;
- job =
- new NewActionJob("tt", "description", ChangeType.Improvement, PriorityType.Priority_1, null, false,
- ActionableItemArtifact.getActionableItems(Arrays.asList("ATS")), null);
- job.setUser(true);
- job.setPriority(Job.LONG);
- job.schedule();
- try {
- job.join();
- } catch (InterruptedException ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
-
- ActionArtifact actionArt = job.getActionArt();
- resultData.log("Created Action " + actionArt);
- TeamWorkFlowArtifact teamArt = actionArt.getTeamWorkFlowArtifacts().iterator().next();
-
- // Make current user assignee for convenience to developer
- teamArt.getStateMgr().addAssignee(UserManager.getUser());
- teamArt.persist();
-
- validateActionAtStart(actionArt);
-
- // Wait for destination client to start
- if (!MessageDialog.openConfirm(
- Displays.getActiveShell(),
- getName(),
- "Launch \"Destination Client - Start\" test, enter \"" + actionArt.getName().replaceFirst("tt ", "") + "\" and press Ok")) {
- return;
- }
-
- // Make changes and persist
- SkynetTransaction transaction = new SkynetTransaction(AtsUtil.getAtsBranch(), "Remote Event Test");
- teamArt.setSoleAttributeFromString(AtsAttributeTypes.Description, "description 2");
- teamArt.setSoleAttributeFromString(AtsAttributeTypes.ChangeType, ChangeType.Problem.name());
- teamArt.setSoleAttributeFromString(AtsAttributeTypes.PriorityType, PriorityType.Priority_2.getShortName());
- teamArt.setSoleAttributeFromString(AtsAttributeTypes.ValidationRequired, "yes");
- teamArt.addRelation(AtsRelationTypes.TeamWorkflowTargetedForVersion_Version, getVersion256());
- teamArt.persist(transaction);
- transaction.execute();
-
- // Make changes and persist
- teamArt.setSoleAttributeFromString(AtsAttributeTypes.Description, "description 3");
- teamArt.setSoleAttributeFromString(AtsAttributeTypes.ProposedResolution, "this is resolution");
- teamArt.persist();
-
- // Make changes and persist
- teamArt.deleteRelation(AtsRelationTypes.TeamWorkflowTargetedForVersion_Version, getVersion256());
- teamArt.addRelation(AtsRelationTypes.TeamWorkflowTargetedForVersion_Version, getVersion257());
- teamArt.setSoleAttributeFromString(AtsAttributeTypes.ValidationRequired, "no");
- teamArt.persist();
-
- // Make changes and persist
- transaction = new SkynetTransaction(AtsUtil.getAtsBranch(), "Remote Event Test");
- teamArt.deleteAttributes(AtsAttributeTypes.ValidationRequired);
- teamArt.deleteAttributes(AtsAttributeTypes.Resolution);
- teamArt.setSoleAttributeFromString(AtsAttributeTypes.Description, "description 4");
- teamArt.setSoleAttributeFromString(AtsAttributeTypes.ChangeType, ChangeType.Support.name());
- teamArt.setSoleAttributeFromString(AtsAttributeTypes.PriorityType, PriorityType.Priority_3.getShortName());
- teamArt.setRelations(AtsRelationTypes.TeamWorkflowTargetedForVersion_Version,
- Collections.singleton(getVersion258()));
- teamArt.persist(transaction);
- transaction.execute();
-
- // Make changes and persist
- teamArt.setSoleAttributeFromString(AtsAttributeTypes.ValidationRequired, "yes");
- teamArt.persist();
-
- // Make changes and transition
- transaction = new SkynetTransaction(AtsUtil.getAtsBranch(), "Remote Event Test");
- teamArt.setRelations(AtsRelationTypes.TeamWorkflowTargetedForVersion_Version,
- Collections.singleton(getVersion257()));
- teamArt.setSoleAttributeFromString(AtsAttributeTypes.ValidationRequired, "no");
- teamArt.persist(transaction);
- transaction.execute();
-
- transaction = new SkynetTransaction(AtsUtil.getAtsBranch(), "Remote Event Test");
- teamArt.transition(DefaultTeamState.Analyze.name(), Collections.singleton(UserManager.getUser()), transaction,
- TransitionOption.Persist);
- teamArt.persist(transaction);
- transaction.execute();
-
- validateActionAtEnd(actionArt);
-
- // Wait for destination client to end
- if (!MessageDialog.openConfirm(
- Displays.getActiveShell(),
- getName(),
- "Launch \"Destination Client - End\" test, enter \"" + actionArt.getName().replaceFirst("tt ", "") + "\" and press Ok")) {
- return;
- }
-
- resultData.report(title);
- }
-
- private VersionArtifact getVersion256() throws OseeCoreException {
- return (VersionArtifact) ArtifactQuery.getArtifactFromTypeAndName(AtsArtifactTypes.Version, "2.5.6",
- AtsUtil.getAtsBranch());
- }
-
- private VersionArtifact getVersion257() throws OseeCoreException {
- return (VersionArtifact) ArtifactQuery.getArtifactFromTypeAndName(AtsArtifactTypes.Version, "2.5.7",
- AtsUtil.getAtsBranch());
- }
-
- private VersionArtifact getVersion258() throws OseeCoreException {
- return (VersionArtifact) ArtifactQuery.getArtifactFromTypeAndName(AtsArtifactTypes.Version, "2.5.8",
- AtsUtil.getAtsBranch());
- }
-
- private void validateActionAtStart(ActionArtifact actionArt) throws OseeCoreException {
- resultData.log("\nValidating Start...");
- // Ensure event service is connected
- if (!OseeEventManager.isEventManagerConnected()) {
- resultData.logError("Remote Event Service is not connected");
- return;
- }
- resultData.log("Remote Event Service connected");
-
- // Validate values
- TeamWorkFlowArtifact teamArt = actionArt.getTeamWorkFlowArtifacts().iterator().next();
- testEquals("Description", "description", teamArt.getSoleAttributeValue(AtsAttributeTypes.Description, null));
- testEquals("Change Type", ChangeType.Improvement.name(),
- teamArt.getSoleAttributeValue(AtsAttributeTypes.ChangeType, null));
- testEquals("Priority", PriorityType.Priority_1.getShortName(),
- teamArt.getSoleAttributeValue(AtsAttributeTypes.PriorityType, null));
- }
-
- private void validateActionAtEnd(ActionArtifact actionArt) throws OseeCoreException {
- resultData.log("\nValidating End...");
- // Ensure event service is connected
- if (!OseeEventManager.isEventManagerConnected()) {
- resultData.logError("Remote Event Service is not connected");
- return;
- }
- resultData.log("Remote Event Service connected");
-
- // Validate values
- TeamWorkFlowArtifact teamArt = actionArt.getTeamWorkFlowArtifacts().iterator().next();
- testEquals("Description", "description 4", teamArt.getSoleAttributeValue(AtsAttributeTypes.Description, null));
- testEquals("Change Type", ChangeType.Support.name(),
- teamArt.getSoleAttributeValue(AtsAttributeTypes.ChangeType, null));
- testEquals("Priority", PriorityType.Priority_3.getShortName(),
- teamArt.getSoleAttributeValue(AtsAttributeTypes.PriorityType, null));
- testEquals("Validation Required", "false",
- String.valueOf(teamArt.getSoleAttributeValue(AtsAttributeTypes.ValidationRequired, null)));
- testEquals("Targeted Version",
- (teamArt.getTargetedForVersion() != null ? teamArt.getTargetedForVersion().toString() : "not set"), "2.5.7");
- testEquals("State", DefaultTeamState.Analyze.name(), teamArt.getStateMgr().getCurrentStateName());
- }
-
- private void testEquals(String name, Object expected, Object actual) {
- if (!expected.equals(actual)) {
- resultData.logError(String.format("Error: [%s] - expected [%s] actual[%s]", name, expected, actual));
- } else {
- resultData.log(String.format("Valid: [%s] - expected [%s] actual[%s]", name, expected, actual));
- }
- }
-
- private void runDestinationTestStart(String ttNum) throws OseeCoreException {
- String title = getName() + " - Destination Client Test - Start";
- String actionTitle = "tt " + ttNum;
- resultData.log("Running " + title);
-
- ActionArtifact actionArt =
- (ActionArtifact) ArtifactQuery.getArtifactFromTypeAndName(AtsArtifactTypes.Action, actionTitle,
- AtsUtil.getAtsBranch());
-
- if (actionArt == null) {
- resultData.logError(String.format("Couldn't load Action named [%s]", actionTitle));
- } else {
- resultData.log("Loaded Action " + actionArt);
- AtsUtil.openATSAction(actionArt, AtsOpenOption.OpenOneOrPopupSelect);
- }
- validateActionAtStart(actionArt);
- resultData.report(title);
- }
-
- private void runDestinationTestEnd(String ttNum) throws OseeCoreException {
- String title = getName() + " - Destination Client Test - End";
- String actionTitle = "tt " + ttNum;
- resultData.log("Running " + title);
-
- ActionArtifact actionArt =
- (ActionArtifact) ArtifactQuery.getArtifactFromTypeAndName(AtsArtifactTypes.Action, actionTitle,
- AtsUtil.getAtsBranch());
-
- if (actionArt == null) {
- resultData.logError(String.format("Couldn't load Action named [%s]", actionTitle));
- } else {
- resultData.log("Loaded Action " + actionArt);
- AtsUtil.openATSAction(actionArt, AtsOpenOption.OpenOneOrPopupSelect);
- }
- validateActionAtEnd(actionArt);
- resultData.report(title);
- }
-
-}
+/*******************************************************************************
+ * 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 java.util.Arrays;
+import java.util.Collections;
+import java.util.logging.Level;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.osee.ats.AtsOpenOption;
+import org.eclipse.osee.ats.actions.wizard.NewActionJob;
+import org.eclipse.osee.ats.artifact.ActionArtifact;
+import org.eclipse.osee.ats.artifact.ActionableItemArtifact;
+import org.eclipse.osee.ats.artifact.AtsAttributeTypes;
+import org.eclipse.osee.ats.artifact.StateMachineArtifact.TransitionOption;
+import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact;
+import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact.DefaultTeamState;
+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.AtsPriority.PriorityType;
+import org.eclipse.osee.ats.util.AtsRelationTypes;
+import org.eclipse.osee.ats.util.AtsUtil;
+import org.eclipse.osee.ats.world.WorldXNavigateItemAction;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.logging.OseeLog;
+import org.eclipse.osee.framework.skynet.core.UserManager;
+import org.eclipse.osee.framework.skynet.core.artifact.search.ArtifactQuery;
+import org.eclipse.osee.framework.skynet.core.event.OseeEventManager;
+import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
+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.skynet.results.XResultData;
+import org.eclipse.osee.framework.ui.skynet.util.ChangeType;
+import org.eclipse.osee.framework.ui.skynet.widgets.dialog.EntryDialog;
+import org.eclipse.osee.framework.ui.swt.Displays;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class AtsRemoteEventTestItem extends WorldXNavigateItemAction {
+
+ XResultData resultData;
+
+ public AtsRemoteEventTestItem(XNavigateItem parent) {
+ super(parent, "ATS Remote Event Test");
+ }
+
+ @Override
+ public void run(TableLoadOption... tableLoadOptions) throws OseeCoreException {
+ if (AtsUtil.isProductionDb()) {
+ AWorkbench.popup("ERROR", "This should not to be run on production DB");
+ return;
+ }
+ MessageDialog dialog =
+ new MessageDialog(Displays.getActiveShell(), getName(), null,
+ getName() + "\n\nSelect Source or Destination Client", MessageDialog.QUESTION, new String[] {
+ "Source Client",
+ "Destination Client - Start",
+ "Destination Client - End",
+ "Cancel"}, 2);
+ int result = dialog.open();
+ resultData = new XResultData();
+ if (result == 0) {
+ runClientTest();
+ } else if (result == 1) {
+ EntryDialog diag = new EntryDialog(getName(), "Enter tt number of Source Client created Action");
+ if (diag.open() == 0) {
+ runDestinationTestStart(diag.getEntry());
+ }
+ } else if (result == 2) {
+ EntryDialog diag = new EntryDialog(getName(), "Enter tt number of Source Client created Action");
+ if (diag.open() == 0) {
+ runDestinationTestEnd(diag.getEntry());
+ }
+ }
+ }
+
+ private void runClientTest() throws OseeCoreException {
+ String title = getName() + " - Destination Client Test";
+ resultData.log("Running " + title);
+ NewActionJob job = null;
+ job =
+ new NewActionJob("tt", "description", ChangeType.Improvement, PriorityType.Priority_1, null, false,
+ ActionableItemArtifact.getActionableItems(Arrays.asList("ATS")), null);
+ job.setUser(true);
+ job.setPriority(Job.LONG);
+ job.schedule();
+ try {
+ job.join();
+ } catch (InterruptedException ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ }
+
+ ActionArtifact actionArt = job.getActionArt();
+ resultData.log("Created Action " + actionArt);
+ TeamWorkFlowArtifact teamArt = actionArt.getTeamWorkFlowArtifacts().iterator().next();
+
+ // Make current user assignee for convenience to developer
+ teamArt.getStateMgr().addAssignee(UserManager.getUser());
+ teamArt.persist();
+
+ validateActionAtStart(actionArt);
+
+ // Wait for destination client to start
+ if (!MessageDialog.openConfirm(
+ Displays.getActiveShell(),
+ getName(),
+ "Launch \"Destination Client - Start\" test, enter \"" + actionArt.getName().replaceFirst("tt ", "") + "\" and press Ok")) {
+ return;
+ }
+
+ // Make changes and persist
+ SkynetTransaction transaction = new SkynetTransaction(AtsUtil.getAtsBranch(), "Remote Event Test");
+ teamArt.setSoleAttributeFromString(AtsAttributeTypes.Description, "description 2");
+ teamArt.setSoleAttributeFromString(AtsAttributeTypes.ChangeType, ChangeType.Problem.name());
+ teamArt.setSoleAttributeFromString(AtsAttributeTypes.PriorityType, PriorityType.Priority_2.getShortName());
+ teamArt.setSoleAttributeFromString(AtsAttributeTypes.ValidationRequired, "yes");
+ teamArt.addRelation(AtsRelationTypes.TeamWorkflowTargetedForVersion_Version, getVersion256());
+ teamArt.persist(transaction);
+ transaction.execute();
+
+ // Make changes and persist
+ teamArt.setSoleAttributeFromString(AtsAttributeTypes.Description, "description 3");
+ teamArt.setSoleAttributeFromString(AtsAttributeTypes.ProposedResolution, "this is resolution");
+ teamArt.persist();
+
+ // Make changes and persist
+ teamArt.deleteRelation(AtsRelationTypes.TeamWorkflowTargetedForVersion_Version, getVersion256());
+ teamArt.addRelation(AtsRelationTypes.TeamWorkflowTargetedForVersion_Version, getVersion257());
+ teamArt.setSoleAttributeFromString(AtsAttributeTypes.ValidationRequired, "no");
+ teamArt.persist();
+
+ // Make changes and persist
+ transaction = new SkynetTransaction(AtsUtil.getAtsBranch(), "Remote Event Test");
+ teamArt.deleteAttributes(AtsAttributeTypes.ValidationRequired);
+ teamArt.deleteAttributes(AtsAttributeTypes.Resolution);
+ teamArt.setSoleAttributeFromString(AtsAttributeTypes.Description, "description 4");
+ teamArt.setSoleAttributeFromString(AtsAttributeTypes.ChangeType, ChangeType.Support.name());
+ teamArt.setSoleAttributeFromString(AtsAttributeTypes.PriorityType, PriorityType.Priority_3.getShortName());
+ teamArt.setRelations(AtsRelationTypes.TeamWorkflowTargetedForVersion_Version,
+ Collections.singleton(getVersion258()));
+ teamArt.persist(transaction);
+ transaction.execute();
+
+ // Make changes and persist
+ teamArt.setSoleAttributeFromString(AtsAttributeTypes.ValidationRequired, "yes");
+ teamArt.persist();
+
+ // Make changes and transition
+ transaction = new SkynetTransaction(AtsUtil.getAtsBranch(), "Remote Event Test");
+ teamArt.setRelations(AtsRelationTypes.TeamWorkflowTargetedForVersion_Version,
+ Collections.singleton(getVersion257()));
+ teamArt.setSoleAttributeFromString(AtsAttributeTypes.ValidationRequired, "no");
+ teamArt.persist(transaction);
+ transaction.execute();
+
+ transaction = new SkynetTransaction(AtsUtil.getAtsBranch(), "Remote Event Test");
+ teamArt.transition(DefaultTeamState.Analyze.name(), Collections.singleton(UserManager.getUser()), transaction,
+ TransitionOption.Persist);
+ teamArt.persist(transaction);
+ transaction.execute();
+
+ validateActionAtEnd(actionArt);
+
+ // Wait for destination client to end
+ if (!MessageDialog.openConfirm(
+ Displays.getActiveShell(),
+ getName(),
+ "Launch \"Destination Client - End\" test, enter \"" + actionArt.getName().replaceFirst("tt ", "") + "\" and press Ok")) {
+ return;
+ }
+
+ resultData.report(title);
+ }
+
+ private VersionArtifact getVersion256() throws OseeCoreException {
+ return (VersionArtifact) ArtifactQuery.getArtifactFromTypeAndName(AtsArtifactTypes.Version, "2.5.6",
+ AtsUtil.getAtsBranch());
+ }
+
+ private VersionArtifact getVersion257() throws OseeCoreException {
+ return (VersionArtifact) ArtifactQuery.getArtifactFromTypeAndName(AtsArtifactTypes.Version, "2.5.7",
+ AtsUtil.getAtsBranch());
+ }
+
+ private VersionArtifact getVersion258() throws OseeCoreException {
+ return (VersionArtifact) ArtifactQuery.getArtifactFromTypeAndName(AtsArtifactTypes.Version, "2.5.8",
+ AtsUtil.getAtsBranch());
+ }
+
+ private void validateActionAtStart(ActionArtifact actionArt) throws OseeCoreException {
+ resultData.log("\nValidating Start...");
+ // Ensure event service is connected
+ if (!OseeEventManager.isEventManagerConnected()) {
+ resultData.logError("Remote Event Service is not connected");
+ return;
+ }
+ resultData.log("Remote Event Service connected");
+
+ // Validate values
+ TeamWorkFlowArtifact teamArt = actionArt.getTeamWorkFlowArtifacts().iterator().next();
+ testEquals("Description", "description", teamArt.getSoleAttributeValue(AtsAttributeTypes.Description, null));
+ testEquals("Change Type", ChangeType.Improvement.name(),
+ teamArt.getSoleAttributeValue(AtsAttributeTypes.ChangeType, null));
+ testEquals("Priority", PriorityType.Priority_1.getShortName(),
+ teamArt.getSoleAttributeValue(AtsAttributeTypes.PriorityType, null));
+ }
+
+ private void validateActionAtEnd(ActionArtifact actionArt) throws OseeCoreException {
+ resultData.log("\nValidating End...");
+ // Ensure event service is connected
+ if (!OseeEventManager.isEventManagerConnected()) {
+ resultData.logError("Remote Event Service is not connected");
+ return;
+ }
+ resultData.log("Remote Event Service connected");
+
+ // Validate values
+ TeamWorkFlowArtifact teamArt = actionArt.getTeamWorkFlowArtifacts().iterator().next();
+ testEquals("Description", "description 4", teamArt.getSoleAttributeValue(AtsAttributeTypes.Description, null));
+ testEquals("Change Type", ChangeType.Support.name(),
+ teamArt.getSoleAttributeValue(AtsAttributeTypes.ChangeType, null));
+ testEquals("Priority", PriorityType.Priority_3.getShortName(),
+ teamArt.getSoleAttributeValue(AtsAttributeTypes.PriorityType, null));
+ testEquals("Validation Required", "false",
+ String.valueOf(teamArt.getSoleAttributeValue(AtsAttributeTypes.ValidationRequired, null)));
+ testEquals("Targeted Version",
+ (teamArt.getTargetedForVersion() != null ? teamArt.getTargetedForVersion().toString() : "not set"), "2.5.7");
+ testEquals("State", DefaultTeamState.Analyze.name(), teamArt.getStateMgr().getCurrentStateName());
+ }
+
+ private void testEquals(String name, Object expected, Object actual) {
+ if (!expected.equals(actual)) {
+ resultData.logError(String.format("Error: [%s] - expected [%s] actual[%s]", name, expected, actual));
+ } else {
+ resultData.log(String.format("Valid: [%s] - expected [%s] actual[%s]", name, expected, actual));
+ }
+ }
+
+ private void runDestinationTestStart(String ttNum) throws OseeCoreException {
+ String title = getName() + " - Destination Client Test - Start";
+ String actionTitle = "tt " + ttNum;
+ resultData.log("Running " + title);
+
+ ActionArtifact actionArt =
+ (ActionArtifact) ArtifactQuery.getArtifactFromTypeAndName(AtsArtifactTypes.Action, actionTitle,
+ AtsUtil.getAtsBranch());
+
+ if (actionArt == null) {
+ resultData.logError(String.format("Couldn't load Action named [%s]", actionTitle));
+ } else {
+ resultData.log("Loaded Action " + actionArt);
+ AtsUtil.openATSAction(actionArt, AtsOpenOption.OpenOneOrPopupSelect);
+ }
+ validateActionAtStart(actionArt);
+ resultData.report(title);
+ }
+
+ private void runDestinationTestEnd(String ttNum) throws OseeCoreException {
+ String title = getName() + " - Destination Client Test - End";
+ String actionTitle = "tt " + ttNum;
+ resultData.log("Running " + title);
+
+ ActionArtifact actionArt =
+ (ActionArtifact) ArtifactQuery.getArtifactFromTypeAndName(AtsArtifactTypes.Action, actionTitle,
+ AtsUtil.getAtsBranch());
+
+ if (actionArt == null) {
+ resultData.logError(String.format("Couldn't load Action named [%s]", actionTitle));
+ } else {
+ resultData.log("Loaded Action " + actionArt);
+ AtsUtil.openATSAction(actionArt, AtsOpenOption.OpenOneOrPopupSelect);
+ }
+ validateActionAtEnd(actionArt);
+ resultData.report(title);
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/BarChartExample.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/BarChartExample.java
index 1a7b502fae5..6b40fca82dc 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/BarChartExample.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/BarChartExample.java
@@ -1,168 +1,164 @@
-/*******************************************************************************
- * 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 java.util.ArrayList;
-import java.util.List;
-import org.eclipse.birt.chart.model.Chart;
-import org.eclipse.birt.chart.model.ChartWithAxes;
-import org.eclipse.birt.chart.model.attribute.Anchor;
-import org.eclipse.birt.chart.model.attribute.AxisType;
-import org.eclipse.birt.chart.model.attribute.ChartDimension;
-import org.eclipse.birt.chart.model.attribute.IntersectionType;
-import org.eclipse.birt.chart.model.attribute.Position;
-import org.eclipse.birt.chart.model.attribute.TickStyle;
-import org.eclipse.birt.chart.model.attribute.impl.ColorDefinitionImpl;
-import org.eclipse.birt.chart.model.component.Axis;
-import org.eclipse.birt.chart.model.component.Series;
-import org.eclipse.birt.chart.model.component.impl.SeriesImpl;
-import org.eclipse.birt.chart.model.data.NumberDataSet;
-import org.eclipse.birt.chart.model.data.SeriesDefinition;
-import org.eclipse.birt.chart.model.data.TextDataSet;
-import org.eclipse.birt.chart.model.data.impl.NumberDataSetImpl;
-import org.eclipse.birt.chart.model.data.impl.SeriesDefinitionImpl;
-import org.eclipse.birt.chart.model.data.impl.TextDataSetImpl;
-import org.eclipse.birt.chart.model.impl.ChartWithAxesImpl;
-import org.eclipse.birt.chart.model.layout.Legend;
-import org.eclipse.birt.chart.model.layout.Plot;
-import org.eclipse.birt.chart.model.type.BarSeries;
-import org.eclipse.birt.chart.model.type.impl.BarSeriesImpl;
-import org.eclipse.osee.ats.AtsImage;
-import org.eclipse.osee.framework.jdk.core.util.AHTML;
-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.IResultsEditorProvider;
-import org.eclipse.osee.framework.ui.skynet.results.IResultsEditorTab;
-import org.eclipse.osee.framework.ui.skynet.results.ResultsEditor;
-import org.eclipse.osee.framework.ui.skynet.results.chart.ResultsEditorChartTab;
-import org.eclipse.osee.framework.ui.skynet.results.html.ResultsEditorHtmlTab;
-
-public class BarChartExample extends XNavigateItemAction {
-
- /**
- * @param parent
- * @param action
- */
- public BarChartExample(XNavigateItem parent) {
- super(parent, "Bar Chart Example", AtsImage.REPORT);
- }
-
- @Override
- public void run(TableLoadOption... tableLoadOptions) throws Exception {
- ResultsEditor.open(new IResultsEditorProvider() {
-
- @Override
- public String getEditorName() {
- return "Example Bar Chart";
- }
-
- @Override
- public List<IResultsEditorTab> getResultsEditorTabs() {
- List<IResultsEditorTab> tabs = new ArrayList<IResultsEditorTab>();
- tabs.add(new ResultsEditorChartTab("Chart", createMyChart()));
- tabs.add(getReportHtmlTab());
- return tabs;
- }
-
- });
- }
-
- private IResultsEditorTab getReportHtmlTab() {
- StringBuffer sb = new StringBuffer();
- sb.append("Example Bar Chart Data");
- sb.append(AHTML.beginMultiColumnTable(95, 1));
- sb.append(AHTML.addHeaderRowMultiColumnTable(new String[] {"Type", "Title", "Status"}));
- for (int x = 0; x < 3; x++) {
- sb.append(AHTML.addRowMultiColumnTable(new String[] {"Type " + x, "Title " + x, x + ""}));
- }
- sb.append(AHTML.endMultiColumnTable());
- return new ResultsEditorHtmlTab("Example Bar Chart Data", "Report", AHTML.simplePage(sb.toString()));
- }
-
- @SuppressWarnings({"deprecation"})
- public static Chart createMyChart() {
- // bart charts are based on charts that contain axes
- ChartWithAxes cwaBar = ChartWithAxesImpl.create();
- cwaBar.getBlock().setBackground(ColorDefinitionImpl.WHITE());
- cwaBar.getBlock().getOutline().setVisible(true);
- cwaBar.setDimension(ChartDimension.TWO_DIMENSIONAL_WITH_DEPTH_LITERAL);
-
- // customize the plot
- Plot p = cwaBar.getPlot();
- p.getClientArea().setBackground(ColorDefinitionImpl.create(255, 255, 225));
- p.getOutline().setVisible(false);
-
- cwaBar.getTitle().getLabel().getCaption().setValue("Example Bar Chart");
-
- // customize the legend
- Legend lg = cwaBar.getLegend();
- lg.getText().getFont().setSize(16);
- lg.getInsets().set(10, 5, 0, 0);
- lg.setAnchor(Anchor.NORTH_LITERAL);
-
- // customize the X-axis
- Axis xAxisPrimary = cwaBar.getPrimaryBaseAxes()[0];
- xAxisPrimary.setType(AxisType.TEXT_LITERAL);
- xAxisPrimary.getMajorGrid().setTickStyle(TickStyle.BELOW_LITERAL);
- xAxisPrimary.getOrigin().setType(IntersectionType.VALUE_LITERAL);
- xAxisPrimary.getTitle().setVisible(false);
-
- // customize the Y-axis
- Axis yAxisPrimary = cwaBar.getPrimaryOrthogonalAxis(xAxisPrimary);
- yAxisPrimary.getMajorGrid().setTickStyle(TickStyle.LEFT_LITERAL);
- yAxisPrimary.setType(AxisType.LINEAR_LITERAL);
- yAxisPrimary.getLabel().getCaption().getFont().setRotation(90);
-
- // initialize a collection with the X-series data
- java.util.Vector<String> vs = new java.util.Vector<String>();
- vs.add("zero");
- vs.add("one");
- vs.add("two");
-
- TextDataSet categoryValues = TextDataSetImpl.create(vs);
-
- // initialize a collection with the Y-series data
- ArrayList<Double> vn1 = new ArrayList<Double>();
- vn1.add(new Double(25));
- vn1.add(new Double(35));
- vn1.add(new Double(-45));
-
- NumberDataSet orthoValues1 = NumberDataSetImpl.create(vn1);
-
- // create the category base series
- Series seCategory = SeriesImpl.create();
- seCategory.setDataSet(categoryValues);
-
- // create the value orthogonal series
- BarSeries bs1 = (BarSeries) BarSeriesImpl.create();
- bs1.setSeriesIdentifier("My Bar Series");
- bs1.setDataSet(orthoValues1);
- bs1.setRiserOutline(null);
- bs1.getLabel().setVisible(true);
- bs1.setLabelPosition(Position.INSIDE_LITERAL);
-
- // wrap the base series in the X-axis series definition
- SeriesDefinition sdX = SeriesDefinitionImpl.create();
- sdX.getSeriesPalette().update(0); // set the colors in the palette
- xAxisPrimary.getSeriesDefinitions().add(sdX);
- sdX.getSeries().add(seCategory);
-
- // wrap the orthogonal series in the X-axis series definition
- SeriesDefinition sdY = SeriesDefinitionImpl.create();
- sdY.getSeriesPalette().update(1); // set the color in the palette
- yAxisPrimary.getSeriesDefinitions().add(sdY);
- sdY.getSeries().add(bs1);
-
- return cwaBar;
- }
-
-}
+/*******************************************************************************
+ * 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 java.util.ArrayList;
+import java.util.List;
+import org.eclipse.birt.chart.model.Chart;
+import org.eclipse.birt.chart.model.ChartWithAxes;
+import org.eclipse.birt.chart.model.attribute.Anchor;
+import org.eclipse.birt.chart.model.attribute.AxisType;
+import org.eclipse.birt.chart.model.attribute.ChartDimension;
+import org.eclipse.birt.chart.model.attribute.IntersectionType;
+import org.eclipse.birt.chart.model.attribute.Position;
+import org.eclipse.birt.chart.model.attribute.TickStyle;
+import org.eclipse.birt.chart.model.attribute.impl.ColorDefinitionImpl;
+import org.eclipse.birt.chart.model.component.Axis;
+import org.eclipse.birt.chart.model.component.Series;
+import org.eclipse.birt.chart.model.component.impl.SeriesImpl;
+import org.eclipse.birt.chart.model.data.NumberDataSet;
+import org.eclipse.birt.chart.model.data.SeriesDefinition;
+import org.eclipse.birt.chart.model.data.TextDataSet;
+import org.eclipse.birt.chart.model.data.impl.NumberDataSetImpl;
+import org.eclipse.birt.chart.model.data.impl.SeriesDefinitionImpl;
+import org.eclipse.birt.chart.model.data.impl.TextDataSetImpl;
+import org.eclipse.birt.chart.model.impl.ChartWithAxesImpl;
+import org.eclipse.birt.chart.model.layout.Legend;
+import org.eclipse.birt.chart.model.layout.Plot;
+import org.eclipse.birt.chart.model.type.BarSeries;
+import org.eclipse.birt.chart.model.type.impl.BarSeriesImpl;
+import org.eclipse.osee.ats.AtsImage;
+import org.eclipse.osee.framework.jdk.core.util.AHTML;
+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.IResultsEditorProvider;
+import org.eclipse.osee.framework.ui.skynet.results.IResultsEditorTab;
+import org.eclipse.osee.framework.ui.skynet.results.ResultsEditor;
+import org.eclipse.osee.framework.ui.skynet.results.chart.ResultsEditorChartTab;
+import org.eclipse.osee.framework.ui.skynet.results.html.ResultsEditorHtmlTab;
+
+public class BarChartExample extends XNavigateItemAction {
+
+ public BarChartExample(XNavigateItem parent) {
+ super(parent, "Bar Chart Example", AtsImage.REPORT);
+ }
+
+ @Override
+ public void run(TableLoadOption... tableLoadOptions) throws Exception {
+ ResultsEditor.open(new IResultsEditorProvider() {
+
+ @Override
+ public String getEditorName() {
+ return "Example Bar Chart";
+ }
+
+ @Override
+ public List<IResultsEditorTab> getResultsEditorTabs() {
+ List<IResultsEditorTab> tabs = new ArrayList<IResultsEditorTab>();
+ tabs.add(new ResultsEditorChartTab("Chart", createMyChart()));
+ tabs.add(getReportHtmlTab());
+ return tabs;
+ }
+
+ });
+ }
+
+ private IResultsEditorTab getReportHtmlTab() {
+ StringBuffer sb = new StringBuffer();
+ sb.append("Example Bar Chart Data");
+ sb.append(AHTML.beginMultiColumnTable(95, 1));
+ sb.append(AHTML.addHeaderRowMultiColumnTable(new String[] {"Type", "Title", "Status"}));
+ for (int x = 0; x < 3; x++) {
+ sb.append(AHTML.addRowMultiColumnTable(new String[] {"Type " + x, "Title " + x, x + ""}));
+ }
+ sb.append(AHTML.endMultiColumnTable());
+ return new ResultsEditorHtmlTab("Example Bar Chart Data", "Report", AHTML.simplePage(sb.toString()));
+ }
+
+ @SuppressWarnings({"deprecation"})
+ public static Chart createMyChart() {
+ // bart charts are based on charts that contain axes
+ ChartWithAxes cwaBar = ChartWithAxesImpl.create();
+ cwaBar.getBlock().setBackground(ColorDefinitionImpl.WHITE());
+ cwaBar.getBlock().getOutline().setVisible(true);
+ cwaBar.setDimension(ChartDimension.TWO_DIMENSIONAL_WITH_DEPTH_LITERAL);
+
+ // customize the plot
+ Plot p = cwaBar.getPlot();
+ p.getClientArea().setBackground(ColorDefinitionImpl.create(255, 255, 225));
+ p.getOutline().setVisible(false);
+
+ cwaBar.getTitle().getLabel().getCaption().setValue("Example Bar Chart");
+
+ // customize the legend
+ Legend lg = cwaBar.getLegend();
+ lg.getText().getFont().setSize(16);
+ lg.getInsets().set(10, 5, 0, 0);
+ lg.setAnchor(Anchor.NORTH_LITERAL);
+
+ // customize the X-axis
+ Axis xAxisPrimary = cwaBar.getPrimaryBaseAxes()[0];
+ xAxisPrimary.setType(AxisType.TEXT_LITERAL);
+ xAxisPrimary.getMajorGrid().setTickStyle(TickStyle.BELOW_LITERAL);
+ xAxisPrimary.getOrigin().setType(IntersectionType.VALUE_LITERAL);
+ xAxisPrimary.getTitle().setVisible(false);
+
+ // customize the Y-axis
+ Axis yAxisPrimary = cwaBar.getPrimaryOrthogonalAxis(xAxisPrimary);
+ yAxisPrimary.getMajorGrid().setTickStyle(TickStyle.LEFT_LITERAL);
+ yAxisPrimary.setType(AxisType.LINEAR_LITERAL);
+ yAxisPrimary.getLabel().getCaption().getFont().setRotation(90);
+
+ // initialize a collection with the X-series data
+ java.util.Vector<String> vs = new java.util.Vector<String>();
+ vs.add("zero");
+ vs.add("one");
+ vs.add("two");
+
+ TextDataSet categoryValues = TextDataSetImpl.create(vs);
+
+ // initialize a collection with the Y-series data
+ ArrayList<Double> vn1 = new ArrayList<Double>();
+ vn1.add(new Double(25));
+ vn1.add(new Double(35));
+ vn1.add(new Double(-45));
+
+ NumberDataSet orthoValues1 = NumberDataSetImpl.create(vn1);
+
+ // create the category base series
+ Series seCategory = SeriesImpl.create();
+ seCategory.setDataSet(categoryValues);
+
+ // create the value orthogonal series
+ BarSeries bs1 = (BarSeries) BarSeriesImpl.create();
+ bs1.setSeriesIdentifier("My Bar Series");
+ bs1.setDataSet(orthoValues1);
+ bs1.setRiserOutline(null);
+ bs1.getLabel().setVisible(true);
+ bs1.setLabelPosition(Position.INSIDE_LITERAL);
+
+ // wrap the base series in the X-axis series definition
+ SeriesDefinition sdX = SeriesDefinitionImpl.create();
+ sdX.getSeriesPalette().update(0); // set the colors in the palette
+ xAxisPrimary.getSeriesDefinitions().add(sdX);
+ sdX.getSeries().add(seCategory);
+
+ // wrap the orthogonal series in the X-axis series definition
+ SeriesDefinition sdY = SeriesDefinitionImpl.create();
+ sdY.getSeriesPalette().update(1); // set the color in the palette
+ yAxisPrimary.getSeriesDefinitions().add(sdY);
+ sdY.getSeries().add(bs1);
+
+ return cwaBar;
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/CreateNewVersionItem.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/CreateNewVersionItem.java
index 3450b159ad6..829a222d696 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/CreateNewVersionItem.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/CreateNewVersionItem.java
@@ -43,7 +43,6 @@ public class CreateNewVersionItem extends XNavigateItemAction {
private final TeamDefinitionArtifact teamDefHoldingVersions;
/**
- * @param parent
* @param teamDefHoldingVersions Team Definition Artifact that is related to versions or null for popup selection
*/
public CreateNewVersionItem(XNavigateItem parent, TeamDefinitionArtifact teamDefHoldingVersions) {
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/DisplayCurrentOseeEventListeners.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/DisplayCurrentOseeEventListeners.java
index f04b972394b..1ba6ee172c9 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/DisplayCurrentOseeEventListeners.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/DisplayCurrentOseeEventListeners.java
@@ -24,9 +24,6 @@ import org.eclipse.osee.framework.ui.skynet.results.html.XResultPage;
*/
public class DisplayCurrentOseeEventListeners extends XNavigateItemAction {
- /**
- * @param parent
- */
public DisplayCurrentOseeEventListeners(XNavigateItem parent) {
super(parent, "Display Current OSEE Event Listeners", PluginUiImage.ADMIN);
}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/EmailTeamsItem.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/EmailTeamsItem.java
index 59828cb0cec..42aebd52e34 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/EmailTeamsItem.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/EmailTeamsItem.java
@@ -43,7 +43,6 @@ public class EmailTeamsItem extends XNavigateItemAction {
};
/**
- * @param parent
* @param teamDefHoldingVersions Team Definition Artifact that is related to versions or null for popup selection
*/
public EmailTeamsItem(XNavigateItem parent, TeamDefinitionArtifact teamDef, MemberType... memberType) {
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/FirstTimeQualityMetricReportItem.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/FirstTimeQualityMetricReportItem.java
index 4820e8e75f0..2d9637c3026 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/FirstTimeQualityMetricReportItem.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/FirstTimeQualityMetricReportItem.java
@@ -1,195 +1,197 @@
-/*******************************************************************************
- * 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 java.util.Collection;
-import java.util.Date;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.osee.ats.AtsImage;
-import org.eclipse.osee.ats.artifact.TeamDefinitionArtifact;
-import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact;
-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.AtsPriority.PriorityType;
-import org.eclipse.osee.ats.util.AtsUtil;
-import org.eclipse.osee.ats.util.VersionMetrics;
-import org.eclipse.osee.ats.util.VersionTeamMetrics;
-import org.eclipse.osee.ats.util.widgets.dialog.TeamDefinitionDialog;
-import org.eclipse.osee.framework.core.enums.Active;
-import org.eclipse.osee.framework.core.exception.MultipleAttributesExist;
-import org.eclipse.osee.framework.core.exception.OseeCoreException;
-import org.eclipse.osee.framework.jdk.core.util.AHTML;
-import org.eclipse.osee.framework.logging.OseeLevel;
-import org.eclipse.osee.framework.logging.OseeLog;
-import org.eclipse.osee.framework.skynet.core.artifact.ArtifactTypeManager;
-import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
-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;
-import org.eclipse.osee.framework.ui.skynet.results.html.XResultPage.Manipulations;
-import org.eclipse.osee.framework.ui.skynet.util.ChangeType;
-import org.eclipse.osee.framework.ui.skynet.widgets.XDate;
-import org.eclipse.osee.framework.ui.swt.Displays;
-
-/**
- * @author Donald G. Dunne
- */
-public class FirstTimeQualityMetricReportItem extends XNavigateItemAction {
-
- private final TeamDefinitionArtifact teamDef;
- private final String teamDefName;
-
- public FirstTimeQualityMetricReportItem(XNavigateItem parent, String name, String teamDefName) {
- super(parent, name, AtsImage.REPORT);
- this.teamDefName = teamDefName;
- this.teamDef = null;
- }
-
- public FirstTimeQualityMetricReportItem(XNavigateItem parent) {
- this(parent, "First Time Quality Metric Report", null);
- }
-
- @Override
- public String getDescription() {
- return "This report will genereate a metric comprised of:\n\n# of priority 1 and 2 OSEE problem actions orginated between release\n__________________________________\n# of non-support actions in that released";
- }
-
- @Override
- public void run(TableLoadOption... tableLoadOptions) throws OseeCoreException {
- TeamDefinitionArtifact useTeamDef = teamDef;
- if (useTeamDef == null && teamDefName != null) {
- useTeamDef =
- (TeamDefinitionArtifact) AtsCacheManager.getSoleArtifactByName(
- ArtifactTypeManager.getType(AtsArtifactTypes.TeamDefinition), teamDefName);
- }
- if (useTeamDef == null) {
- TeamDefinitionDialog ld = new TeamDefinitionDialog("Select Team", "Select Team");
- ld.setTitle(getName());
- try {
- ld.setInput(TeamDefinitionArtifact.getTeamReleaseableDefinitions(Active.Both));
- } catch (MultipleAttributesExist ex) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
- }
- int result = ld.open();
- if (result == 0) {
- if (ld.getResult().length == 0) {
- AWorkbench.popup("ERROR", "You must select a team to operate against.");
- return;
- }
- useTeamDef = (TeamDefinitionArtifact) ld.getResult()[0];
- } else {
- return;
- }
- } else if (!MessageDialog.openConfirm(Displays.getActiveShell(), getName(), getName())) {
- return;
- }
-
- ReportJob job = new ReportJob(getName(), useTeamDef);
- job.setUser(true);
- job.setPriority(Job.LONG);
- job.schedule();
- }
-
- private static class ReportJob extends Job {
-
- private final TeamDefinitionArtifact teamDef;
-
- public ReportJob(String title, TeamDefinitionArtifact teamDef) {
- super(title);
- this.teamDef = teamDef;
- }
-
- @Override
- public IStatus run(IProgressMonitor monitor) {
- try {
- XResultData resultData = new XResultData();
- String html = getTeamWorkflowReport(getName(), teamDef, monitor);
- resultData.addRaw(html);
- resultData.report(getName(), Manipulations.RAW_HTML);
- } catch (Exception ex) {
- return new Status(IStatus.ERROR, AtsPlugin.PLUGIN_ID, -1, ex.toString(), ex);
- }
- monitor.done();
- return Status.OK_STATUS;
- }
- }
-
- private static String[] HEADER_STRINGS =
- new String[] {"Version", "StartDate", "RelDate", "Num 1 + 2 Orig During Next Release Cycle",
- "Num Non-Support Released", "Ratio Orig 1 and 2 Bugs/Number Released"};
-
- /**
- * Ratio of # of priority 1 and 2 OSEE problem actions (non-cancelled) that were orginated between a release and the
- * next release / # of non-support actions released in that release
- *
- * @param teamDef
- * @param monitor
- * @return report
- */
- public static String getTeamWorkflowReport(String title, TeamDefinitionArtifact teamDef, IProgressMonitor monitor) throws OseeCoreException {
- StringBuilder sb = new StringBuilder();
- sb.append(AHTML.heading(3, title));
- sb.append(AHTML.beginMultiColumnTable(100, 1));
- sb.append(AHTML.addRowSpanMultiColumnTable(
- "This report shows the ratio of 1+2 problem workflows created during next release cycle due to current release over the total non-support workflows during this release.",
- HEADER_STRINGS.length));
- sb.append(AHTML.addHeaderRowMultiColumnTable(HEADER_STRINGS));
- VersionTeamMetrics teamMet = new VersionTeamMetrics(teamDef);
- Collection<VersionMetrics> verMets = teamMet.getReleasedOrderedVersions();
- monitor.beginTask("Processing Versions", verMets.size());
- for (VersionMetrics verMet : verMets) {
- Date thisReleaseStartDate = verMet.getReleaseStartDate();
- Date thisReleaseEndDate = verMet.getVerArt().getReleaseDate();
- Date nextReleaseStartDate = null;
- Date nextReleaseEndDate = null;
- VersionMetrics nextVerMet = verMet.getNextVerMetViaReleaseDate();
- if (nextVerMet != null) {
- nextReleaseStartDate = nextVerMet.getReleaseStartDate();
- nextReleaseEndDate = nextVerMet.getVerArt().getReleaseDate();
- }
- Integer numOrigDurningNextReleaseCycle = 0;
- if (nextReleaseStartDate != null && nextReleaseEndDate != null) {
- Collection<TeamWorkFlowArtifact> arts =
- teamMet.getWorkflowsOriginatedBetween(nextReleaseStartDate, nextReleaseEndDate);
- for (TeamWorkFlowArtifact team : arts) {
- if (!team.isCancelled() && team.getChangeType() == ChangeType.Problem && (team.getPriority() == PriorityType.Priority_1 || team.getPriority() == PriorityType.Priority_2)) {
- numOrigDurningNextReleaseCycle++;
- }
- }
- }
- Integer numNonSupportReleased = null;
- if (thisReleaseEndDate != null) {
- numNonSupportReleased = 0;
- for (TeamWorkFlowArtifact team : verMet.getTeamWorkFlows(ChangeType.Problem, ChangeType.Improvement)) {
- if (!team.isCancelled()) {
- numNonSupportReleased++;
- }
- }
- }
- sb.append(AHTML.addRowMultiColumnTable(new String[] {
- verMet.getVerArt().getName(),
- XDate.getDateStr(thisReleaseStartDate, XDate.MMDDYY),
- XDate.getDateStr(thisReleaseEndDate, XDate.MMDDYY),
- numOrigDurningNextReleaseCycle == 0 ? "N/A" : String.valueOf(numOrigDurningNextReleaseCycle),
- numNonSupportReleased == null ? "N/A" : String.valueOf(numNonSupportReleased),
- numOrigDurningNextReleaseCycle == 0 || numNonSupportReleased == null || numNonSupportReleased == 0 ? "N/A" : AtsUtil.doubleToI18nString((double) numOrigDurningNextReleaseCycle / (double) numNonSupportReleased)}));
- monitor.worked(1);
- }
- sb.append(AHTML.endMultiColumnTable());
- return sb.toString();
- }
-}
+/*******************************************************************************
+ * 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 java.util.Collection;
+import java.util.Date;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.osee.ats.AtsImage;
+import org.eclipse.osee.ats.artifact.TeamDefinitionArtifact;
+import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact;
+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.AtsPriority.PriorityType;
+import org.eclipse.osee.ats.util.AtsUtil;
+import org.eclipse.osee.ats.util.VersionMetrics;
+import org.eclipse.osee.ats.util.VersionTeamMetrics;
+import org.eclipse.osee.ats.util.widgets.dialog.TeamDefinitionDialog;
+import org.eclipse.osee.framework.core.enums.Active;
+import org.eclipse.osee.framework.core.exception.MultipleAttributesExist;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.jdk.core.util.AHTML;
+import org.eclipse.osee.framework.logging.OseeLevel;
+import org.eclipse.osee.framework.logging.OseeLog;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactTypeManager;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
+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;
+import org.eclipse.osee.framework.ui.skynet.results.html.XResultPage.Manipulations;
+import org.eclipse.osee.framework.ui.skynet.util.ChangeType;
+import org.eclipse.osee.framework.ui.skynet.widgets.XDate;
+import org.eclipse.osee.framework.ui.swt.Displays;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class FirstTimeQualityMetricReportItem extends XNavigateItemAction {
+
+ private final TeamDefinitionArtifact teamDef;
+ private final String teamDefName;
+
+ public FirstTimeQualityMetricReportItem(XNavigateItem parent, String name, String teamDefName) {
+ super(parent, name, AtsImage.REPORT);
+ this.teamDefName = teamDefName;
+ this.teamDef = null;
+ }
+
+ public FirstTimeQualityMetricReportItem(XNavigateItem parent) {
+ this(parent, "First Time Quality Metric Report", null);
+ }
+
+ @Override
+ public String getDescription() {
+ return "This report will genereate a metric comprised of:\n\n# of priority 1 and 2 OSEE problem actions orginated between release\n__________________________________\n# of non-support actions in that released";
+ }
+
+ @Override
+ public void run(TableLoadOption... tableLoadOptions) throws OseeCoreException {
+ TeamDefinitionArtifact useTeamDef = teamDef;
+ if (useTeamDef == null && teamDefName != null) {
+ useTeamDef =
+ (TeamDefinitionArtifact) AtsCacheManager.getSoleArtifactByName(
+ ArtifactTypeManager.getType(AtsArtifactTypes.TeamDefinition), teamDefName);
+ }
+ if (useTeamDef == null) {
+ TeamDefinitionDialog ld = new TeamDefinitionDialog("Select Team", "Select Team");
+ ld.setTitle(getName());
+ try {
+ ld.setInput(TeamDefinitionArtifact.getTeamReleaseableDefinitions(Active.Both));
+ } catch (MultipleAttributesExist ex) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
+ }
+ int result = ld.open();
+ if (result == 0) {
+ if (ld.getResult().length == 0) {
+ AWorkbench.popup("ERROR", "You must select a team to operate against.");
+ return;
+ }
+ useTeamDef = (TeamDefinitionArtifact) ld.getResult()[0];
+ } else {
+ return;
+ }
+ } else if (!MessageDialog.openConfirm(Displays.getActiveShell(), getName(), getName())) {
+ return;
+ }
+
+ ReportJob job = new ReportJob(getName(), useTeamDef);
+ job.setUser(true);
+ job.setPriority(Job.LONG);
+ job.schedule();
+ }
+
+ private static class ReportJob extends Job {
+
+ private final TeamDefinitionArtifact teamDef;
+
+ public ReportJob(String title, TeamDefinitionArtifact teamDef) {
+ super(title);
+ this.teamDef = teamDef;
+ }
+
+ @Override
+ public IStatus run(IProgressMonitor monitor) {
+ try {
+ XResultData resultData = new XResultData();
+ String html = getTeamWorkflowReport(getName(), teamDef, monitor);
+ resultData.addRaw(html);
+ resultData.report(getName(), Manipulations.RAW_HTML);
+ } catch (Exception ex) {
+ return new Status(IStatus.ERROR, AtsPlugin.PLUGIN_ID, -1, ex.toString(), ex);
+ }
+ monitor.done();
+ return Status.OK_STATUS;
+ }
+ }
+
+ private static String[] HEADER_STRINGS = new String[] {
+ "Version",
+ "StartDate",
+ "RelDate",
+ "Num 1 + 2 Orig During Next Release Cycle",
+ "Num Non-Support Released",
+ "Ratio Orig 1 and 2 Bugs/Number Released"};
+
+ /**
+ * Ratio of # of priority 1 and 2 OSEE problem actions (non-cancelled) that were orginated between a release and the
+ * next release / # of non-support actions released in that release
+ *
+ * @return report
+ */
+ public static String getTeamWorkflowReport(String title, TeamDefinitionArtifact teamDef, IProgressMonitor monitor) throws OseeCoreException {
+ StringBuilder sb = new StringBuilder();
+ sb.append(AHTML.heading(3, title));
+ sb.append(AHTML.beginMultiColumnTable(100, 1));
+ sb.append(AHTML.addRowSpanMultiColumnTable(
+ "This report shows the ratio of 1+2 problem workflows created during next release cycle due to current release over the total non-support workflows during this release.",
+ HEADER_STRINGS.length));
+ sb.append(AHTML.addHeaderRowMultiColumnTable(HEADER_STRINGS));
+ VersionTeamMetrics teamMet = new VersionTeamMetrics(teamDef);
+ Collection<VersionMetrics> verMets = teamMet.getReleasedOrderedVersions();
+ monitor.beginTask("Processing Versions", verMets.size());
+ for (VersionMetrics verMet : verMets) {
+ Date thisReleaseStartDate = verMet.getReleaseStartDate();
+ Date thisReleaseEndDate = verMet.getVerArt().getReleaseDate();
+ Date nextReleaseStartDate = null;
+ Date nextReleaseEndDate = null;
+ VersionMetrics nextVerMet = verMet.getNextVerMetViaReleaseDate();
+ if (nextVerMet != null) {
+ nextReleaseStartDate = nextVerMet.getReleaseStartDate();
+ nextReleaseEndDate = nextVerMet.getVerArt().getReleaseDate();
+ }
+ Integer numOrigDurningNextReleaseCycle = 0;
+ if (nextReleaseStartDate != null && nextReleaseEndDate != null) {
+ Collection<TeamWorkFlowArtifact> arts =
+ teamMet.getWorkflowsOriginatedBetween(nextReleaseStartDate, nextReleaseEndDate);
+ for (TeamWorkFlowArtifact team : arts) {
+ if (!team.isCancelled() && team.getChangeType() == ChangeType.Problem && (team.getPriority() == PriorityType.Priority_1 || team.getPriority() == PriorityType.Priority_2)) {
+ numOrigDurningNextReleaseCycle++;
+ }
+ }
+ }
+ Integer numNonSupportReleased = null;
+ if (thisReleaseEndDate != null) {
+ numNonSupportReleased = 0;
+ for (TeamWorkFlowArtifact team : verMet.getTeamWorkFlows(ChangeType.Problem, ChangeType.Improvement)) {
+ if (!team.isCancelled()) {
+ numNonSupportReleased++;
+ }
+ }
+ }
+ sb.append(AHTML.addRowMultiColumnTable(new String[] {
+ verMet.getVerArt().getName(),
+ XDate.getDateStr(thisReleaseStartDate, XDate.MMDDYY),
+ XDate.getDateStr(thisReleaseEndDate, XDate.MMDDYY),
+ numOrigDurningNextReleaseCycle == 0 ? "N/A" : String.valueOf(numOrigDurningNextReleaseCycle),
+ numNonSupportReleased == null ? "N/A" : String.valueOf(numNonSupportReleased),
+ numOrigDurningNextReleaseCycle == 0 || numNonSupportReleased == null || numNonSupportReleased == 0 ? "N/A" : AtsUtil.doubleToI18nString((double) numOrigDurningNextReleaseCycle / (double) numNonSupportReleased)}));
+ monitor.worked(1);
+ }
+ sb.append(AHTML.endMultiColumnTable());
+ return sb.toString();
+ }
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/GenerateFullVersionReportItem.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/GenerateFullVersionReportItem.java
index 62142aa7d29..c3a3c314407 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/GenerateFullVersionReportItem.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/GenerateFullVersionReportItem.java
@@ -1,138 +1,138 @@
-/*******************************************************************************
- * 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.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.osee.ats.artifact.TeamDefinitionArtifact;
-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.VersionReportJob;
-import org.eclipse.osee.ats.util.widgets.dialog.TeamDefinitionDialog;
-import org.eclipse.osee.framework.core.enums.Active;
-import org.eclipse.osee.framework.core.exception.ArtifactDoesNotExist;
-import org.eclipse.osee.framework.core.exception.MultipleAttributesExist;
-import org.eclipse.osee.framework.core.exception.OseeCoreException;
-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.skynet.core.artifact.ArtifactTypeManager;
-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.FrameworkImage;
-import org.eclipse.osee.framework.ui.skynet.results.XResultData;
-import org.eclipse.osee.framework.ui.skynet.results.html.XResultPage.Manipulations;
-import org.eclipse.osee.framework.ui.skynet.widgets.XDate;
-import org.eclipse.osee.framework.ui.swt.Displays;
-
-/**
- * @author Donald G. Dunne
- */
-public class GenerateFullVersionReportItem extends XNavigateItemAction {
-
- private final TeamDefinitionArtifact teamDef;
- private final String teamDefName;
-
- public GenerateFullVersionReportItem(XNavigateItem parent) {
- super(parent, "Generate Full Version Report", FrameworkImage.VERSION);
- this.teamDefName = null;
- this.teamDef = null;
- }
-
- public GenerateFullVersionReportItem(XNavigateItem parent, TeamDefinitionArtifact teamDef) {
- super(parent, "Generate Full Version Report", FrameworkImage.VERSION);
- this.teamDefName = null;
- this.teamDef = teamDef;
- }
-
- public GenerateFullVersionReportItem(XNavigateItem parent, String teamDefName) {
- super(parent, "Generate Full Version Report", FrameworkImage.VERSION);
- this.teamDefName = teamDefName;
- this.teamDef = null;
- }
-
- @Override
- public void run(TableLoadOption... tableLoadOptions) throws OseeCoreException {
- TeamDefinitionArtifact teamDef = getTeamDefinition();
- if (teamDef == null) {
- return;
- }
- if (!MessageDialog.openConfirm(Displays.getActiveShell(), getName(), getName())) {
- return;
- }
- PublishReportJob job = new PublishReportJob(teamDef);
- job.setUser(true);
- job.setPriority(Job.LONG);
- job.schedule();
- }
-
- public TeamDefinitionArtifact getTeamDefinition() throws OseeCoreException {
- if (teamDef != null) {
- return teamDef;
- }
- if (Strings.isValid(teamDefName)) {
- try {
- TeamDefinitionArtifact teamDef =
- (TeamDefinitionArtifact) AtsCacheManager.getSoleArtifactByName(
- ArtifactTypeManager.getType(AtsArtifactTypes.TeamDefinition), teamDefName);
-
- if (teamDef != null) {
- return teamDef;
- }
- } catch (ArtifactDoesNotExist ex) {
- // do nothing, going to get team below
- }
- }
- TeamDefinitionDialog ld = new TeamDefinitionDialog("Select Team", "Select Team");
- try {
- ld.setInput(TeamDefinitionArtifact.getTeamReleaseableDefinitions(Active.Active));
- } catch (MultipleAttributesExist ex) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
- }
- int result = ld.open();
- if (result == 0) {
- return (TeamDefinitionArtifact) ld.getResult()[0];
- }
- return null;
- }
-
- private static class PublishReportJob extends Job {
-
- private final TeamDefinitionArtifact teamDef;
-
- public PublishReportJob(TeamDefinitionArtifact teamDef) {
- super(teamDef.getName() + " as of " + XDate.getDateNow());
- this.teamDef = teamDef;
- }
-
- @Override
- public IStatus run(IProgressMonitor monitor) {
- try {
- String html = VersionReportJob.getFullReleaseReport(teamDef, monitor);
- XResultData rd = new XResultData();
- rd.addRaw(html);
- rd.report(getName(), Manipulations.RAW_HTML);
- } catch (Exception ex) {
- return new Status(IStatus.ERROR, AtsPlugin.PLUGIN_ID, -1, ex.toString(), ex);
- }
-
- monitor.done();
- return Status.OK_STATUS;
- }
- }
-
-}
+/*******************************************************************************
+ * 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.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.osee.ats.artifact.TeamDefinitionArtifact;
+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.VersionReportJob;
+import org.eclipse.osee.ats.util.widgets.dialog.TeamDefinitionDialog;
+import org.eclipse.osee.framework.core.enums.Active;
+import org.eclipse.osee.framework.core.exception.ArtifactDoesNotExist;
+import org.eclipse.osee.framework.core.exception.MultipleAttributesExist;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+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.skynet.core.artifact.ArtifactTypeManager;
+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.FrameworkImage;
+import org.eclipse.osee.framework.ui.skynet.results.XResultData;
+import org.eclipse.osee.framework.ui.skynet.results.html.XResultPage.Manipulations;
+import org.eclipse.osee.framework.ui.skynet.widgets.XDate;
+import org.eclipse.osee.framework.ui.swt.Displays;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class GenerateFullVersionReportItem extends XNavigateItemAction {
+
+ private final TeamDefinitionArtifact teamDef;
+ private final String teamDefName;
+
+ public GenerateFullVersionReportItem(XNavigateItem parent) {
+ super(parent, "Generate Full Version Report", FrameworkImage.VERSION);
+ this.teamDefName = null;
+ this.teamDef = null;
+ }
+
+ public GenerateFullVersionReportItem(XNavigateItem parent, TeamDefinitionArtifact teamDef) {
+ super(parent, "Generate Full Version Report", FrameworkImage.VERSION);
+ this.teamDefName = null;
+ this.teamDef = teamDef;
+ }
+
+ public GenerateFullVersionReportItem(XNavigateItem parent, String teamDefName) {
+ super(parent, "Generate Full Version Report", FrameworkImage.VERSION);
+ this.teamDefName = teamDefName;
+ this.teamDef = null;
+ }
+
+ @Override
+ public void run(TableLoadOption... tableLoadOptions) throws OseeCoreException {
+ TeamDefinitionArtifact teamDef = getTeamDefinition();
+ if (teamDef == null) {
+ return;
+ }
+ if (!MessageDialog.openConfirm(Displays.getActiveShell(), getName(), getName())) {
+ return;
+ }
+ PublishReportJob job = new PublishReportJob(teamDef);
+ job.setUser(true);
+ job.setPriority(Job.LONG);
+ job.schedule();
+ }
+
+ public TeamDefinitionArtifact getTeamDefinition() throws OseeCoreException {
+ if (teamDef != null) {
+ return teamDef;
+ }
+ if (Strings.isValid(teamDefName)) {
+ try {
+ TeamDefinitionArtifact teamDef =
+ (TeamDefinitionArtifact) AtsCacheManager.getSoleArtifactByName(
+ ArtifactTypeManager.getType(AtsArtifactTypes.TeamDefinition), teamDefName);
+
+ if (teamDef != null) {
+ return teamDef;
+ }
+ } catch (ArtifactDoesNotExist ex) {
+ // do nothing, going to get team below
+ }
+ }
+ TeamDefinitionDialog ld = new TeamDefinitionDialog("Select Team", "Select Team");
+ try {
+ ld.setInput(TeamDefinitionArtifact.getTeamReleaseableDefinitions(Active.Active));
+ } catch (MultipleAttributesExist ex) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
+ }
+ int result = ld.open();
+ if (result == 0) {
+ return (TeamDefinitionArtifact) ld.getResult()[0];
+ }
+ return null;
+ }
+
+ private static class PublishReportJob extends Job {
+
+ private final TeamDefinitionArtifact teamDef;
+
+ public PublishReportJob(TeamDefinitionArtifact teamDef) {
+ super(teamDef.getName() + " as of " + XDate.getDateNow());
+ this.teamDef = teamDef;
+ }
+
+ @Override
+ public IStatus run(IProgressMonitor monitor) {
+ try {
+ String html = VersionReportJob.getFullReleaseReport(teamDef, monitor);
+ XResultData rd = new XResultData();
+ rd.addRaw(html);
+ rd.report(getName(), Manipulations.RAW_HTML);
+ } catch (Exception ex) {
+ return new Status(IStatus.ERROR, AtsPlugin.PLUGIN_ID, -1, ex.toString(), ex);
+ }
+
+ monitor.done();
+ return Status.OK_STATUS;
+ }
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/GenerateGuid.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/GenerateGuid.java
index 05b4902d3fd..58e95ea716d 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/GenerateGuid.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/GenerateGuid.java
@@ -1,35 +1,35 @@
-/*******************************************************************************
- * 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.framework.jdk.core.util.GUID;
-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 GenerateGuid extends XNavigateItemAction {
-
- public GenerateGuid(XNavigateItem parent) {
- super(parent, "Generate Guid", AtsImage.REPORT);
- }
-
- @Override
- public void run(TableLoadOption... tableLoadOptions) throws Exception {
- XResultData resultData = new XResultData();
- for (int x = 0; x < 20; x++) {
- resultData.log(GUID.create());
- }
- resultData.report("GUIDs");
- }
-
-}
+/*******************************************************************************
+ * 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.framework.jdk.core.util.GUID;
+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 GenerateGuid extends XNavigateItemAction {
+
+ public GenerateGuid(XNavigateItem parent) {
+ super(parent, "Generate Guid", AtsImage.REPORT);
+ }
+
+ @Override
+ public void run(TableLoadOption... tableLoadOptions) throws Exception {
+ XResultData resultData = new XResultData();
+ for (int x = 0; x < 20; x++) {
+ resultData.log(GUID.create());
+ }
+ resultData.report("GUIDs");
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/GenerateReviewParticipationReport.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/GenerateReviewParticipationReport.java
index fa6ee755330..9b209257a12 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/GenerateReviewParticipationReport.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/GenerateReviewParticipationReport.java
@@ -1,116 +1,116 @@
-/*******************************************************************************
- * 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 java.util.Collection;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.osee.ats.AtsImage;
-import org.eclipse.osee.ats.internal.AtsPlugin;
-import org.eclipse.osee.ats.util.xviewer.column.XViewerReviewRoleColumn;
-import org.eclipse.osee.ats.util.xviewer.column.XViewerSmaCompletedDateColumn;
-import org.eclipse.osee.ats.util.xviewer.column.XViewerSmaStateColumn;
-import org.eclipse.osee.ats.world.WorldXViewerFactory;
-import org.eclipse.osee.ats.world.search.MyReviewWorkflowItem;
-import org.eclipse.osee.ats.world.search.MyReviewWorkflowItem.ReviewState;
-import org.eclipse.osee.framework.core.exception.OseeCoreException;
-import org.eclipse.osee.framework.skynet.core.User;
-import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
-import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
-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.artifact.massEditor.MassArtifactEditor;
-import org.eclipse.osee.framework.ui.skynet.artifact.massEditor.MassArtifactEditorInput;
-import org.eclipse.osee.framework.ui.skynet.widgets.XDate;
-import org.eclipse.osee.framework.ui.skynet.widgets.dialog.UserListDialog;
-import org.eclipse.osee.framework.ui.skynet.widgets.xviewer.skynet.SkynetXViewerFactory;
-import org.eclipse.osee.framework.ui.skynet.widgets.xviewer.skynet.column.XViewerArtifactNameColumn;
-import org.eclipse.osee.framework.ui.skynet.widgets.xviewer.skynet.column.XViewerArtifactTypeColumn;
-import org.eclipse.osee.framework.ui.skynet.widgets.xviewer.skynet.column.XViewerGuidColumn;
-import org.eclipse.osee.framework.ui.skynet.widgets.xviewer.skynet.column.XViewerHridColumn;
-import org.eclipse.osee.framework.ui.swt.Displays;
-
-/**
- * Donald G. Dunne
- */
-public class GenerateReviewParticipationReport extends XNavigateItemAction {
-
- private static final String MASS_XVIEWER_CUSTOMIZE_NAMESPACE = "org.eclipse.osee.ats.ReviewParticipationReport";
-
- public GenerateReviewParticipationReport(XNavigateItem parent) {
- super(parent, "Generate Review Participation Report", AtsImage.REPORT);
- }
-
- @Override
- public void run(TableLoadOption... tableLoadOptions) throws OseeCoreException {
- UserListDialog ld = new UserListDialog(Displays.getActiveShell());
- int result = ld.open();
- if (result == 0) {
- if (ld.getResult().length == 0) {
- AWorkbench.popup("ERROR", "Must select user");
- return;
- }
- User selectedUser = ld.getSelection();
- ParticipationReportJob job =
- new ParticipationReportJob("Review Participation Report - " + selectedUser, selectedUser);
- job.setUser(true);
- job.setPriority(Job.LONG);
- job.schedule();
- }
- }
-
- private static class ParticipationReportJob extends Job {
-
- private final User user;
-
- public ParticipationReportJob(String title, User user) {
- super(title);
- this.user = user;
- }
-
- @Override
- public IStatus run(IProgressMonitor monitor) {
- try {
- MyReviewWorkflowItem srch = new MyReviewWorkflowItem("", user, ReviewState.All);
- Collection<Artifact> reviewArts = srch.performSearchGetResults();
- MassArtifactEditorInput input =
- new MassArtifactEditorInput(getName() + " as of " + XDate.getDateNow(), reviewArts,
- new ReviewParticipationXViewerFactory(user));
- MassArtifactEditor.editArtifacts(input);
- } catch (Exception ex) {
- return new Status(IStatus.ERROR, AtsPlugin.PLUGIN_ID, -1, ex.toString(), ex);
- }
- monitor.done();
- return Status.OK_STATUS;
- }
- }
-
- public static class ReviewParticipationXViewerFactory extends SkynetXViewerFactory {
-
- public ReviewParticipationXViewerFactory(User user) {
- super(MASS_XVIEWER_CUSTOMIZE_NAMESPACE);
- registerColumns(new XViewerArtifactTypeColumn(true));
- registerColumns(new XViewerHridColumn());
- registerColumns(WorldXViewerFactory.Legacy_PCR_Col);
- registerColumns(new XViewerSmaStateColumn());
- registerColumns(new XViewerSmaCompletedDateColumn("Completed"));
- registerColumns(new XViewerReviewRoleColumn(user));
- registerColumns(WorldXViewerFactory.Related_To_State_Col);
- registerColumns(new XViewerArtifactNameColumn(true));
- registerColumns(new XViewerGuidColumn(true));
- registerAllAttributeColumns();
- }
-
- }
-}
+/*******************************************************************************
+ * 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 java.util.Collection;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.osee.ats.AtsImage;
+import org.eclipse.osee.ats.internal.AtsPlugin;
+import org.eclipse.osee.ats.util.xviewer.column.XViewerReviewRoleColumn;
+import org.eclipse.osee.ats.util.xviewer.column.XViewerSmaCompletedDateColumn;
+import org.eclipse.osee.ats.util.xviewer.column.XViewerSmaStateColumn;
+import org.eclipse.osee.ats.world.WorldXViewerFactory;
+import org.eclipse.osee.ats.world.search.MyReviewWorkflowItem;
+import org.eclipse.osee.ats.world.search.MyReviewWorkflowItem.ReviewState;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.skynet.core.User;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
+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.artifact.massEditor.MassArtifactEditor;
+import org.eclipse.osee.framework.ui.skynet.artifact.massEditor.MassArtifactEditorInput;
+import org.eclipse.osee.framework.ui.skynet.widgets.XDate;
+import org.eclipse.osee.framework.ui.skynet.widgets.dialog.UserListDialog;
+import org.eclipse.osee.framework.ui.skynet.widgets.xviewer.skynet.SkynetXViewerFactory;
+import org.eclipse.osee.framework.ui.skynet.widgets.xviewer.skynet.column.XViewerArtifactNameColumn;
+import org.eclipse.osee.framework.ui.skynet.widgets.xviewer.skynet.column.XViewerArtifactTypeColumn;
+import org.eclipse.osee.framework.ui.skynet.widgets.xviewer.skynet.column.XViewerGuidColumn;
+import org.eclipse.osee.framework.ui.skynet.widgets.xviewer.skynet.column.XViewerHridColumn;
+import org.eclipse.osee.framework.ui.swt.Displays;
+
+/**
+ * Donald G. Dunne
+ */
+public class GenerateReviewParticipationReport extends XNavigateItemAction {
+
+ private static final String MASS_XVIEWER_CUSTOMIZE_NAMESPACE = "org.eclipse.osee.ats.ReviewParticipationReport";
+
+ public GenerateReviewParticipationReport(XNavigateItem parent) {
+ super(parent, "Generate Review Participation Report", AtsImage.REPORT);
+ }
+
+ @Override
+ public void run(TableLoadOption... tableLoadOptions) throws OseeCoreException {
+ UserListDialog ld = new UserListDialog(Displays.getActiveShell());
+ int result = ld.open();
+ if (result == 0) {
+ if (ld.getResult().length == 0) {
+ AWorkbench.popup("ERROR", "Must select user");
+ return;
+ }
+ User selectedUser = ld.getSelection();
+ ParticipationReportJob job =
+ new ParticipationReportJob("Review Participation Report - " + selectedUser, selectedUser);
+ job.setUser(true);
+ job.setPriority(Job.LONG);
+ job.schedule();
+ }
+ }
+
+ private static class ParticipationReportJob extends Job {
+
+ private final User user;
+
+ public ParticipationReportJob(String title, User user) {
+ super(title);
+ this.user = user;
+ }
+
+ @Override
+ public IStatus run(IProgressMonitor monitor) {
+ try {
+ MyReviewWorkflowItem srch = new MyReviewWorkflowItem("", user, ReviewState.All);
+ Collection<Artifact> reviewArts = srch.performSearchGetResults();
+ MassArtifactEditorInput input =
+ new MassArtifactEditorInput(getName() + " as of " + XDate.getDateNow(), reviewArts,
+ new ReviewParticipationXViewerFactory(user));
+ MassArtifactEditor.editArtifacts(input);
+ } catch (Exception ex) {
+ return new Status(IStatus.ERROR, AtsPlugin.PLUGIN_ID, -1, ex.toString(), ex);
+ }
+ monitor.done();
+ return Status.OK_STATUS;
+ }
+ }
+
+ public static class ReviewParticipationXViewerFactory extends SkynetXViewerFactory {
+
+ public ReviewParticipationXViewerFactory(User user) {
+ super(MASS_XVIEWER_CUSTOMIZE_NAMESPACE);
+ registerColumns(new XViewerArtifactTypeColumn(true));
+ registerColumns(new XViewerHridColumn());
+ registerColumns(WorldXViewerFactory.Legacy_PCR_Col);
+ registerColumns(new XViewerSmaStateColumn());
+ registerColumns(new XViewerSmaCompletedDateColumn("Completed"));
+ registerColumns(new XViewerReviewRoleColumn(user));
+ registerColumns(WorldXViewerFactory.Related_To_State_Col);
+ registerColumns(new XViewerArtifactNameColumn(true));
+ registerColumns(new XViewerGuidColumn(true));
+ registerAllAttributeColumns();
+ }
+
+ }
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/GoalSearchWorkflowSearchItem.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/GoalSearchWorkflowSearchItem.java
index e3d33a84ed9..35bea6bba66 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/GoalSearchWorkflowSearchItem.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/GoalSearchWorkflowSearchItem.java
@@ -1,192 +1,192 @@
-/*******************************************************************************
- * 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 java.util.Collection;
-import java.util.logging.Level;
-import org.eclipse.osee.ats.AtsImage;
-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.widgets.XHyperlabelTeamDefinitionSelection;
-import org.eclipse.osee.ats.world.WorldEditor;
-import org.eclipse.osee.ats.world.WorldEditorParameterSearchItem;
-import org.eclipse.osee.ats.world.search.GoalSearchItem;
-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.XCheckBox;
-import org.eclipse.osee.framework.ui.skynet.widgets.XMembersCombo;
-import org.eclipse.osee.framework.ui.skynet.widgets.XModifiedListener;
-import org.eclipse.osee.framework.ui.skynet.widgets.XWidget;
-import org.eclipse.osee.framework.ui.skynet.widgets.workflow.DynamicXWidgetLayout;
-import org.eclipse.osee.framework.ui.skynet.widgets.workflow.DynamicXWidgetLayoutData;
-import org.eclipse.osee.framework.ui.skynet.widgets.workflow.IDynamicWidgetLayoutListener;
-import org.eclipse.ui.forms.widgets.FormToolkit;
-
-/**
- * @author Donald G. Dunne
- */
-public class GoalSearchWorkflowSearchItem extends WorldEditorParameterSearchItem {
-
- private XHyperlabelTeamDefinitionSelection teamCombo = null;
- private XMembersCombo assigneeCombo;
- private XCheckBox includeCompletedCancelledCheckbox;
-
- public GoalSearchWorkflowSearchItem(String name) {
- super(name, AtsImage.GOAL);
- }
-
- public GoalSearchWorkflowSearchItem() {
- this("Goal Search");
- }
-
- public GoalSearchWorkflowSearchItem(GoalSearchWorkflowSearchItem goalWorkflowSearchItem) {
- super(goalWorkflowSearchItem, AtsImage.GOAL);
- }
-
- @Override
- public GoalSearchWorkflowSearchItem copy() {
- return new GoalSearchWorkflowSearchItem(this);
- }
-
- @Override
- public GoalSearchWorkflowSearchItem copyProvider() {
- return new GoalSearchWorkflowSearchItem(this);
- }
-
- @Override
- public String getParameterXWidgetXml() {
- return "<xWidgets>" +
- //
- "<XWidget xwidgetType=\"XHyperlabelTeamDefinitionSelection\" displayName=\"Team Definitions(s)\" horizontalLabel=\"true\"/>" +
- //
- "<XWidget xwidgetType=\"XMembersCombo\" displayName=\"Assignee\" horizontalLabel=\"true\"/>" +
- //
- "<XWidget xwidgetType=\"XCheckBox\" displayName=\"Include Completed/Cancelled\" defaultValue=\"false\" labelAfter=\"true\" horizontalLabel=\"true\"/>" +
- //
- "</xWidgets>";
- }
-
- @Override
- public Collection<? extends Artifact> performSearchGetResults(SearchType searchType) throws OseeCoreException {
- return new GoalSearchItem("", getSelectedTeamDefinitions(), isIncludeCompletedCancelledCheckbox(),
- getSelectedUser()).performSearchGetResults(false);
- }
-
- @Override
- public String getSelectedName(SearchType searchType) {
- StringBuffer sb = new StringBuffer();
- Collection<TeamDefinitionArtifact> teamDefs = getSelectedTeamDefinitions();
- if (teamDefs.size() > 0) {
- sb.append(" - Teams: " + org.eclipse.osee.framework.jdk.core.util.Collections.toString(",", teamDefs));
- }
- if (getSelectedUser() != null) {
- sb.append(" - Assignee: " + getSelectedUser());
- }
- if (isIncludeCompletedCancelledCheckbox()) {
- sb.append(" - Include Completed/Cancelled");
- }
- return Strings.truncate("Goals" + sb.toString(), WorldEditor.TITLE_MAX_LENGTH, true);
- }
-
- @Override
- public void widgetCreated(XWidget widget, FormToolkit toolkit, Artifact art, DynamicXWidgetLayout dynamicXWidgetLayout, XModifiedListener modListener, boolean isEditable) {
- if (widget.getLabel().equals("Assignee")) {
- assigneeCombo = (XMembersCombo) widget;
- }
- if (widget.getLabel().equals("Include Completed/Cancelled")) {
- includeCompletedCancelledCheckbox = (XCheckBox) widget;
- }
- if (widget.getLabel().equals("Team Definitions(s)")) {
- teamCombo = (XHyperlabelTeamDefinitionSelection) widget;
- }
- }
-
- private User getSelectedUser() {
- if (assigneeCombo == null) {
- return null;
- }
- return assigneeCombo.getUser();
- }
-
- public void setSelectedUser(User user) {
- if (assigneeCombo != null) {
- assigneeCombo.set(user);
- }
- }
-
- private boolean isIncludeCompletedCancelledCheckbox() {
- if (includeCompletedCancelledCheckbox == null) {
- return false;
- }
- return includeCompletedCancelledCheckbox.isSelected();
- }
-
- public void includeCompletedCancelledCheckbox(boolean selected) {
- if (includeCompletedCancelledCheckbox != null) {
- includeCompletedCancelledCheckbox.set(selected);
- }
- }
-
- public Collection<TeamDefinitionArtifact> getSelectedTeamDefinitions() {
- if (teamCombo == null) {
- return java.util.Collections.emptyList();
- }
- return teamCombo.getSelectedTeamDefintions();
- }
-
- public void setSelectedTeamDefinitions(Collection<TeamDefinitionArtifact> selectedTeamDefs) {
- if (teamCombo != null) {
- teamCombo.setSelectedTeamDefs(selectedTeamDefs);
- teamCombo.notifyXModifiedListeners();
- }
- }
-
- @Override
- public void createXWidgetLayoutData(DynamicXWidgetLayoutData layoutData, XWidget widget, FormToolkit toolkit, Artifact art, XModifiedListener modListener, boolean isEditable) {
- // do nothing
- }
-
- @Override
- public void widgetCreating(XWidget widget, FormToolkit toolkit, Artifact art, DynamicXWidgetLayout dynamicXWidgetLayout, XModifiedListener modListener, boolean isEditable) {
- // do nothing
- }
-
- @Override
- public Result isParameterSelectionValid() {
- try {
- User user = getSelectedUser();
- boolean includeCompleted = isIncludeCompletedCancelledCheckbox();
- if (user != null && includeCompleted) {
- return new Result("Assignee and Include Completed are not compatible selections.");
- }
- return Result.TrueResult;
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- return new Result("Exception: " + ex.getLocalizedMessage());
- }
- }
-
- @Override
- public IDynamicWidgetLayoutListener getDynamicWidgetLayoutListener() {
- return null;
- }
-
- @Override
- public VersionArtifact getTargetedVersionArtifact() {
- return null;
- }
-
-}
+/*******************************************************************************
+ * 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 java.util.Collection;
+import java.util.logging.Level;
+import org.eclipse.osee.ats.AtsImage;
+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.widgets.XHyperlabelTeamDefinitionSelection;
+import org.eclipse.osee.ats.world.WorldEditor;
+import org.eclipse.osee.ats.world.WorldEditorParameterSearchItem;
+import org.eclipse.osee.ats.world.search.GoalSearchItem;
+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.XCheckBox;
+import org.eclipse.osee.framework.ui.skynet.widgets.XMembersCombo;
+import org.eclipse.osee.framework.ui.skynet.widgets.XModifiedListener;
+import org.eclipse.osee.framework.ui.skynet.widgets.XWidget;
+import org.eclipse.osee.framework.ui.skynet.widgets.workflow.DynamicXWidgetLayout;
+import org.eclipse.osee.framework.ui.skynet.widgets.workflow.DynamicXWidgetLayoutData;
+import org.eclipse.osee.framework.ui.skynet.widgets.workflow.IDynamicWidgetLayoutListener;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class GoalSearchWorkflowSearchItem extends WorldEditorParameterSearchItem {
+
+ private XHyperlabelTeamDefinitionSelection teamCombo = null;
+ private XMembersCombo assigneeCombo;
+ private XCheckBox includeCompletedCancelledCheckbox;
+
+ public GoalSearchWorkflowSearchItem(String name) {
+ super(name, AtsImage.GOAL);
+ }
+
+ public GoalSearchWorkflowSearchItem() {
+ this("Goal Search");
+ }
+
+ public GoalSearchWorkflowSearchItem(GoalSearchWorkflowSearchItem goalWorkflowSearchItem) {
+ super(goalWorkflowSearchItem, AtsImage.GOAL);
+ }
+
+ @Override
+ public GoalSearchWorkflowSearchItem copy() {
+ return new GoalSearchWorkflowSearchItem(this);
+ }
+
+ @Override
+ public GoalSearchWorkflowSearchItem copyProvider() {
+ return new GoalSearchWorkflowSearchItem(this);
+ }
+
+ @Override
+ public String getParameterXWidgetXml() {
+ return "<xWidgets>" +
+ //
+ "<XWidget xwidgetType=\"XHyperlabelTeamDefinitionSelection\" displayName=\"Team Definitions(s)\" horizontalLabel=\"true\"/>" +
+ //
+ "<XWidget xwidgetType=\"XMembersCombo\" displayName=\"Assignee\" horizontalLabel=\"true\"/>" +
+ //
+ "<XWidget xwidgetType=\"XCheckBox\" displayName=\"Include Completed/Cancelled\" defaultValue=\"false\" labelAfter=\"true\" horizontalLabel=\"true\"/>" +
+ //
+ "</xWidgets>";
+ }
+
+ @Override
+ public Collection<? extends Artifact> performSearchGetResults(SearchType searchType) throws OseeCoreException {
+ return new GoalSearchItem("", getSelectedTeamDefinitions(), isIncludeCompletedCancelledCheckbox(),
+ getSelectedUser()).performSearchGetResults(false);
+ }
+
+ @Override
+ public String getSelectedName(SearchType searchType) {
+ StringBuffer sb = new StringBuffer();
+ Collection<TeamDefinitionArtifact> teamDefs = getSelectedTeamDefinitions();
+ if (teamDefs.size() > 0) {
+ sb.append(" - Teams: " + org.eclipse.osee.framework.jdk.core.util.Collections.toString(",", teamDefs));
+ }
+ if (getSelectedUser() != null) {
+ sb.append(" - Assignee: " + getSelectedUser());
+ }
+ if (isIncludeCompletedCancelledCheckbox()) {
+ sb.append(" - Include Completed/Cancelled");
+ }
+ return Strings.truncate("Goals" + sb.toString(), WorldEditor.TITLE_MAX_LENGTH, true);
+ }
+
+ @Override
+ public void widgetCreated(XWidget widget, FormToolkit toolkit, Artifact art, DynamicXWidgetLayout dynamicXWidgetLayout, XModifiedListener modListener, boolean isEditable) {
+ if (widget.getLabel().equals("Assignee")) {
+ assigneeCombo = (XMembersCombo) widget;
+ }
+ if (widget.getLabel().equals("Include Completed/Cancelled")) {
+ includeCompletedCancelledCheckbox = (XCheckBox) widget;
+ }
+ if (widget.getLabel().equals("Team Definitions(s)")) {
+ teamCombo = (XHyperlabelTeamDefinitionSelection) widget;
+ }
+ }
+
+ private User getSelectedUser() {
+ if (assigneeCombo == null) {
+ return null;
+ }
+ return assigneeCombo.getUser();
+ }
+
+ public void setSelectedUser(User user) {
+ if (assigneeCombo != null) {
+ assigneeCombo.set(user);
+ }
+ }
+
+ private boolean isIncludeCompletedCancelledCheckbox() {
+ if (includeCompletedCancelledCheckbox == null) {
+ return false;
+ }
+ return includeCompletedCancelledCheckbox.isSelected();
+ }
+
+ public void includeCompletedCancelledCheckbox(boolean selected) {
+ if (includeCompletedCancelledCheckbox != null) {
+ includeCompletedCancelledCheckbox.set(selected);
+ }
+ }
+
+ public Collection<TeamDefinitionArtifact> getSelectedTeamDefinitions() {
+ if (teamCombo == null) {
+ return java.util.Collections.emptyList();
+ }
+ return teamCombo.getSelectedTeamDefintions();
+ }
+
+ public void setSelectedTeamDefinitions(Collection<TeamDefinitionArtifact> selectedTeamDefs) {
+ if (teamCombo != null) {
+ teamCombo.setSelectedTeamDefs(selectedTeamDefs);
+ teamCombo.notifyXModifiedListeners();
+ }
+ }
+
+ @Override
+ public void createXWidgetLayoutData(DynamicXWidgetLayoutData layoutData, XWidget widget, FormToolkit toolkit, Artifact art, XModifiedListener modListener, boolean isEditable) {
+ // do nothing
+ }
+
+ @Override
+ public void widgetCreating(XWidget widget, FormToolkit toolkit, Artifact art, DynamicXWidgetLayout dynamicXWidgetLayout, XModifiedListener modListener, boolean isEditable) {
+ // do nothing
+ }
+
+ @Override
+ public Result isParameterSelectionValid() {
+ try {
+ User user = getSelectedUser();
+ boolean includeCompleted = isIncludeCompletedCancelledCheckbox();
+ if (user != null && includeCompleted) {
+ return new Result("Assignee and Include Completed are not compatible selections.");
+ }
+ return Result.TrueResult;
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ return new Result("Exception: " + ex.getLocalizedMessage());
+ }
+ }
+
+ @Override
+ public IDynamicWidgetLayoutListener getDynamicWidgetLayoutListener() {
+ return null;
+ }
+
+ @Override
+ public VersionArtifact getTargetedVersionArtifact() {
+ return null;
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/ImportActionsViaSpreadsheet.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/ImportActionsViaSpreadsheet.java
index c6257009a29..584140bf9ed 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/ImportActionsViaSpreadsheet.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/ImportActionsViaSpreadsheet.java
@@ -25,9 +25,6 @@ public class ImportActionsViaSpreadsheet extends XNavigateItemAction {
public static String strs[] = new String[] {};
- /**
- * @param parent
- */
public ImportActionsViaSpreadsheet(XNavigateItem parent) {
super(parent, "Import Actions Via Spreadsheet", FrameworkImage.IMPORT);
}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/NavigateView.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/NavigateView.java
index 7f29dab8591..970efdd09c3 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/NavigateView.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/NavigateView.java
@@ -1,304 +1,304 @@
-/*******************************************************************************
- * 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 java.util.ArrayList;
-import java.util.List;
-import java.util.logging.Level;
-import org.eclipse.core.runtime.IExtension;
-import org.eclipse.core.runtime.IExtensionPoint;
-import org.eclipse.core.runtime.IExtensionRegistry;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IRegistryEventListener;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.IJobChangeEvent;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.core.runtime.jobs.JobChangeAdapter;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.IToolBarManager;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.osee.ats.actions.MyFavoritesAction;
-import org.eclipse.osee.ats.actions.MyWorldAction;
-import org.eclipse.osee.ats.actions.NewAction;
-import org.eclipse.osee.ats.actions.NewGoal;
-import org.eclipse.osee.ats.actions.OpenChangeReportByIdAction;
-import org.eclipse.osee.ats.actions.OpenWorkflowByIdAction;
-import org.eclipse.osee.ats.actions.OpenWorldByIdAction;
-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.framework.core.client.ClientSessionManager;
-import org.eclipse.osee.framework.core.operation.CompositeOperation;
-import org.eclipse.osee.framework.core.operation.IOperation;
-import org.eclipse.osee.framework.core.operation.Operations;
-import org.eclipse.osee.framework.logging.OseeLog;
-import org.eclipse.osee.framework.plugin.core.IActionable;
-import org.eclipse.osee.framework.skynet.core.UserManager;
-import org.eclipse.osee.framework.ui.plugin.OseeUiActions;
-import org.eclipse.osee.framework.ui.plugin.xnavigate.XNavigateItem;
-import org.eclipse.osee.framework.ui.skynet.OseeContributionItem;
-import org.eclipse.osee.framework.ui.skynet.action.CollapseAllAction;
-import org.eclipse.osee.framework.ui.skynet.action.ExpandAllAction;
-import org.eclipse.osee.framework.ui.skynet.notify.OseeNotificationManager;
-import org.eclipse.osee.framework.ui.skynet.util.DbConnectionExceptionComposite;
-import org.eclipse.osee.framework.ui.skynet.util.LoadingComposite;
-import org.eclipse.osee.framework.ui.swt.Displays;
-import org.eclipse.osee.framework.ui.swt.Widgets;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.ui.IActionBars;
-import org.eclipse.ui.IMemento;
-import org.eclipse.ui.IViewSite;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.part.ViewPart;
-import org.eclipse.ui.progress.UIJob;
-
-/**
- * @author Donald G. Dunne
- */
-public class NavigateView extends ViewPart implements IActionable {
-
- public static final String VIEW_ID = "org.eclipse.osee.ats.navigate.NavigateView";
- public static final String HELP_CONTEXT_ID = "atsNavigator";
- private AtsNavigateComposite xNavComp;
- private final boolean includeCompleteCancelled = false;
- private Composite parent;
- private LoadingComposite loadingComposite;
-
- @Override
- public void createPartControl(Composite parent) {
- this.parent = parent;
- loadingComposite = new LoadingComposite(parent);
- refreshData();
- }
-
- public void refreshData() {
- List<IOperation> ops = new ArrayList<IOperation>();
- ops.add(AtsBulkLoad.getConfigLoadingOperation());
- ops.add(new AtsNavigateViewItemsOperation());
+/*******************************************************************************
+ * 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 java.util.ArrayList;
+import java.util.List;
+import java.util.logging.Level;
+import org.eclipse.core.runtime.IExtension;
+import org.eclipse.core.runtime.IExtensionPoint;
+import org.eclipse.core.runtime.IExtensionRegistry;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IRegistryEventListener;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.IJobChangeEvent;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.core.runtime.jobs.JobChangeAdapter;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.osee.ats.actions.MyFavoritesAction;
+import org.eclipse.osee.ats.actions.MyWorldAction;
+import org.eclipse.osee.ats.actions.NewAction;
+import org.eclipse.osee.ats.actions.NewGoal;
+import org.eclipse.osee.ats.actions.OpenChangeReportByIdAction;
+import org.eclipse.osee.ats.actions.OpenWorkflowByIdAction;
+import org.eclipse.osee.ats.actions.OpenWorldByIdAction;
+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.framework.core.client.ClientSessionManager;
+import org.eclipse.osee.framework.core.operation.CompositeOperation;
+import org.eclipse.osee.framework.core.operation.IOperation;
+import org.eclipse.osee.framework.core.operation.Operations;
+import org.eclipse.osee.framework.logging.OseeLog;
+import org.eclipse.osee.framework.plugin.core.IActionable;
+import org.eclipse.osee.framework.skynet.core.UserManager;
+import org.eclipse.osee.framework.ui.plugin.OseeUiActions;
+import org.eclipse.osee.framework.ui.plugin.xnavigate.XNavigateItem;
+import org.eclipse.osee.framework.ui.skynet.OseeContributionItem;
+import org.eclipse.osee.framework.ui.skynet.action.CollapseAllAction;
+import org.eclipse.osee.framework.ui.skynet.action.ExpandAllAction;
+import org.eclipse.osee.framework.ui.skynet.notify.OseeNotificationManager;
+import org.eclipse.osee.framework.ui.skynet.util.DbConnectionExceptionComposite;
+import org.eclipse.osee.framework.ui.skynet.util.LoadingComposite;
+import org.eclipse.osee.framework.ui.swt.Displays;
+import org.eclipse.osee.framework.ui.swt.Widgets;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.DisposeEvent;
+import org.eclipse.swt.events.DisposeListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.ui.IActionBars;
+import org.eclipse.ui.IMemento;
+import org.eclipse.ui.IViewSite;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.part.ViewPart;
+import org.eclipse.ui.progress.UIJob;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class NavigateView extends ViewPart implements IActionable {
+
+ public static final String VIEW_ID = "org.eclipse.osee.ats.navigate.NavigateView";
+ public static final String HELP_CONTEXT_ID = "atsNavigator";
+ private AtsNavigateComposite xNavComp;
+ private final boolean includeCompleteCancelled = false;
+ private Composite parent;
+ private LoadingComposite loadingComposite;
+
+ @Override
+ public void createPartControl(Composite parent) {
+ this.parent = parent;
+ loadingComposite = new LoadingComposite(parent);
+ refreshData();
+ }
+
+ public void refreshData() {
+ List<IOperation> ops = new ArrayList<IOperation>();
+ ops.add(AtsBulkLoad.getConfigLoadingOperation());
+ ops.add(new AtsNavigateViewItemsOperation());
IOperation operation = new CompositeOperation("Load ATS Navigator", AtsPlugin.PLUGIN_ID, ops);
- Operations.executeAsJob(operation, false, Job.LONG, new ReloadJobChangeAdapter(this));
- }
-
- private final class ReloadJobChangeAdapter extends JobChangeAdapter {
-
- private final NavigateView navView;
-
- private ReloadJobChangeAdapter(NavigateView navView) {
- this.navView = navView;
- }
-
- @Override
- public void scheduled(IJobChangeEvent event) {
- super.scheduled(event);
- }
-
- @Override
- public void aboutToRun(IJobChangeEvent event) {
- super.aboutToRun(event);
- }
-
- @Override
- public void done(IJobChangeEvent event) {
- super.done(event);
- Job job = new UIJob("Load ATS Navigator") {
-
- @Override
- public IStatus runInUIThread(IProgressMonitor monitor) {
- try {
- showBusy(false);
- if (!DbConnectionExceptionComposite.dbConnectionIsOk(parent)) {
- return new Status(IStatus.ERROR, AtsPlugin.PLUGIN_ID, "Navigate View - !dbConnectionIsOk");
- }
-
- if (Widgets.isAccessible(loadingComposite)) {
- loadingComposite.dispose();
- }
- xNavComp = new AtsNavigateComposite(AtsNavigateViewItems.getInstance(), parent, SWT.NONE);
-
- AtsPlugin.getInstance().setHelp(xNavComp, HELP_CONTEXT_ID, "org.eclipse.osee.ats.help.ui");
- createToolBar();
-
- // add search text box
- AtsQuickSearchComposite composite = new AtsQuickSearchComposite(xNavComp, SWT.NONE);
- composite.addDisposeListener(new DisposeListener() {
-
- @Override
- public void widgetDisposed(DisposeEvent e) {
- OseeNotificationManager.getInstance().sendNotifications();
- }
- });
-
- if (savedFilterStr != null) {
- xNavComp.getFilteredTree().getFilterControl().setText(savedFilterStr);
- }
- xNavComp.refresh();
- xNavComp.getFilteredTree().getFilterControl().setFocus();
-
- Label label = new Label(xNavComp, SWT.None);
- String str = getWhoAmI();
- if (AtsUtil.isAtsAdmin()) {
- str += " - Admin";
- }
- if (!str.equals("")) {
- if (AtsUtil.isAtsAdmin()) {
- label.setForeground(Displays.getSystemColor(SWT.COLOR_RED));
- } else {
- label.setForeground(Displays.getSystemColor(SWT.COLOR_BLUE));
- }
- }
- label.setText(str);
- label.setToolTipText(str);
- GridData gridData = new GridData(GridData.HORIZONTAL_ALIGN_CENTER | GridData.VERTICAL_ALIGN_CENTER);
- gridData.heightHint = 15;
- label.setLayoutData(gridData);
-
- OseeContributionItem.addTo(navView, false);
- xNavComp.layout();
-
- addExtensionPointListenerBecauseOfWorkspaceLoading();
-
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
- return Status.OK_STATUS;
- }
- };
- Operations.scheduleJob(job, false, Job.SHORT, null);
- }
- }
-
- private void addExtensionPointListenerBecauseOfWorkspaceLoading() {
- IExtensionRegistry extensionRegistry = Platform.getExtensionRegistry();
- extensionRegistry.addListener(new IRegistryEventListener() {
- @Override
- public void added(IExtension[] extensions) {
- xNavComp.refresh();
- }
-
- @Override
- public void added(IExtensionPoint[] extensionPoints) {
- xNavComp.refresh();
- }
-
- @Override
- public void removed(IExtension[] extensions) {
- xNavComp.refresh();
- }
-
- @Override
- public void removed(IExtensionPoint[] extensionPoints) {
- xNavComp.refresh();
- }
- }, "org.eclipse.osee.framework.ui.skynet.BlamOperation");
- }
-
- public boolean isIncludeCompleteCancelled() {
- return includeCompleteCancelled;
- }
-
- private String getWhoAmI() {
- try {
- String userName = UserManager.getUser().getName();
- return String.format("%s - %s:%s", userName, ClientSessionManager.getDataStoreName(),
- ClientSessionManager.getDataStoreLoginName());
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- return "Exception: " + ex.getLocalizedMessage();
- }
- }
-
- protected void createToolBar() {
- IToolBarManager toolbarManager = getViewSite().getActionBars().getToolBarManager();
- toolbarManager.add(new MyWorldAction());
- toolbarManager.add(new MyFavoritesAction());
- toolbarManager.add(new CollapseAllAction(xNavComp.getFilteredTree().getViewer()));
- toolbarManager.add(new ExpandAllAction(xNavComp.getFilteredTree().getViewer()));
- toolbarManager.add(new OpenChangeReportByIdAction());
- toolbarManager.add(new OpenWorldByIdAction());
- toolbarManager.add(new OpenWorkflowByIdAction());
- toolbarManager.add(new NewAction());
- getViewSite().getActionBars().updateActionBars();
-
- IActionBars bars = getViewSite().getActionBars();
- IMenuManager mm = bars.getMenuManager();
- mm.add(new NewAction());
- mm.add(new NewGoal());
- mm.add(OseeUiActions.createBugAction(AtsPlugin.getInstance(), this, VIEW_ID, "ATS Navigator"));
-
- toolbarManager.update(true);
- }
-
- public static NavigateView getNavigateView() {
- IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
- try {
- return (NavigateView) page.showView(NavigateView.VIEW_ID);
- } catch (PartInitException e1) {
- MessageDialog.openInformation(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), "Launch Error",
- "Couldn't Launch OSEE ATS NavigateView " + e1.getMessage());
- }
- return null;
- }
-
- @Override
- public String getActionDescription() {
- IStructuredSelection sel = (IStructuredSelection) xNavComp.getFilteredTree().getViewer().getSelection();
- if (sel.iterator().hasNext()) {
- return String.format("Currently Selected - %s", ((XNavigateItem) sel.iterator().next()).getName());
- }
- return "";
- }
-
- private static final String INPUT = "filter";
- private static final String FILTER_STR = "filterStr";
-
- @Override
- public void saveState(IMemento memento) {
- super.saveState(memento);
- memento = memento.createChild(INPUT);
-
- if (xNavComp != null && xNavComp.getFilteredTree().getFilterControl() != null && !xNavComp.getFilteredTree().isDisposed()) {
- String filterStr = xNavComp.getFilteredTree().getFilterControl().getText();
- memento.putString(FILTER_STR, filterStr);
- }
- }
- private String savedFilterStr = null;
-
- @Override
- public void init(IViewSite site, IMemento memento) throws PartInitException {
- super.init(site, memento);
- try {
- if (memento != null) {
- memento = memento.getChild(INPUT);
- if (memento != null) {
- savedFilterStr = memento.getString(FILTER_STR);
- }
- }
- } catch (Exception ex) {
+ Operations.executeAsJob(operation, false, Job.LONG, new ReloadJobChangeAdapter(this));
+ }
+
+ private final class ReloadJobChangeAdapter extends JobChangeAdapter {
+
+ private final NavigateView navView;
+
+ private ReloadJobChangeAdapter(NavigateView navView) {
+ this.navView = navView;
+ }
+
+ @Override
+ public void scheduled(IJobChangeEvent event) {
+ super.scheduled(event);
+ }
+
+ @Override
+ public void aboutToRun(IJobChangeEvent event) {
+ super.aboutToRun(event);
+ }
+
+ @Override
+ public void done(IJobChangeEvent event) {
+ super.done(event);
+ Job job = new UIJob("Load ATS Navigator") {
+
+ @Override
+ public IStatus runInUIThread(IProgressMonitor monitor) {
+ try {
+ showBusy(false);
+ if (!DbConnectionExceptionComposite.dbConnectionIsOk(parent)) {
+ return new Status(IStatus.ERROR, AtsPlugin.PLUGIN_ID, "Navigate View - !dbConnectionIsOk");
+ }
+
+ if (Widgets.isAccessible(loadingComposite)) {
+ loadingComposite.dispose();
+ }
+ xNavComp = new AtsNavigateComposite(AtsNavigateViewItems.getInstance(), parent, SWT.NONE);
+
+ AtsPlugin.getInstance().setHelp(xNavComp, HELP_CONTEXT_ID, "org.eclipse.osee.ats.help.ui");
+ createToolBar();
+
+ // add search text box
+ AtsQuickSearchComposite composite = new AtsQuickSearchComposite(xNavComp, SWT.NONE);
+ composite.addDisposeListener(new DisposeListener() {
+
+ @Override
+ public void widgetDisposed(DisposeEvent e) {
+ OseeNotificationManager.getInstance().sendNotifications();
+ }
+ });
+
+ if (savedFilterStr != null) {
+ xNavComp.getFilteredTree().getFilterControl().setText(savedFilterStr);
+ }
+ xNavComp.refresh();
+ xNavComp.getFilteredTree().getFilterControl().setFocus();
+
+ Label label = new Label(xNavComp, SWT.None);
+ String str = getWhoAmI();
+ if (AtsUtil.isAtsAdmin()) {
+ str += " - Admin";
+ }
+ if (!str.equals("")) {
+ if (AtsUtil.isAtsAdmin()) {
+ label.setForeground(Displays.getSystemColor(SWT.COLOR_RED));
+ } else {
+ label.setForeground(Displays.getSystemColor(SWT.COLOR_BLUE));
+ }
+ }
+ label.setText(str);
+ label.setToolTipText(str);
+ GridData gridData = new GridData(GridData.HORIZONTAL_ALIGN_CENTER | GridData.VERTICAL_ALIGN_CENTER);
+ gridData.heightHint = 15;
+ label.setLayoutData(gridData);
+
+ OseeContributionItem.addTo(navView, false);
+ xNavComp.layout();
+
+ addExtensionPointListenerBecauseOfWorkspaceLoading();
+
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ }
+ return Status.OK_STATUS;
+ }
+ };
+ Operations.scheduleJob(job, false, Job.SHORT, null);
+ }
+ }
+
+ private void addExtensionPointListenerBecauseOfWorkspaceLoading() {
+ IExtensionRegistry extensionRegistry = Platform.getExtensionRegistry();
+ extensionRegistry.addListener(new IRegistryEventListener() {
+ @Override
+ public void added(IExtension[] extensions) {
+ xNavComp.refresh();
+ }
+
+ @Override
+ public void added(IExtensionPoint[] extensionPoints) {
+ xNavComp.refresh();
+ }
+
+ @Override
+ public void removed(IExtension[] extensions) {
+ xNavComp.refresh();
+ }
+
+ @Override
+ public void removed(IExtensionPoint[] extensionPoints) {
+ xNavComp.refresh();
+ }
+ }, "org.eclipse.osee.framework.ui.skynet.BlamOperation");
+ }
+
+ public boolean isIncludeCompleteCancelled() {
+ return includeCompleteCancelled;
+ }
+
+ private String getWhoAmI() {
+ try {
+ String userName = UserManager.getUser().getName();
+ return String.format("%s - %s:%s", userName, ClientSessionManager.getDataStoreName(),
+ ClientSessionManager.getDataStoreLoginName());
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ return "Exception: " + ex.getLocalizedMessage();
+ }
+ }
+
+ protected void createToolBar() {
+ IToolBarManager toolbarManager = getViewSite().getActionBars().getToolBarManager();
+ toolbarManager.add(new MyWorldAction());
+ toolbarManager.add(new MyFavoritesAction());
+ toolbarManager.add(new CollapseAllAction(xNavComp.getFilteredTree().getViewer()));
+ toolbarManager.add(new ExpandAllAction(xNavComp.getFilteredTree().getViewer()));
+ toolbarManager.add(new OpenChangeReportByIdAction());
+ toolbarManager.add(new OpenWorldByIdAction());
+ toolbarManager.add(new OpenWorkflowByIdAction());
+ toolbarManager.add(new NewAction());
+ getViewSite().getActionBars().updateActionBars();
+
+ IActionBars bars = getViewSite().getActionBars();
+ IMenuManager mm = bars.getMenuManager();
+ mm.add(new NewAction());
+ mm.add(new NewGoal());
+ mm.add(OseeUiActions.createBugAction(AtsPlugin.getInstance(), this, VIEW_ID, "ATS Navigator"));
+
+ toolbarManager.update(true);
+ }
+
+ public static NavigateView getNavigateView() {
+ IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
+ try {
+ return (NavigateView) page.showView(NavigateView.VIEW_ID);
+ } catch (PartInitException e1) {
+ MessageDialog.openInformation(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), "Launch Error",
+ "Couldn't Launch OSEE ATS NavigateView " + e1.getMessage());
+ }
+ return null;
+ }
+
+ @Override
+ public String getActionDescription() {
+ IStructuredSelection sel = (IStructuredSelection) xNavComp.getFilteredTree().getViewer().getSelection();
+ if (sel.iterator().hasNext()) {
+ return String.format("Currently Selected - %s", ((XNavigateItem) sel.iterator().next()).getName());
+ }
+ return "";
+ }
+
+ private static final String INPUT = "filter";
+ private static final String FILTER_STR = "filterStr";
+
+ @Override
+ public void saveState(IMemento memento) {
+ super.saveState(memento);
+ memento = memento.createChild(INPUT);
+
+ if (xNavComp != null && xNavComp.getFilteredTree().getFilterControl() != null && !xNavComp.getFilteredTree().isDisposed()) {
+ String filterStr = xNavComp.getFilteredTree().getFilterControl().getText();
+ memento.putString(FILTER_STR, filterStr);
+ }
+ }
+ private String savedFilterStr = null;
+
+ @Override
+ public void init(IViewSite site, IMemento memento) throws PartInitException {
+ super.init(site, memento);
+ try {
+ if (memento != null) {
+ memento = memento.getChild(INPUT);
+ if (memento != null) {
+ savedFilterStr = memento.getString(FILTER_STR);
+ }
+ }
+ } catch (Exception ex) {
OseeLog.log(AtsPlugin.class, Level.WARNING, "NavigateView error on init", ex);
- }
- }
-
- @Override
- public void setFocus() {
- // do nothing
- }
-
+ }
+ }
+
+ @Override
+ public void setFocus() {
+ // do nothing
+ }
+
} \ No newline at end of file
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/NewPeerToPeerReviewItem.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/NewPeerToPeerReviewItem.java
index 51e43089fb7..67458917ddc 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/NewPeerToPeerReviewItem.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/NewPeerToPeerReviewItem.java
@@ -34,9 +34,6 @@ import org.eclipse.osee.framework.ui.skynet.widgets.dialog.EntryDialog;
*/
public class NewPeerToPeerReviewItem extends XNavigateItemAction {
- /**
- * @param parent
- */
public NewPeerToPeerReviewItem(XNavigateItem parent) {
super(parent, "New Stand-alone Peer To Peer Review", AtsImage.REVIEW);
}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/PublishFullVersionReportItem.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/PublishFullVersionReportItem.java
index 3ded2b6fa3b..8f2d079dcac 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/PublishFullVersionReportItem.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/PublishFullVersionReportItem.java
@@ -1,134 +1,134 @@
-/*******************************************************************************
- * 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 java.io.File;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.osee.ats.artifact.TeamDefinitionArtifact;
-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.VersionReportJob;
-import org.eclipse.osee.ats.util.widgets.dialog.TeamDefinitionDialog;
-import org.eclipse.osee.framework.core.enums.Active;
-import org.eclipse.osee.framework.core.exception.ArtifactDoesNotExist;
-import org.eclipse.osee.framework.core.exception.OseeCoreException;
-import org.eclipse.osee.framework.jdk.core.util.Lib;
-import org.eclipse.osee.framework.skynet.core.artifact.ArtifactTypeManager;
-import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
-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.swt.Displays;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.program.Program;
-import org.eclipse.swt.widgets.FileDialog;
-
-/**
- * @author Donald G. Dunne
- */
-public class PublishFullVersionReportItem extends XNavigateItemAction {
-
- private final TeamDefinitionArtifact teamDef;
- private final String publishToFilename;
- private final String teamDefName;
-
- public PublishFullVersionReportItem(XNavigateItem parent, String name, TeamDefinitionArtifact teamDef, String publishToFilename) {
- super(parent, name);
- this.teamDef = teamDef;
- this.teamDefName = null;
- this.publishToFilename = publishToFilename;
- }
-
- public PublishFullVersionReportItem(XNavigateItem parent, String name, String teamDefName, String publishToFilename) {
- super(parent, name);
- this.teamDefName = teamDefName;
- this.teamDef = null;
- this.publishToFilename = publishToFilename;
- }
-
- public PublishFullVersionReportItem(XNavigateItem parent) {
- this(parent, "Publish Full Version Report", (String) null, null);
- }
-
- @Override
- public void run(TableLoadOption... tableLoadOptions) throws OseeCoreException {
- String usePublishToFilename = publishToFilename;
- if (usePublishToFilename == null) {
- final FileDialog dialog = new FileDialog(Displays.getActiveShell().getShell(), SWT.SAVE);
- dialog.setFilterExtensions(new String[] {"*.html"});
- usePublishToFilename = dialog.open();
- if (usePublishToFilename == null) {
- return;
- }
- }
- TeamDefinitionArtifact useTeamDef = teamDef;
- if (useTeamDef == null && teamDefName != null) {
- try {
- useTeamDef =
- (TeamDefinitionArtifact) AtsCacheManager.getSoleArtifactByName(
- ArtifactTypeManager.getType(AtsArtifactTypes.TeamDefinition), teamDefName);
- } catch (ArtifactDoesNotExist ex) {
- // do nothing, going to get team below
- }
- }
- if (useTeamDef == null) {
- TeamDefinitionDialog ld = new TeamDefinitionDialog("Select Team", "Select Team");
- ld.setInput(TeamDefinitionArtifact.getTeamDefinitions(Active.Both));
- int result = ld.open();
- if (result == 0) {
- useTeamDef = (TeamDefinitionArtifact) ld.getResult()[0];
- } else {
- return;
- }
- } else if (!MessageDialog.openConfirm(Displays.getActiveShell(), getName(), getName())) {
- return;
- }
-
- String title = useTeamDef.getName() + " Version Report";
- PublishReportJob job = new PublishReportJob(title, teamDef, usePublishToFilename);
- job.setUser(true);
- job.setPriority(Job.LONG);
- job.schedule();
- }
-
- private static class PublishReportJob extends Job {
-
- private final TeamDefinitionArtifact teamDef;
- private final String filename;
-
- public PublishReportJob(String title, TeamDefinitionArtifact teamDef, String filename) {
- super(title);
- this.teamDef = teamDef;
- this.filename = filename;
- }
-
- @Override
- public IStatus run(IProgressMonitor monitor) {
- try {
- String html = VersionReportJob.getFullReleaseReport(teamDef, monitor);
- Lib.writeStringToFile(html, new File(filename));
- Program.launch(filename);
- AWorkbench.popup("Publish Complete", "Data Published To \"" + filename + "\"");
- } catch (Exception ex) {
- return new Status(IStatus.ERROR, AtsPlugin.PLUGIN_ID, -1, ex.toString(), ex);
- }
-
- monitor.done();
- return Status.OK_STATUS;
- }
- }
-
-}
+/*******************************************************************************
+ * 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 java.io.File;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.osee.ats.artifact.TeamDefinitionArtifact;
+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.VersionReportJob;
+import org.eclipse.osee.ats.util.widgets.dialog.TeamDefinitionDialog;
+import org.eclipse.osee.framework.core.enums.Active;
+import org.eclipse.osee.framework.core.exception.ArtifactDoesNotExist;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.jdk.core.util.Lib;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactTypeManager;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
+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.swt.Displays;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.program.Program;
+import org.eclipse.swt.widgets.FileDialog;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class PublishFullVersionReportItem extends XNavigateItemAction {
+
+ private final TeamDefinitionArtifact teamDef;
+ private final String publishToFilename;
+ private final String teamDefName;
+
+ public PublishFullVersionReportItem(XNavigateItem parent, String name, TeamDefinitionArtifact teamDef, String publishToFilename) {
+ super(parent, name);
+ this.teamDef = teamDef;
+ this.teamDefName = null;
+ this.publishToFilename = publishToFilename;
+ }
+
+ public PublishFullVersionReportItem(XNavigateItem parent, String name, String teamDefName, String publishToFilename) {
+ super(parent, name);
+ this.teamDefName = teamDefName;
+ this.teamDef = null;
+ this.publishToFilename = publishToFilename;
+ }
+
+ public PublishFullVersionReportItem(XNavigateItem parent) {
+ this(parent, "Publish Full Version Report", (String) null, null);
+ }
+
+ @Override
+ public void run(TableLoadOption... tableLoadOptions) throws OseeCoreException {
+ String usePublishToFilename = publishToFilename;
+ if (usePublishToFilename == null) {
+ final FileDialog dialog = new FileDialog(Displays.getActiveShell().getShell(), SWT.SAVE);
+ dialog.setFilterExtensions(new String[] {"*.html"});
+ usePublishToFilename = dialog.open();
+ if (usePublishToFilename == null) {
+ return;
+ }
+ }
+ TeamDefinitionArtifact useTeamDef = teamDef;
+ if (useTeamDef == null && teamDefName != null) {
+ try {
+ useTeamDef =
+ (TeamDefinitionArtifact) AtsCacheManager.getSoleArtifactByName(
+ ArtifactTypeManager.getType(AtsArtifactTypes.TeamDefinition), teamDefName);
+ } catch (ArtifactDoesNotExist ex) {
+ // do nothing, going to get team below
+ }
+ }
+ if (useTeamDef == null) {
+ TeamDefinitionDialog ld = new TeamDefinitionDialog("Select Team", "Select Team");
+ ld.setInput(TeamDefinitionArtifact.getTeamDefinitions(Active.Both));
+ int result = ld.open();
+ if (result == 0) {
+ useTeamDef = (TeamDefinitionArtifact) ld.getResult()[0];
+ } else {
+ return;
+ }
+ } else if (!MessageDialog.openConfirm(Displays.getActiveShell(), getName(), getName())) {
+ return;
+ }
+
+ String title = useTeamDef.getName() + " Version Report";
+ PublishReportJob job = new PublishReportJob(title, teamDef, usePublishToFilename);
+ job.setUser(true);
+ job.setPriority(Job.LONG);
+ job.schedule();
+ }
+
+ private static class PublishReportJob extends Job {
+
+ private final TeamDefinitionArtifact teamDef;
+ private final String filename;
+
+ public PublishReportJob(String title, TeamDefinitionArtifact teamDef, String filename) {
+ super(title);
+ this.teamDef = teamDef;
+ this.filename = filename;
+ }
+
+ @Override
+ public IStatus run(IProgressMonitor monitor) {
+ try {
+ String html = VersionReportJob.getFullReleaseReport(teamDef, monitor);
+ Lib.writeStringToFile(html, new File(filename));
+ Program.launch(filename);
+ AWorkbench.popup("Publish Complete", "Data Published To \"" + filename + "\"");
+ } catch (Exception ex) {
+ return new Status(IStatus.ERROR, AtsPlugin.PLUGIN_ID, -1, ex.toString(), ex);
+ }
+
+ monitor.done();
+ return Status.OK_STATUS;
+ }
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/ReleaseVersionItem.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/ReleaseVersionItem.java
index dc0eab620e6..b53ee3d4c1f 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/ReleaseVersionItem.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/ReleaseVersionItem.java
@@ -43,7 +43,6 @@ public class ReleaseVersionItem extends XNavigateItemAction {
private final TeamDefinitionArtifact teamDefHoldingVersions;
/**
- * @param parent
* @param teamDefHoldingVersions Team Definition Artifact that is related to versions or null for popup selection
*/
public ReleaseVersionItem(XNavigateItem parent, TeamDefinitionArtifact teamDefHoldingVersions) {
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/TeamWorkflowSearchWorkflowSearchItem.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/TeamWorkflowSearchWorkflowSearchItem.java
index b11f540299a..174911d48de 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/TeamWorkflowSearchWorkflowSearchItem.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/TeamWorkflowSearchWorkflowSearchItem.java
@@ -1,358 +1,358 @@
-/*******************************************************************************
- * 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 java.util.Collection;
-import java.util.HashSet;
-import java.util.Set;
-import java.util.logging.Level;
-import org.eclipse.osee.ats.AtsImage;
-import org.eclipse.osee.ats.artifact.TaskableStateMachineArtifact;
-import org.eclipse.osee.ats.artifact.TeamDefinitionArtifact;
-import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact;
-import org.eclipse.osee.ats.artifact.VersionArtifact;
-import org.eclipse.osee.ats.artifact.VersionArtifact.VersionReleaseType;
-import org.eclipse.osee.ats.internal.AtsPlugin;
-import org.eclipse.osee.ats.util.widgets.ReviewManager;
-import org.eclipse.osee.ats.util.widgets.XHyperlabelTeamDefinitionSelection;
-import org.eclipse.osee.ats.world.WorldEditor;
-import org.eclipse.osee.ats.world.WorldEditorParameterSearchItem;
-import org.eclipse.osee.ats.world.search.TeamWorldSearchItem;
-import org.eclipse.osee.ats.world.search.TeamWorldSearchItem.ReleasedOption;
-import org.eclipse.osee.framework.core.exception.OseeCoreException;
-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.skynet.core.User;
-import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
-import org.eclipse.osee.framework.skynet.core.utility.Artifacts;
-import org.eclipse.osee.framework.ui.plugin.util.Result;
-import org.eclipse.osee.framework.ui.skynet.widgets.XCheckBox;
-import org.eclipse.osee.framework.ui.skynet.widgets.XCombo;
-import org.eclipse.osee.framework.ui.skynet.widgets.XMembersCombo;
-import org.eclipse.osee.framework.ui.skynet.widgets.XModifiedListener;
-import org.eclipse.osee.framework.ui.skynet.widgets.XWidget;
-import org.eclipse.osee.framework.ui.skynet.widgets.workflow.DynamicXWidgetLayout;
-import org.eclipse.osee.framework.ui.skynet.widgets.workflow.DynamicXWidgetLayoutData;
-import org.eclipse.osee.framework.ui.skynet.widgets.workflow.IDynamicWidgetLayoutListener;
-import org.eclipse.ui.forms.widgets.FormToolkit;
-
-/**
- * @author Donald G. Dunne
- */
-public class TeamWorkflowSearchWorkflowSearchItem extends WorldEditorParameterSearchItem {
-
- protected XHyperlabelTeamDefinitionSelection teamCombo = null;
- protected XCombo releasedCombo = null;
- protected XCombo versionCombo = null;
- protected XMembersCombo assigneeCombo;
- protected XCheckBox includeCompletedCancelledCheckbox;
- protected XCheckBox showFlatCheckbox;
-
- public TeamWorkflowSearchWorkflowSearchItem(String name) {
- super(name, AtsImage.TEAM_WORKFLOW);
- }
-
- public TeamWorkflowSearchWorkflowSearchItem() {
- this("Team Workflow Search");
- }
-
- public TeamWorkflowSearchWorkflowSearchItem(TeamWorkflowSearchWorkflowSearchItem editTeamWorkflowSearchItem) {
- super(editTeamWorkflowSearchItem, AtsImage.TEAM_WORKFLOW);
- }
-
- @Override
- public TeamWorkflowSearchWorkflowSearchItem copy() {
- return new TeamWorkflowSearchWorkflowSearchItem(this);
- }
-
- @Override
- public TeamWorkflowSearchWorkflowSearchItem copyProvider() {
- return new TeamWorkflowSearchWorkflowSearchItem(this);
- }
-
- @SuppressWarnings("unused")
- @Override
- public String getParameterXWidgetXml() throws OseeCoreException {
- return "<xWidgets>" +
- //
- "<XWidget xwidgetType=\"XHyperlabelTeamDefinitionSelection\" displayName=\"Team Definitions(s)\" horizontalLabel=\"true\"/>" +
- //
- "<XWidget xwidgetType=\"XCombo()\" beginComposite=\"10\" displayName=\"Version\" horizontalLabel=\"true\"/>" +
- //
- "<XWidget xwidgetType=\"XCombo(Both,Released,UnReleased)\" displayName=\"Released\" horizontalLabel=\"true\"/>" +
- //
- "<XWidget xwidgetType=\"XMembersCombo\" displayName=\"Assignee\" horizontalLabel=\"true\"/>" +
- //
- "<XWidget xwidgetType=\"XCheckBox\" displayName=\"Include Completed/Cancelled\" defaultValue=\"false\" labelAfter=\"true\" horizontalLabel=\"true\"/>" +
- //
- "<XWidget xwidgetType=\"XCheckBox\" displayName=\"Show Flat\" defaultValue=\"false\" labelAfter=\"true\" horizontalLabel=\"true\" toolTip=\"Show Tasks/Reviews flattened instead of hierarchcial\"/>" +
- //
- "</xWidgets>";
- }
-
- @Override
- public Collection<? extends Artifact> performSearchGetResults(SearchType searchType) throws OseeCoreException {
- Collection<Artifact> artifacts =
- new TeamWorldSearchItem("", getSelectedTeamDefinitions(), isIncludeCompletedCancelledCheckbox(), false, false,
- getSelectedVersionArtifact(), getSelectedUser(), getSelectedReleased()).performSearchGetResults(false);
- return filterShowFlat(artifacts);
- }
-
- protected Collection<? extends Artifact> filterShowFlat(Collection<Artifact> artifacts) throws OseeCoreException {
- if (!isShowFlatCheckbox()) {
- return artifacts;
- }
- Set<Artifact> results = new HashSet<Artifact>(artifacts);
- for (Artifact artifact : artifacts) {
- if (artifact instanceof TaskableStateMachineArtifact) {
- results.addAll(((TaskableStateMachineArtifact) artifact).getTaskArtifacts());
- }
- if (artifact instanceof TeamWorkFlowArtifact) {
- results.addAll(ReviewManager.getReviews((TeamWorkFlowArtifact) artifact));
- }
- }
- return results;
- }
-
- @Override
- public String getSelectedName(SearchType searchType) throws OseeCoreException {
- StringBuffer sb = new StringBuffer();
- Collection<TeamDefinitionArtifact> teamDefs = getSelectedTeamDefinitions();
- if (teamDefs.size() > 0) {
- sb.append(" - Teams: " + org.eclipse.osee.framework.jdk.core.util.Collections.toString(",", teamDefs));
- }
- if (getSelectedVersionArtifact() != null) {
- sb.append(" - Version: " + getSelectedVersionArtifact());
- }
- ReleasedOption releaseOption = getSelectedReleased();
- if (releaseOption != null && releaseOption != ReleasedOption.Both) {
- sb.append(" - ReleasedOption: " + releaseOption);
- }
- if (getSelectedUser() != null) {
- sb.append(" - Assignee: " + getSelectedUser());
- }
- if (isIncludeCompletedCancelledCheckbox()) {
- sb.append(" - Include Completed/Cancelled");
- }
- return Strings.truncate(getName() + sb.toString(), WorldEditor.TITLE_MAX_LENGTH, true);
- }
-
- @SuppressWarnings("unused")
- @Override
- public void widgetCreated(XWidget widget, FormToolkit toolkit, Artifact art, DynamicXWidgetLayout dynamicXWidgetLayout, XModifiedListener modListener, boolean isEditable) throws OseeCoreException {
- if (widget.getLabel().equals("Assignee")) {
- assigneeCombo = (XMembersCombo) widget;
- }
- if (widget.getLabel().equals("Include Completed/Cancelled")) {
- includeCompletedCancelledCheckbox = (XCheckBox) widget;
- }
- if (widget.getLabel().equals("Show Flat")) {
- showFlatCheckbox = (XCheckBox) widget;
- }
- if (widget.getLabel().equals("Version")) {
- versionCombo = (XCombo) widget;
- versionCombo.getComboBox().setVisibleItemCount(25);
- widget.setToolTip("Select Team to populate Version list");
- }
- if (widget.getLabel().equals("Released")) {
- releasedCombo = (XCombo) widget;
- }
- if (widget.getLabel().equals("Team Definitions(s)")) {
- teamCombo = (XHyperlabelTeamDefinitionSelection) widget;
- teamCombo.addXModifiedListener(new XModifiedListener() {
- @Override
- public void widgetModified(XWidget widget) {
- if (versionCombo != null) {
- try {
- Collection<TeamDefinitionArtifact> teamDefArts = getSelectedTeamDefinitions();
- if (teamDefArts.isEmpty()) {
- versionCombo.setDataStrings(new String[] {});
- return;
- }
- TeamDefinitionArtifact teamDefHoldingVersions =
- teamDefArts.iterator().next().getTeamDefinitionHoldingVersions();
- if (teamDefHoldingVersions == null) {
- versionCombo.setDataStrings(new String[] {});
- return;
- }
- Collection<String> names =
- Artifacts.artNames(teamDefHoldingVersions.getVersionsArtifacts(VersionReleaseType.Both));
- if (names.isEmpty()) {
- versionCombo.setDataStrings(new String[] {});
- return;
- }
- versionCombo.setDataStrings(names.toArray(new String[names.size()]));
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
- }
- }
- }
- });
- }
- }
-
- protected User getSelectedUser() {
- if (assigneeCombo == null) {
- return null;
- }
- return assigneeCombo.getUser();
- }
-
- public void setSelectedUser(User user) {
- if (assigneeCombo != null) {
- assigneeCombo.set(user);
- }
- }
-
- protected boolean isIncludeCompletedCancelledCheckbox() {
- if (includeCompletedCancelledCheckbox == null) {
- return false;
- }
- return includeCompletedCancelledCheckbox.isSelected();
- }
-
- public void includeCompletedCancelledCheckbox(boolean selected) {
- if (includeCompletedCancelledCheckbox != null) {
- includeCompletedCancelledCheckbox.set(selected);
- }
- }
-
- protected boolean isShowFlatCheckbox() {
- if (showFlatCheckbox == null) {
- return false;
- }
- return showFlatCheckbox.isSelected();
- }
-
- public void includeShowFlatCheckbox(boolean selected) {
- if (showFlatCheckbox != null) {
- showFlatCheckbox.set(selected);
- }
- }
-
- protected VersionArtifact getSelectedVersionArtifact() throws OseeCoreException {
- if (versionCombo == null) {
- return null;
- }
- String versionStr = versionCombo.get();
- if (!Strings.isValid(versionStr)) {
- return null;
- }
- Collection<TeamDefinitionArtifact> teamDefs = getSelectedTeamDefinitions();
- if (teamDefs.size() > 0) {
- TeamDefinitionArtifact teamDefHoldingVersions = teamDefs.iterator().next().getTeamDefinitionHoldingVersions();
- if (teamDefHoldingVersions == null) {
- return null;
- }
- for (VersionArtifact versionArtifact : teamDefHoldingVersions.getVersionsArtifacts(VersionReleaseType.Both)) {
- if (versionArtifact.getName().equals(versionStr)) {
- return versionArtifact;
- }
- }
- }
- return null;
- }
-
- public void setVersion(String versionStr) {
- if (versionCombo != null && versionCombo.getInDataStrings() != null) {
- // should check if the version combo was populated
- if (versionCombo.getInDataStrings().length > 0) {
- versionCombo.set(versionStr);
- }
- }
- }
-
- public Collection<TeamDefinitionArtifact> getSelectedTeamDefinitions() {
- if (teamCombo == null) {
- return java.util.Collections.emptyList();
- }
- return teamCombo.getSelectedTeamDefintions();
- }
-
- public void setSelectedTeamDefinitions(Collection<TeamDefinitionArtifact> selectedTeamDefs) {
- if (teamCombo != null) {
- teamCombo.setSelectedTeamDefs(selectedTeamDefs);
- teamCombo.notifyXModifiedListeners();
- }
- }
-
- protected ReleasedOption getSelectedReleased() {
- if (releasedCombo == null || !Strings.isValid(releasedCombo.get())) {
- return ReleasedOption.Both;
- }
- return ReleasedOption.valueOf(releasedCombo.get());
- }
-
- public void setSelectedReleased(ReleasedOption option) {
- if (releasedCombo != null) {
- releasedCombo.set(option.toString());
- }
- }
-
- @Override
- public void createXWidgetLayoutData(DynamicXWidgetLayoutData layoutData, XWidget widget, FormToolkit toolkit, Artifact art, XModifiedListener modListener, boolean isEditable) {
- // do nothing
- }
-
- @Override
- public void widgetCreating(XWidget widget, FormToolkit toolkit, Artifact art, DynamicXWidgetLayout dynamicXWidgetLayout, XModifiedListener modListener, boolean isEditable) {
- // do nothing
- }
-
- @SuppressWarnings("unused")
- @Override
- public Result isParameterSelectionValid() throws OseeCoreException {
- try {
- boolean selected = false;
- Collection<TeamDefinitionArtifact> teamDefs = getSelectedTeamDefinitions();
- if (teamDefs.size() > 0) {
- selected = true;
- }
- VersionArtifact verArt = getSelectedVersionArtifact();
- if (verArt != null) {
- selected = true;
- }
- User user = getSelectedUser();
- if (user != null) {
- selected = true;
- }
- boolean includeCompleted = isIncludeCompletedCancelledCheckbox();
- if (!selected) {
- return new Result("You must select at least Team, Version or Assignee.");
- }
- if (user != null && includeCompleted) {
- return new Result("Assignee and Include Completed are not compatible selections.");
- }
- if (user != null && includeCompleted && verArt == null && teamDefs.isEmpty()) {
- return new Result("You must select at least Team or Version with Include Completed.");
- }
- return Result.TrueResult;
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- return new Result("Exception: " + ex.getLocalizedMessage());
- }
- }
-
- @Override
- public IDynamicWidgetLayoutListener getDynamicWidgetLayoutListener() {
- return null;
- }
-
- @Override
- public VersionArtifact getTargetedVersionArtifact() throws OseeCoreException {
- if (versionCombo == null) {
- return null;
- }
- return getSelectedVersionArtifact();
- }
-
-}
+/*******************************************************************************
+ * 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 java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
+import java.util.logging.Level;
+import org.eclipse.osee.ats.AtsImage;
+import org.eclipse.osee.ats.artifact.TaskableStateMachineArtifact;
+import org.eclipse.osee.ats.artifact.TeamDefinitionArtifact;
+import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact;
+import org.eclipse.osee.ats.artifact.VersionArtifact;
+import org.eclipse.osee.ats.artifact.VersionArtifact.VersionReleaseType;
+import org.eclipse.osee.ats.internal.AtsPlugin;
+import org.eclipse.osee.ats.util.widgets.ReviewManager;
+import org.eclipse.osee.ats.util.widgets.XHyperlabelTeamDefinitionSelection;
+import org.eclipse.osee.ats.world.WorldEditor;
+import org.eclipse.osee.ats.world.WorldEditorParameterSearchItem;
+import org.eclipse.osee.ats.world.search.TeamWorldSearchItem;
+import org.eclipse.osee.ats.world.search.TeamWorldSearchItem.ReleasedOption;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+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.skynet.core.User;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.utility.Artifacts;
+import org.eclipse.osee.framework.ui.plugin.util.Result;
+import org.eclipse.osee.framework.ui.skynet.widgets.XCheckBox;
+import org.eclipse.osee.framework.ui.skynet.widgets.XCombo;
+import org.eclipse.osee.framework.ui.skynet.widgets.XMembersCombo;
+import org.eclipse.osee.framework.ui.skynet.widgets.XModifiedListener;
+import org.eclipse.osee.framework.ui.skynet.widgets.XWidget;
+import org.eclipse.osee.framework.ui.skynet.widgets.workflow.DynamicXWidgetLayout;
+import org.eclipse.osee.framework.ui.skynet.widgets.workflow.DynamicXWidgetLayoutData;
+import org.eclipse.osee.framework.ui.skynet.widgets.workflow.IDynamicWidgetLayoutListener;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class TeamWorkflowSearchWorkflowSearchItem extends WorldEditorParameterSearchItem {
+
+ protected XHyperlabelTeamDefinitionSelection teamCombo = null;
+ protected XCombo releasedCombo = null;
+ protected XCombo versionCombo = null;
+ protected XMembersCombo assigneeCombo;
+ protected XCheckBox includeCompletedCancelledCheckbox;
+ protected XCheckBox showFlatCheckbox;
+
+ public TeamWorkflowSearchWorkflowSearchItem(String name) {
+ super(name, AtsImage.TEAM_WORKFLOW);
+ }
+
+ public TeamWorkflowSearchWorkflowSearchItem() {
+ this("Team Workflow Search");
+ }
+
+ public TeamWorkflowSearchWorkflowSearchItem(TeamWorkflowSearchWorkflowSearchItem editTeamWorkflowSearchItem) {
+ super(editTeamWorkflowSearchItem, AtsImage.TEAM_WORKFLOW);
+ }
+
+ @Override
+ public TeamWorkflowSearchWorkflowSearchItem copy() {
+ return new TeamWorkflowSearchWorkflowSearchItem(this);
+ }
+
+ @Override
+ public TeamWorkflowSearchWorkflowSearchItem copyProvider() {
+ return new TeamWorkflowSearchWorkflowSearchItem(this);
+ }
+
+ @SuppressWarnings("unused")
+ @Override
+ public String getParameterXWidgetXml() throws OseeCoreException {
+ return "<xWidgets>" +
+ //
+ "<XWidget xwidgetType=\"XHyperlabelTeamDefinitionSelection\" displayName=\"Team Definitions(s)\" horizontalLabel=\"true\"/>" +
+ //
+ "<XWidget xwidgetType=\"XCombo()\" beginComposite=\"10\" displayName=\"Version\" horizontalLabel=\"true\"/>" +
+ //
+ "<XWidget xwidgetType=\"XCombo(Both,Released,UnReleased)\" displayName=\"Released\" horizontalLabel=\"true\"/>" +
+ //
+ "<XWidget xwidgetType=\"XMembersCombo\" displayName=\"Assignee\" horizontalLabel=\"true\"/>" +
+ //
+ "<XWidget xwidgetType=\"XCheckBox\" displayName=\"Include Completed/Cancelled\" defaultValue=\"false\" labelAfter=\"true\" horizontalLabel=\"true\"/>" +
+ //
+ "<XWidget xwidgetType=\"XCheckBox\" displayName=\"Show Flat\" defaultValue=\"false\" labelAfter=\"true\" horizontalLabel=\"true\" toolTip=\"Show Tasks/Reviews flattened instead of hierarchcial\"/>" +
+ //
+ "</xWidgets>";
+ }
+
+ @Override
+ public Collection<? extends Artifact> performSearchGetResults(SearchType searchType) throws OseeCoreException {
+ Collection<Artifact> artifacts =
+ new TeamWorldSearchItem("", getSelectedTeamDefinitions(), isIncludeCompletedCancelledCheckbox(), false, false,
+ getSelectedVersionArtifact(), getSelectedUser(), getSelectedReleased()).performSearchGetResults(false);
+ return filterShowFlat(artifacts);
+ }
+
+ protected Collection<? extends Artifact> filterShowFlat(Collection<Artifact> artifacts) throws OseeCoreException {
+ if (!isShowFlatCheckbox()) {
+ return artifacts;
+ }
+ Set<Artifact> results = new HashSet<Artifact>(artifacts);
+ for (Artifact artifact : artifacts) {
+ if (artifact instanceof TaskableStateMachineArtifact) {
+ results.addAll(((TaskableStateMachineArtifact) artifact).getTaskArtifacts());
+ }
+ if (artifact instanceof TeamWorkFlowArtifact) {
+ results.addAll(ReviewManager.getReviews((TeamWorkFlowArtifact) artifact));
+ }
+ }
+ return results;
+ }
+
+ @Override
+ public String getSelectedName(SearchType searchType) throws OseeCoreException {
+ StringBuffer sb = new StringBuffer();
+ Collection<TeamDefinitionArtifact> teamDefs = getSelectedTeamDefinitions();
+ if (teamDefs.size() > 0) {
+ sb.append(" - Teams: " + org.eclipse.osee.framework.jdk.core.util.Collections.toString(",", teamDefs));
+ }
+ if (getSelectedVersionArtifact() != null) {
+ sb.append(" - Version: " + getSelectedVersionArtifact());
+ }
+ ReleasedOption releaseOption = getSelectedReleased();
+ if (releaseOption != null && releaseOption != ReleasedOption.Both) {
+ sb.append(" - ReleasedOption: " + releaseOption);
+ }
+ if (getSelectedUser() != null) {
+ sb.append(" - Assignee: " + getSelectedUser());
+ }
+ if (isIncludeCompletedCancelledCheckbox()) {
+ sb.append(" - Include Completed/Cancelled");
+ }
+ return Strings.truncate(getName() + sb.toString(), WorldEditor.TITLE_MAX_LENGTH, true);
+ }
+
+ @SuppressWarnings("unused")
+ @Override
+ public void widgetCreated(XWidget widget, FormToolkit toolkit, Artifact art, DynamicXWidgetLayout dynamicXWidgetLayout, XModifiedListener modListener, boolean isEditable) throws OseeCoreException {
+ if (widget.getLabel().equals("Assignee")) {
+ assigneeCombo = (XMembersCombo) widget;
+ }
+ if (widget.getLabel().equals("Include Completed/Cancelled")) {
+ includeCompletedCancelledCheckbox = (XCheckBox) widget;
+ }
+ if (widget.getLabel().equals("Show Flat")) {
+ showFlatCheckbox = (XCheckBox) widget;
+ }
+ if (widget.getLabel().equals("Version")) {
+ versionCombo = (XCombo) widget;
+ versionCombo.getComboBox().setVisibleItemCount(25);
+ widget.setToolTip("Select Team to populate Version list");
+ }
+ if (widget.getLabel().equals("Released")) {
+ releasedCombo = (XCombo) widget;
+ }
+ if (widget.getLabel().equals("Team Definitions(s)")) {
+ teamCombo = (XHyperlabelTeamDefinitionSelection) widget;
+ teamCombo.addXModifiedListener(new XModifiedListener() {
+ @Override
+ public void widgetModified(XWidget widget) {
+ if (versionCombo != null) {
+ try {
+ Collection<TeamDefinitionArtifact> teamDefArts = getSelectedTeamDefinitions();
+ if (teamDefArts.isEmpty()) {
+ versionCombo.setDataStrings(new String[] {});
+ return;
+ }
+ TeamDefinitionArtifact teamDefHoldingVersions =
+ teamDefArts.iterator().next().getTeamDefinitionHoldingVersions();
+ if (teamDefHoldingVersions == null) {
+ versionCombo.setDataStrings(new String[] {});
+ return;
+ }
+ Collection<String> names =
+ Artifacts.artNames(teamDefHoldingVersions.getVersionsArtifacts(VersionReleaseType.Both));
+ if (names.isEmpty()) {
+ versionCombo.setDataStrings(new String[] {});
+ return;
+ }
+ versionCombo.setDataStrings(names.toArray(new String[names.size()]));
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
+ }
+ }
+ }
+ });
+ }
+ }
+
+ protected User getSelectedUser() {
+ if (assigneeCombo == null) {
+ return null;
+ }
+ return assigneeCombo.getUser();
+ }
+
+ public void setSelectedUser(User user) {
+ if (assigneeCombo != null) {
+ assigneeCombo.set(user);
+ }
+ }
+
+ protected boolean isIncludeCompletedCancelledCheckbox() {
+ if (includeCompletedCancelledCheckbox == null) {
+ return false;
+ }
+ return includeCompletedCancelledCheckbox.isSelected();
+ }
+
+ public void includeCompletedCancelledCheckbox(boolean selected) {
+ if (includeCompletedCancelledCheckbox != null) {
+ includeCompletedCancelledCheckbox.set(selected);
+ }
+ }
+
+ protected boolean isShowFlatCheckbox() {
+ if (showFlatCheckbox == null) {
+ return false;
+ }
+ return showFlatCheckbox.isSelected();
+ }
+
+ public void includeShowFlatCheckbox(boolean selected) {
+ if (showFlatCheckbox != null) {
+ showFlatCheckbox.set(selected);
+ }
+ }
+
+ protected VersionArtifact getSelectedVersionArtifact() throws OseeCoreException {
+ if (versionCombo == null) {
+ return null;
+ }
+ String versionStr = versionCombo.get();
+ if (!Strings.isValid(versionStr)) {
+ return null;
+ }
+ Collection<TeamDefinitionArtifact> teamDefs = getSelectedTeamDefinitions();
+ if (teamDefs.size() > 0) {
+ TeamDefinitionArtifact teamDefHoldingVersions = teamDefs.iterator().next().getTeamDefinitionHoldingVersions();
+ if (teamDefHoldingVersions == null) {
+ return null;
+ }
+ for (VersionArtifact versionArtifact : teamDefHoldingVersions.getVersionsArtifacts(VersionReleaseType.Both)) {
+ if (versionArtifact.getName().equals(versionStr)) {
+ return versionArtifact;
+ }
+ }
+ }
+ return null;
+ }
+
+ public void setVersion(String versionStr) {
+ if (versionCombo != null && versionCombo.getInDataStrings() != null) {
+ // should check if the version combo was populated
+ if (versionCombo.getInDataStrings().length > 0) {
+ versionCombo.set(versionStr);
+ }
+ }
+ }
+
+ public Collection<TeamDefinitionArtifact> getSelectedTeamDefinitions() {
+ if (teamCombo == null) {
+ return java.util.Collections.emptyList();
+ }
+ return teamCombo.getSelectedTeamDefintions();
+ }
+
+ public void setSelectedTeamDefinitions(Collection<TeamDefinitionArtifact> selectedTeamDefs) {
+ if (teamCombo != null) {
+ teamCombo.setSelectedTeamDefs(selectedTeamDefs);
+ teamCombo.notifyXModifiedListeners();
+ }
+ }
+
+ protected ReleasedOption getSelectedReleased() {
+ if (releasedCombo == null || !Strings.isValid(releasedCombo.get())) {
+ return ReleasedOption.Both;
+ }
+ return ReleasedOption.valueOf(releasedCombo.get());
+ }
+
+ public void setSelectedReleased(ReleasedOption option) {
+ if (releasedCombo != null) {
+ releasedCombo.set(option.toString());
+ }
+ }
+
+ @Override
+ public void createXWidgetLayoutData(DynamicXWidgetLayoutData layoutData, XWidget widget, FormToolkit toolkit, Artifact art, XModifiedListener modListener, boolean isEditable) {
+ // do nothing
+ }
+
+ @Override
+ public void widgetCreating(XWidget widget, FormToolkit toolkit, Artifact art, DynamicXWidgetLayout dynamicXWidgetLayout, XModifiedListener modListener, boolean isEditable) {
+ // do nothing
+ }
+
+ @SuppressWarnings("unused")
+ @Override
+ public Result isParameterSelectionValid() throws OseeCoreException {
+ try {
+ boolean selected = false;
+ Collection<TeamDefinitionArtifact> teamDefs = getSelectedTeamDefinitions();
+ if (teamDefs.size() > 0) {
+ selected = true;
+ }
+ VersionArtifact verArt = getSelectedVersionArtifact();
+ if (verArt != null) {
+ selected = true;
+ }
+ User user = getSelectedUser();
+ if (user != null) {
+ selected = true;
+ }
+ boolean includeCompleted = isIncludeCompletedCancelledCheckbox();
+ if (!selected) {
+ return new Result("You must select at least Team, Version or Assignee.");
+ }
+ if (user != null && includeCompleted) {
+ return new Result("Assignee and Include Completed are not compatible selections.");
+ }
+ if (user != null && includeCompleted && verArt == null && teamDefs.isEmpty()) {
+ return new Result("You must select at least Team or Version with Include Completed.");
+ }
+ return Result.TrueResult;
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ return new Result("Exception: " + ex.getLocalizedMessage());
+ }
+ }
+
+ @Override
+ public IDynamicWidgetLayoutListener getDynamicWidgetLayoutListener() {
+ return null;
+ }
+
+ @Override
+ public VersionArtifact getTargetedVersionArtifact() throws OseeCoreException {
+ if (versionCombo == null) {
+ return null;
+ }
+ return getSelectedVersionArtifact();
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/UpdateAtsWorkItemDefinitions.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/UpdateAtsWorkItemDefinitions.java
index ebd566d3042..fd686d1b4d3 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/UpdateAtsWorkItemDefinitions.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/UpdateAtsWorkItemDefinitions.java
@@ -27,9 +27,6 @@ import org.eclipse.osee.framework.ui.swt.Displays;
*/
public class UpdateAtsWorkItemDefinitions extends XNavigateItemAction {
- /**
- * @param parent
- */
public UpdateAtsWorkItemDefinitions(XNavigateItem parent) {
super(parent, "Update Ats WorkItemDefinitions", PluginUiImage.ADMIN);
}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/VisitedItems.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/VisitedItems.java
index b33cb3df0a2..cd0bbd85a42 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/VisitedItems.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/VisitedItems.java
@@ -57,9 +57,6 @@ public class VisitedItems extends XNavigateItemAction {
}
}
- /**
- * @param parent
- */
public VisitedItems(XNavigateItem parent) {
super(parent, "My Recently Visited", AtsImage.GLOBE);
}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/operation/PurgeUser.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/operation/PurgeUser.java
index 358a38734d0..567864ce254 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/operation/PurgeUser.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/operation/PurgeUser.java
@@ -79,7 +79,7 @@ public class PurgeUser extends AbstractBlam {
AWorkbench.popup("ERROR", "Please select To User");
return;
}
- //handle roll-backs and exception handling
+ //handle roll-backs and exception handling
new DbTransaction() {
@Override
protected void handleTxWork(OseeConnection connection) throws OseeCoreException {
@@ -118,7 +118,8 @@ public class PurgeUser extends AbstractBlam {
ConnectionHandler.runPreparedQueryFetchInt(defaultUpdateValue, GET_AUTHORED_TRANSACTIONS,
new Object[] {fromUser.getArtId()});
numOfUpdatedAuthoredTransactions =
- ConnectionHandler.runPreparedUpdate(connection, UPDATE_AUTHORED_TRANSACTIONS, new Object[] {toUser.getArtId(),
+ ConnectionHandler.runPreparedUpdate(connection, UPDATE_AUTHORED_TRANSACTIONS, new Object[] {
+ toUser.getArtId(),
fromUser.getArtId()});
}
@@ -132,7 +133,8 @@ public class PurgeUser extends AbstractBlam {
ConnectionHandler.runPreparedQueryFetchInt(defaultUpdateValue, GET_RELATIONS_ASIDE,
new Object[] {fromUser.getArtId()});
numOfUpdatedASideRelations =
- ConnectionHandler.runPreparedUpdate(connection, UPDATE_RELATIONS_ASIDE, new Object[] {toUser.getArtId(),
+ ConnectionHandler.runPreparedUpdate(connection, UPDATE_RELATIONS_ASIDE, new Object[] {
+ toUser.getArtId(),
fromUser.getArtId()});
}
@@ -141,7 +143,8 @@ public class PurgeUser extends AbstractBlam {
ConnectionHandler.runPreparedQueryFetchInt(defaultUpdateValue, GET_RELATIONS_BSIDE,
new Object[] {fromUser.getArtId()});
numOfUpdatedBSideRelations =
- ConnectionHandler.runPreparedUpdate(connection, UPDATE_RELATIONS_BSIDE, new Object[] {toUser.getArtId(),
+ ConnectionHandler.runPreparedUpdate(connection, UPDATE_RELATIONS_BSIDE, new Object[] {
+ toUser.getArtId(),
fromUser.getArtId()});
}
@@ -154,16 +157,30 @@ public class PurgeUser extends AbstractBlam {
XResultData rd = new XResultData();
try {
String[] columnHeaders =
- new String[] {"FromUser", "FromUser ArtId", "ToUser", "ToUser ArtId", "Authored Transaction Hits",
- "Relation ASide Hits", "Relation BSide Hits", "Authored Transaction Updated", "Relation ASide Update",
+ new String[] {
+ "FromUser",
+ "FromUser ArtId",
+ "ToUser",
+ "ToUser ArtId",
+ "Authored Transaction Hits",
+ "Relation ASide Hits",
+ "Relation BSide Hits",
+ "Authored Transaction Updated",
+ "Relation ASide Update",
"Relation BSide Updated"};
rd.addRaw(AHTML.beginMultiColumnTable(100, 1));
rd.addRaw(AHTML.addHeaderRowMultiColumnTable(columnHeaders));
- rd.addRaw(AHTML.addRowMultiColumnTable(new String[] {fromUser.getName(),
- Integer.toString(fromUser.getArtId()), toUser.getName(), Integer.toString(toUser.getArtId()),
- Integer.toString(numOfAuthoredTransactions), Integer.toString(numOfASideRelations),
- Integer.toString(numOfBSideRelations), Integer.toString(numOfUpdatedAuthoredTransactions),
- Integer.toString(numOfUpdatedASideRelations), Integer.toString(numOfUpdatedBSideRelations)}));
+ rd.addRaw(AHTML.addRowMultiColumnTable(new String[] {
+ fromUser.getName(),
+ Integer.toString(fromUser.getArtId()),
+ toUser.getName(),
+ Integer.toString(toUser.getArtId()),
+ Integer.toString(numOfAuthoredTransactions),
+ Integer.toString(numOfASideRelations),
+ Integer.toString(numOfBSideRelations),
+ Integer.toString(numOfUpdatedAuthoredTransactions),
+ Integer.toString(numOfUpdatedASideRelations),
+ Integer.toString(numOfUpdatedBSideRelations)}));
rd.addRaw(AHTML.endMultiColumnTable());
} finally {
rd.report(getName());
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/report/CreateActionArtifactChangeReportJob.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/report/CreateActionArtifactChangeReportJob.java
index 9261e90ae26..c8699e85423 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/report/CreateActionArtifactChangeReportJob.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/report/CreateActionArtifactChangeReportJob.java
@@ -102,8 +102,13 @@ public class CreateActionArtifactChangeReportJob extends Job {
int x = 1;
rd.addRaw(AHTML.beginMultiColumnTable(95));
- rd.addRaw(AHTML.addHeaderRowMultiColumnTable(new String[] {"HRID", "Bulld", "UI", attributeType.getName(),
- "RPCR", "Change"}));
+ rd.addRaw(AHTML.addHeaderRowMultiColumnTable(new String[] {
+ "HRID",
+ "Bulld",
+ "UI",
+ attributeType.getName(),
+ "RPCR",
+ "Change"}));
for (TeamWorkFlowArtifact teamArt : teamArts) {
String rcprId = teamArt.getSoleAttributeValue(AtsAttributeTypes.LegacyPcrId, "");
String result =
@@ -132,8 +137,13 @@ public class CreateActionArtifactChangeReportJob extends Job {
attrStrs.add(EnumeratedAttribute.UNSPECIFIED_VALUE);
}
for (String attrStr : attrStrs) {
- rd.addRaw(AHTML.addRowMultiColumnTable(new String[] {teamArt.getHumanReadableId(), buildId,
- modArt.getName(), attrStr, rpcrNum, "Content"}));
+ rd.addRaw(AHTML.addRowMultiColumnTable(new String[] {
+ teamArt.getHumanReadableId(),
+ buildId,
+ modArt.getName(),
+ attrStr,
+ rpcrNum,
+ "Content"}));
}
}
for (Artifact artChg : changeData.getArtifacts(KindType.Artifact, ModificationType.DELETED)) {
@@ -142,8 +152,13 @@ public class CreateActionArtifactChangeReportJob extends Job {
attrStrs.add(EnumeratedAttribute.UNSPECIFIED_VALUE);
}
for (String attrStr : attrStrs) {
- rd.addRaw(AHTML.addRowMultiColumnTable(new String[] {teamArt.getHumanReadableId(), buildId,
- artChg.getName(), attrStr, rpcrNum, "Deleted"}));
+ rd.addRaw(AHTML.addRowMultiColumnTable(new String[] {
+ teamArt.getHumanReadableId(),
+ buildId,
+ artChg.getName(),
+ attrStr,
+ rpcrNum,
+ "Deleted"}));
}
}
for (Artifact artChg : changeData.getArtifacts(KindType.RelationOnly, ModificationType.NEW,
@@ -153,8 +168,13 @@ public class CreateActionArtifactChangeReportJob extends Job {
attrStrs.add(EnumeratedAttribute.UNSPECIFIED_VALUE);
}
for (String attrStr : attrStrs) {
- rd.addRaw(AHTML.addRowMultiColumnTable(new String[] {teamArt.getHumanReadableId(), buildId,
- artChg.getName(), attrStr, rpcrNum, "Relation"}));
+ rd.addRaw(AHTML.addRowMultiColumnTable(new String[] {
+ teamArt.getHumanReadableId(),
+ buildId,
+ artChg.getName(),
+ attrStr,
+ rpcrNum,
+ "Relation"}));
}
}
}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/report/ExtendedStatusReportJob.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/report/ExtendedStatusReportJob.java
index 128e25cdbf4..6b5d2762cf5 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/report/ExtendedStatusReportJob.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/report/ExtendedStatusReportJob.java
@@ -168,8 +168,7 @@ public class ExtendedStatusReportJob extends Job {
String desc = sma.getDescription();
if (sma instanceof TaskArtifact) {
TaskArtifact taskArt = (TaskArtifact) sma;
- desc =
- taskArt.getDescription() + " " + taskArt.getSoleAttributeValue(AtsAttributeTypes.Resolution, "");
+ desc = taskArt.getDescription() + " " + taskArt.getSoleAttributeValue(AtsAttributeTypes.Resolution, "");
}
if (desc.matches("^ *$")) {
values.add(".");
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/task/TaskComposite.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/task/TaskComposite.java
index 9d3f8c7ae3e..dcc623dea35 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/task/TaskComposite.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/task/TaskComposite.java
@@ -269,7 +269,9 @@ public class TaskComposite extends Composite implements IWorldViewerEventHandler
});
DropTarget target = new DropTarget(taskXViewer.getTree(), DND.DROP_COPY);
- target.setTransfer(new Transfer[] {FileTransfer.getInstance(), TextTransfer.getInstance(),
+ target.setTransfer(new Transfer[] {
+ FileTransfer.getInstance(),
+ TextTransfer.getInstance(),
ArtifactTransfer.getInstance()});
target.addDropListener(new DropTargetAdapter() {
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/task/TaskXViewer.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/task/TaskXViewer.java
index ade002d5ff5..a5530239e3a 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/task/TaskXViewer.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/task/TaskXViewer.java
@@ -238,8 +238,8 @@ public class TaskXViewer extends WorldXViewer {
public void run() {
try {
boolean success =
- PromptChangeUtil.promptChangeAttribute(getSelectedTaskArtifacts(),
- AtsAttributeTypes.RelatedToState, false, true);
+ PromptChangeUtil.promptChangeAttribute(getSelectedTaskArtifacts(), AtsAttributeTypes.RelatedToState,
+ false, true);
if (success) {
editor.onDirtied();
update(getSelectedTaskArtifacts().toArray(), null);
@@ -255,8 +255,8 @@ public class TaskXViewer extends WorldXViewer {
public void run() {
try {
boolean success =
- PromptChangeUtil.promptChangeAttribute(getSelectedTaskArtifacts(), AtsAttributeTypes.SmaNote,
- false, true);
+ PromptChangeUtil.promptChangeAttribute(getSelectedTaskArtifacts(), AtsAttributeTypes.SmaNote, false,
+ true);
if (success) {
editor.onDirtied();
update(getSelectedTaskArtifacts().toArray(), null);
@@ -343,7 +343,7 @@ public class TaskXViewer extends WorldXViewer {
}
public boolean handleChangeResolution() throws OseeCoreException {
- // Ensure tasks are related to current state of workflow
+ // Ensure tasks are related to current state of workflow
SMAPromptChangeStatus promptChangeStatus = new SMAPromptChangeStatus(getSelectedTaskArtifacts());
Result result = promptChangeStatus.isValidToChangeStatus();
if (result.isFalse()) {
@@ -377,13 +377,11 @@ public class TaskXViewer extends WorldXViewer {
boolean modified = false;
if (isSelectedTaskArtifactsAreInWork() && xCol.equals(WorldXViewerFactory.Estimated_Hours_Col)) {
- modified =
- PromptChangeUtil.promptChangeAttribute(taskArt, AtsAttributeTypes.EstimatedHours, false, false);
+ modified = PromptChangeUtil.promptChangeAttribute(taskArt, AtsAttributeTypes.EstimatedHours, false, false);
} else if (isSelectedTaskArtifactsAreInWork() && xCol.equals(WorldXViewerFactory.Title_Col)) {
modified = PromptChangeUtil.promptChangeAttribute(taskArt, AtsAttributeTypes.Title, false, false);
} else if (isSelectedTaskArtifactsAreInWork() && xCol.equals(WorldXViewerFactory.Related_To_State_Col)) {
- modified =
- PromptChangeUtil.promptChangeAttribute(taskArt, AtsAttributeTypes.RelatedToState, false, false);
+ modified = PromptChangeUtil.promptChangeAttribute(taskArt, AtsAttributeTypes.RelatedToState, false, false);
} else if (isSelectedTaskArtifactsAreInWork() && xCol.equals(WorldXViewerFactory.Assignees_Col)) {
modified = PromptChangeUtil.promptChangeAssignees(taskArt, false);
} else if (isUsingTaskResolutionOptions() && (xCol.equals(WorldXViewerFactory.Hours_Spent_State_Col) || xCol.equals(WorldXViewerFactory.Hours_Spent_Total_Col) || xCol.equals(WorldXViewerFactory.Percent_Complete_State_Col) || xCol.equals(WorldXViewerFactory.Percent_Complete_Total_Col))) {
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/AtsBranchManager.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/AtsBranchManager.java
index 5d56c7ba7f6..0491617c1fb 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/AtsBranchManager.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/AtsBranchManager.java
@@ -117,7 +117,6 @@ public class AtsBranchManager {
/**
* Return true if merge branch exists in DB (whether archived or not)
*
- * @param destinationBranch
* @return true
* @throws OseeCoreException
*/
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 70726258c94..4366c3c614b 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
@@ -238,7 +238,6 @@ public final class AtsUtil {
/**
* Only to be used by browser. Use open (artifact) instead.
*
- * @param guid
* @throws OseeCoreException
*/
public static void openArtifact(String guid, OseeEditor view) {
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/DoesNotWorkItemAts.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/DoesNotWorkItemAts.java
index 6b973436c76..66f41bef96c 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/DoesNotWorkItemAts.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/DoesNotWorkItemAts.java
@@ -129,8 +129,7 @@ public class DoesNotWorkItemAts extends XNavigateItemAction {
ElapsedTime time = new ElapsedTime("My World via Attribute Search");
List<Artifact> assignedList =
- ArtifactQuery.getArtifactListFromAttribute(AtsAttributeTypes.CurrentState, "%727536%",
- AtsUtil.getAtsBranch());
+ ArtifactQuery.getArtifactListFromAttribute(AtsAttributeTypes.CurrentState, "%727536%", AtsUtil.getAtsBranch());
System.out.println("Returned " + assignedList.size() + " objects");
time.end();
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/Import/ActionImportPage.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/Import/ActionImportPage.java
index 6fe78b49f25..4c43c191f6a 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/Import/ActionImportPage.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/Import/ActionImportPage.java
@@ -45,10 +45,6 @@ public class ActionImportPage extends WizardDataTransferPage {
private Label actionLabel;
private Button emailPocs;
- /**
- * @param pageName
- * @param selection
- */
public ActionImportPage(String pageName, IStructuredSelection selection) {
super(pageName);
setTitle("Import Actions into ATS");
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/Overview.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/Overview.java
index 577789b3396..244753e4d40 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/Overview.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/Overview.java
@@ -86,8 +86,6 @@ public class Overview {
/**
* Return label with value converted to show html reserved characters
*
- * @param label
- * @param value
* @return string to embed into html
*/
public String getLabelValue(String label, String value) {
@@ -98,8 +96,6 @@ public class Overview {
/**
* Return label and value WITHOUT conversion to handle html reserved characters. Value will be as-is
*
- * @param label
- * @param value
* @return string to embed into html
*/
public String getLabelValueNoConvert(String label, String value) {
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/SMAUtil.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/SMAUtil.java
index b8bad90cebc..bc703ba6fdd 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/SMAUtil.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/SMAUtil.java
@@ -150,8 +150,6 @@ public class SMAUtil {
/**
* Returns sma if change type, or parent team workflow's change type is in specified set
*
- * @param changeTypes
- * @param artifacts
* @throws OseeCoreException
*/
public static Collection<StateMachineArtifact> getChangeType(Collection<ChangeType> changeTypes, Collection<StateMachineArtifact> artifacts) throws OseeCoreException {
@@ -169,8 +167,6 @@ public class SMAUtil {
/**
* Returns sma if priority type, or parent team workflow's priority type is in specified set
*
- * @param priorityTypes
- * @param artifacts
* @throws OseeCoreException
*/
public static Collection<StateMachineArtifact> getPriorityType(Collection<PriorityType> priorityTypes, Collection<StateMachineArtifact> artifacts) throws OseeCoreException {
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 d3cef956194..65642d837dc 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
@@ -54,8 +54,6 @@ public class StateManager {
/**
* Get state and create if not there.
*
- * @param name
- * @param create
* @return state matching name
*/
private SMAState getSMAState(String name, boolean create) throws OseeCoreException {
@@ -70,7 +68,6 @@ public class StateManager {
* Discouraged Access. This method should not normally be called except in cases were state data is being manually
* created.
*
- * @param name
* @throws OseeCoreException
*/
public void internalCreateIfNotExists(String name) throws OseeCoreException {
@@ -110,7 +107,6 @@ public class StateManager {
/**
* Return Hours Spent for State
*
- * @param stateName
* @return hours spent or 0 if none
*/
public double getHoursSpent(String stateName) throws OseeCoreException {
@@ -128,7 +124,6 @@ public class StateManager {
/**
* Return Percent Complete for State
*
- * @param stateName
* @return percent complete or 0 if none
*/
public int getPercentComplete(String stateName) throws OseeCoreException {
@@ -195,7 +190,6 @@ public class StateManager {
/**
* Sets the assignees as attributes and relations AND writes to SMA. Does not persist.
*
- * @param assignees
* @throws Exception
*/
public void setAssignees(Collection<User> assignees) throws OseeCoreException {
@@ -207,7 +201,6 @@ public class StateManager {
/**
* Sets the assignee AND writes to SMA. Does not persist.
*
- * @param assignee
* @throws Exception
*/
public void setAssignee(String stateName, User assignee) throws OseeCoreException {
@@ -222,7 +215,6 @@ public class StateManager {
/**
* Sets the assignee AND writes to SMA. Does not persist.
*
- * @param assignee
* @throws Exception
*/
public void setAssignee(User assignee) throws OseeCoreException {
@@ -234,8 +226,6 @@ public class StateManager {
/**
* Removes the assignee from stateName state AND writes to SMA. Does not persist.
*
- * @param stateName
- * @param assignee
* @throws Exception
*/
public void removeAssignee(String stateName, User assignee) throws OseeCoreException {
@@ -250,7 +240,6 @@ public class StateManager {
/**
* Removes the assignee AND writes to SMA. Does not persist.
*
- * @param assignee
* @throws Exception
*/
public void removeAssignee(User assignee) throws OseeCoreException {
@@ -262,7 +251,6 @@ public class StateManager {
/**
* Adds the assignee AND writes to SMA. Does not persist. Will remove UnAssigned user if another assignee exists.
*
- * @param assignee
* @throws Exception
*/
public void addAssignee(User assignee) throws OseeCoreException {
@@ -277,7 +265,6 @@ public class StateManager {
/**
* Removes ALL assignees AND writes to SMA. Does not persist.
*
- * @param assignee
* @throws Exception
*/
public void clearAssignees() throws OseeCoreException {
@@ -309,7 +296,6 @@ public class StateManager {
/**
* Initializes state machine and sets the current state to stateName
*
- * @param stateName
* @throws Exception
*/
public void initializeStateMachine(String stateName) throws OseeCoreException {
@@ -319,8 +305,6 @@ public class StateManager {
/**
* Initializes state machine and sets the current state to stateName
*
- * @param stateName
- * @param assignees
* @throws Exception
*/
public void initializeStateMachine(String stateName, Collection<User> assignees) throws OseeCoreException {
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/VersionReportJob.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/VersionReportJob.java
index cfc5dd1568a..bc4cdcc453c 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/VersionReportJob.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/VersionReportJob.java
@@ -156,9 +156,13 @@ public class VersionReportJob extends Job {
}
System.out.println(str);
sb.append(AHTML.addRowMultiColumnTable(
- new String[] {"Action", team.getTeamName(), team.getWorldViewPriority(),
- team.getWorldViewChangeTypeStr(), team.getName(), team.getHumanReadableId()}, null,
- (x % 2 == 0 ? null : "#cccccc")));
+ new String[] {
+ "Action",
+ team.getTeamName(),
+ team.getWorldViewPriority(),
+ team.getWorldViewChangeTypeStr(),
+ team.getName(),
+ team.getHumanReadableId()}, null, (x % 2 == 0 ? null : "#cccccc")));
for (TaskArtifact taskArt : team.getTaskArtifacts()) {
sb.append(AHTML.addRowMultiColumnTable(
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/DecisionOption.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/DecisionOption.java
index 3c4cf036026..0cfdd856279 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/DecisionOption.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/DecisionOption.java
@@ -83,7 +83,6 @@ public class DecisionOption {
/**
* Sets the assigness but DOES NOT write to SMA. This method should NOT be called outside the StateMachineArtifact.
*
- * @param assignees
*/
public void setAssignees(Collection<User> assignees) {
this.assignees.clear();
@@ -95,7 +94,6 @@ public class DecisionOption {
/**
* Sets the assignes but DOES NOT write to SMA. This method should NOT be called outside the StateMachineArtifact.
*
- * @param assignee
*/
public void setAssignee(User assignee) {
this.assignees.clear();
@@ -104,9 +102,6 @@ public class DecisionOption {
}
}
- /**
- * @param assignee
- */
public void addAssignee(User assignee) {
if (assignee != null) {
this.assignees.add(assignee);
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/SMAState.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/SMAState.java
index 660f7009696..44239defc51 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/SMAState.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/SMAState.java
@@ -88,7 +88,6 @@ public class SMAState {
/**
* Sets the assignees but DOES NOT write to SMA. This method should NOT be called outside the StateMachineArtifact.
*
- * @param assignees
* @throws OseeCoreException
*/
public void setAssignees(Collection<User> assignees) throws OseeCoreException {
@@ -117,7 +116,6 @@ public class SMAState {
/**
* Sets the assignees but DOES NOT write to SMA. This method should NOT be called outside the StateMachineArtifact.
*
- * @param assignee
* @throws OseeCoreException
* @throws IllegalOseeArgumentException
*/
@@ -134,9 +132,6 @@ public class SMAState {
}
}
- /**
- * @param assignee
- */
public void addAssignee(User assignee) throws OseeCoreException {
if (assignee == UserManager.getUser(SystemUser.OseeSystem) || assignee == UserManager.getUser(SystemUser.Guest)) {
throw new OseeArgumentException("Can not assign workflow to OseeSystem or Guest");
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/defect/DefectXViewer.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/defect/DefectXViewer.java
index 5f1c9a5fa98..1eb69d69015 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/defect/DefectXViewer.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/defect/DefectXViewer.java
@@ -57,10 +57,6 @@ public class DefectXViewer extends XViewer {
private Action editLocationAction;
private Action editResolutionAction;
- /**
- * @param parent
- * @param style
- */
DefectXViewer(Composite parent, int style, XDefectViewer xDefectViewer) {
this(parent, style, new DefectXViewerFactory(), xDefectViewer);
}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/defect/XDefectViewer.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/defect/XDefectViewer.java
index e5abd02ac66..11f12c13f7f 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/defect/XDefectViewer.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/defect/XDefectViewer.java
@@ -497,12 +497,27 @@ public class XDefectViewer extends XWidget implements IArtifactWidget, IArtifact
try {
html.append(AHTML.addSpace(1) + AHTML.getLabelStr(AHTML.LABEL_FONT, "Tasks"));
html.append(AHTML.startBorderTable(100, normalColor, ""));
- html.append(AHTML.addHeaderRowMultiColumnTable(new String[] {"Date", "User", "Location", "Description",
- "Severity", "Disposition", "Injection Activity", "Resolution", "Location", "Closted"}));
+ html.append(AHTML.addHeaderRowMultiColumnTable(new String[] {
+ "Date",
+ "User",
+ "Location",
+ "Description",
+ "Severity",
+ "Disposition",
+ "Injection Activity",
+ "Resolution",
+ "Location",
+ "Closted"}));
for (DefectItem item : reviewArt.getDefectManager().getDefectItems()) {
- html.append(AHTML.addRowMultiColumnTable(new String[] {item.getCreatedDate(XDate.MMDDYY),
- item.getUser().getName(), item.getLocation(), item.getDescription(), item.getSeverity().name(),
- item.getDisposition().name(), item.getInjectionActivity().name(), item.getResolution(),
+ html.append(AHTML.addRowMultiColumnTable(new String[] {
+ item.getCreatedDate(XDate.MMDDYY),
+ item.getUser().getName(),
+ item.getLocation(),
+ item.getDescription(),
+ item.getSeverity().name(),
+ item.getDisposition().name(),
+ item.getInjectionActivity().name(),
+ item.getResolution(),
item.isClosed() + ""}));
}
html.append(AHTML.endBorderTable());
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/dialog/ActionTeamVersionListDialog.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/dialog/ActionTeamVersionListDialog.java
index a7ad3808496..cc111ed9484 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/dialog/ActionTeamVersionListDialog.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/dialog/ActionTeamVersionListDialog.java
@@ -42,9 +42,6 @@ public class ActionTeamVersionListDialog extends ActionTeamListDialog {
XListViewer versionList = new XListViewer("Version");
VersionArtifact selectedVersion = null;
- /**
- * @param active
- */
public ActionTeamVersionListDialog(Active active) {
super(active);
}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/dialog/SimpleTaskResolutionOptionsRule.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/dialog/SimpleTaskResolutionOptionsRule.java
index 7271330d931..bbd14408f3b 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/dialog/SimpleTaskResolutionOptionsRule.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/dialog/SimpleTaskResolutionOptionsRule.java
@@ -49,11 +49,6 @@ public class SimpleTaskResolutionOptionsRule extends TaskResolutionOptionRule {
//
"</AtsTaskOptions>";
- /**
- * @param name
- * @param id
- * @param value
- */
public SimpleTaskResolutionOptionsRule() {
super(ID, ID, resolutionOptionsXml);
}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/dialog/StateListAndTitleDialog.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/dialog/StateListAndTitleDialog.java
index d8d45abb7c6..b4be610c686 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/dialog/StateListAndTitleDialog.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/dialog/StateListAndTitleDialog.java
@@ -30,11 +30,6 @@ public class StateListAndTitleDialog extends StateListDialog {
String reviewTitle;
XText titleText;
- /**
- * @param title
- * @param message
- * @param values
- */
public StateListAndTitleDialog(String title, String message, Collection<String> values) {
super(title, message, values);
}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/dialog/TaskOptionStatusDialog.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/dialog/TaskOptionStatusDialog.java
index 3632802be15..a54908addbe 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/dialog/TaskOptionStatusDialog.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/dialog/TaskOptionStatusDialog.java
@@ -59,10 +59,10 @@ public class TaskOptionStatusDialog extends SMAStatusDialog {
protected IStatus isComplete() {
TaskResOptionDefinition trd = getSelectedOptionDef();
int percentComp = percent.getInt();
- if ((trd != null && trd.isCompleteable()) && percentComp != 100) {
+ if (trd != null && trd.isCompleteable() && percentComp != 100) {
return new Status(IStatus.ERROR, AtsPlugin.PLUGIN_ID, "Completed resolution must have %Complete == 100");
}
- if (percentComp == 100 && (trd != null && !trd.isCompleteable())) {
+ if (percentComp == 100 && trd != null && !trd.isCompleteable()) {
return new Status(IStatus.ERROR, AtsPlugin.PLUGIN_ID,
"Can't have 100% complete with a non-Completed resolution");
}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/dialog/TaskResOptionDefinition.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/dialog/TaskResOptionDefinition.java
index e74555e9359..4447ed2a309 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/dialog/TaskResOptionDefinition.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/dialog/TaskResOptionDefinition.java
@@ -69,8 +69,6 @@ public class TaskResOptionDefinition {
}
/**
- * @param name
- * @param desc
* @param completeable true if option allows task to be transitioned to complete
* @param color BLUE, RED, etc...; "" for black
*/
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/dialog/TaskResolutionOptionRule.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/dialog/TaskResolutionOptionRule.java
index 4c3c36ccfe9..5059aa7c6ca 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/dialog/TaskResolutionOptionRule.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/dialog/TaskResolutionOptionRule.java
@@ -105,7 +105,6 @@ public class TaskResolutionOptionRule extends WorkRuleDefinition {
* Return the order index number of the given option name. Used for comparisons of resolutions like < and > by
* getting both indexes and doing a mathmatical comparison.
*
- * @param name
* @return index number (starting at 1) or null if not found
*/
public Integer getResolutionOptionOrderIndex(String name) {
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/role/UserRoleXViewer.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/role/UserRoleXViewer.java
index eec0ef63895..2da442e3d1f 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/role/UserRoleXViewer.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/role/UserRoleXViewer.java
@@ -45,10 +45,6 @@ public class UserRoleXViewer extends XViewer {
private final XUserRoleViewer xUserRoleViewer;
- /**
- * @param parent
- * @param style
- */
public UserRoleXViewer(Composite parent, int style, XUserRoleViewer xUserRoleViewer) {
super(parent, style, new UserRoleXViewerFactory());
this.xUserRoleViewer = xUserRoleViewer;
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/role/XUserRoleViewer.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/role/XUserRoleViewer.java
index 65722a8319f..b4449d37362 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/role/XUserRoleViewer.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/role/XUserRoleViewer.java
@@ -407,11 +407,19 @@ public class XUserRoleViewer extends XWidget implements IArtifactWidget, IArtifa
try {
html.append(AHTML.addSpace(1) + AHTML.getLabelStr(AHTML.LABEL_FONT, "Tasks"));
html.append(AHTML.startBorderTable(100, normalColor, ""));
- html.append(AHTML.addHeaderRowMultiColumnTable(new String[] {"Role", "User", "Hours", "Major", "Minor",
+ html.append(AHTML.addHeaderRowMultiColumnTable(new String[] {
+ "Role",
+ "User",
+ "Hours",
+ "Major",
+ "Minor",
"Issues"}));
for (UserRole item : reviewArt.getUserRoleManager().getUserRoles()) {
- html.append(AHTML.addRowMultiColumnTable(new String[] {item.getRole().name(), item.getUser().getName(),
- item.getHoursSpentStr(), reviewArt.getUserRoleManager().getNumMajor(item.getUser()) + "",
+ html.append(AHTML.addRowMultiColumnTable(new String[] {
+ item.getRole().name(),
+ item.getUser().getName(),
+ item.getHoursSpentStr(),
+ reviewArt.getUserRoleManager().getNumMajor(item.getUser()) + "",
reviewArt.getUserRoleManager().getNumMinor(item.getUser()) + "",
reviewArt.getUserRoleManager().getNumIssues(item.getUser()) + ""}));
}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/xviewer/column/XViewerReviewRoleColumn.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/xviewer/column/XViewerReviewRoleColumn.java
index 29e5cf5ca1e..981d08c87df 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/xviewer/column/XViewerReviewRoleColumn.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/xviewer/column/XViewerReviewRoleColumn.java
@@ -30,7 +30,6 @@ public class XViewerReviewRoleColumn extends XViewerValueColumn {
* XViewer uses copies of column definitions so originals that are registered are not corrupted. Classes extending
* XViewerValueColumn need to extend this constructor to copy extra stored fields
*
- * @param col
*/
@Override
public XViewerReviewRoleColumn copy() {
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/xviewer/column/XViewerSmaCompletedDateColumn.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/xviewer/column/XViewerSmaCompletedDateColumn.java
index 84422b7ccdf..033f0c9b94d 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/xviewer/column/XViewerSmaCompletedDateColumn.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/xviewer/column/XViewerSmaCompletedDateColumn.java
@@ -40,7 +40,6 @@ public class XViewerSmaCompletedDateColumn extends XViewerValueColumn {
* XViewer uses copies of column definitions so originals that are registered are not corrupted. Classes extending
* XViewerValueColumn need to extend this constructor to copy extra stored fields
*
- * @param col
*/
@Override
public XViewerSmaCompletedDateColumn copy() {
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/xviewer/column/XViewerSmaCreatedDateColumn.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/xviewer/column/XViewerSmaCreatedDateColumn.java
index ce78569a257..c29334a9ffe 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/xviewer/column/XViewerSmaCreatedDateColumn.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/xviewer/column/XViewerSmaCreatedDateColumn.java
@@ -40,7 +40,6 @@ public class XViewerSmaCreatedDateColumn extends XViewerValueColumn {
* XViewer uses copies of column definitions so originals that are registered are not corrupted. Classes extending
* XViewerValueColumn need to extend this constructor to copy extra stored fields
*
- * @param col
*/
@Override
public XViewerSmaCreatedDateColumn copy() {
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/xviewer/column/XViewerSmaStateColumn.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/xviewer/column/XViewerSmaStateColumn.java
index 7cd0ea73bc6..e2cd7f20964 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/xviewer/column/XViewerSmaStateColumn.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/xviewer/column/XViewerSmaStateColumn.java
@@ -36,7 +36,6 @@ public class XViewerSmaStateColumn extends XViewerValueColumn {
* XViewer uses copies of column definitions so originals that are registered are not corrupted. Classes extending
* XViewerValueColumn need to extend this constructor to copy extra stored fields
*
- * @param col
*/
@Override
public XViewerSmaStateColumn copy() {
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/ATSXWidgetOptionResolver.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/ATSXWidgetOptionResolver.java
index 0eabcf3a582..c23ad7f1d8d 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/ATSXWidgetOptionResolver.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/ATSXWidgetOptionResolver.java
@@ -26,9 +26,6 @@ public class ATSXWidgetOptionResolver extends DefaultXWidgetOptionResolver {
private static ATSXWidgetOptionResolver instance = new ATSXWidgetOptionResolver();
public static String OPTIONS_FROM_ATTRIBUTE_VALIDITY = "OPTIONS_FROM_ATTRIBUTE_VALIDITY";
- /**
- *
- */
private ATSXWidgetOptionResolver() {
instance = this;
}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/AtsWorkflowConfigEditor.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/AtsWorkflowConfigEditor.java
index 6e2e0bc558b..3c41376e7e6 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/AtsWorkflowConfigEditor.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/AtsWorkflowConfigEditor.java
@@ -140,7 +140,7 @@ public class AtsWorkflowConfigEditor extends GraphicalEditorWithFlyoutPalette im
super.configurePaletteViewer(viewer);
// create a drag source listener for this palette viewer
// together with an appropriate transfer drop target listener, this will enable
- // model element creation by dragging a CombinatedTemplateCreationEntries
+ // model element creation by dragging a CombinatedTemplateCreationEntries
// from the palette into the editor
// @see ShapesEditor#createTransferDropTargetListener()
viewer.addDragSourceListener(new TemplateTransferDragSourceListener(viewer));
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/actions/ValidateDiagramToolEntry.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/actions/ValidateDiagramToolEntry.java
index f216c2c5e3d..97b0feb912a 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/actions/ValidateDiagramToolEntry.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/actions/ValidateDiagramToolEntry.java
@@ -19,12 +19,6 @@ import org.eclipse.osee.framework.ui.swt.ImageManager;
*/
public class ValidateDiagramToolEntry extends ToolEntry {
- /**
- * @param label
- * @param shortDesc
- * @param iconSmall
- * @param iconLarge
- */
public ValidateDiagramToolEntry() {
super("Validate Diagram", "Validate", ImageManager.getImageDescriptor(AtsImage.CHECK_BLUE),
ImageManager.getImageDescriptor(AtsImage.CHECK_BLUE), ValidateDiagramTool.class);
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/CancelledWorkPageShape.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/CancelledWorkPageShape.java
index 65b45b100c3..cb353f9a3d2 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/CancelledWorkPageShape.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/CancelledWorkPageShape.java
@@ -22,9 +22,6 @@ import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkPageDefinition;
*/
public class CancelledWorkPageShape extends WorkPageShape {
- /**
- * @param workPageDefinition
- */
public CancelledWorkPageShape(WorkPageDefinition workPageDefinition) {
super(workPageDefinition);
}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/CompletedWorkPageShape.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/CompletedWorkPageShape.java
index 2cc6e3c089c..0ca2d546692 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/CompletedWorkPageShape.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/CompletedWorkPageShape.java
@@ -38,9 +38,6 @@ public class CompletedWorkPageShape extends WorkPageShape {
return super.equals(obj);
}
- /**
- * @param workPageDefinition
- */
public CompletedWorkPageShape(WorkPageDefinition workPageDefinition) {
super(workPageDefinition);
}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/DefaultTransitionConnection.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/DefaultTransitionConnection.java
index 85f4c659ab7..94ad6a74043 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/DefaultTransitionConnection.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/DefaultTransitionConnection.java
@@ -19,10 +19,6 @@ import org.eclipse.swt.graphics.Color;
*/
public class DefaultTransitionConnection extends TransitionConnection {
- /**
- * @param source
- * @param target
- */
public DefaultTransitionConnection(Shape source, Shape target) {
super(source, target);
}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/ReturnTransitionConnection.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/ReturnTransitionConnection.java
index 26e4279f547..db8b9754b7f 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/ReturnTransitionConnection.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/ReturnTransitionConnection.java
@@ -17,10 +17,6 @@ import org.eclipse.draw2d.Graphics;
*/
public class ReturnTransitionConnection extends TransitionConnection {
- /**
- * @param source
- * @param target
- */
public ReturnTransitionConnection(Shape source, Shape target) {
super(source, target);
}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/WorkPageShape.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/WorkPageShape.java
index 0e7faee75af..2ffc3b7c662 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/WorkPageShape.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/WorkPageShape.java
@@ -38,9 +38,9 @@ import org.eclipse.ui.views.properties.TextPropertyDescriptor;
*/
public class WorkPageShape extends RectangleShape {
private static final String[] attributeProperties = new String[] { //
- CoreAttributeTypes.WorkPageName.getName(), //
- CoreAttributeTypes.WorkId.getName(), //
- CoreAttributeTypes.WorkParentId.getName(),//
+ CoreAttributeTypes.WorkPageName.getName(), //
+ CoreAttributeTypes.WorkId.getName(), //
+ CoreAttributeTypes.WorkParentId.getName(),//
};
private final WorkPageDefinition workPageDefinition;
@@ -70,8 +70,8 @@ public class WorkPageShape extends RectangleShape {
super.setWorkflowDiagram(workflowDiagram);
if (getId().equals("NEW")) {
setPropertyValue(
- CoreAttributeTypes.WorkId.getName(),
- workflowDiagram.getWorkFlowDefinition().getId() + "." + getPropertyValue(CoreAttributeTypes.WorkPageName.getName()));
+ CoreAttributeTypes.WorkId.getName(),
+ workflowDiagram.getWorkFlowDefinition().getId() + "." + getPropertyValue(CoreAttributeTypes.WorkPageName.getName()));
}
}
@@ -81,7 +81,8 @@ public class WorkPageShape extends RectangleShape {
for (String type : attributeProperties) {
descriptorList.add(new TextPropertyDescriptor(type, type)); // id and description pair
}
- descriptorList.add(new ComboBoxPropertyDescriptor(START_PAGE, START_PAGE, new String[] {StartPageEnum.Yes.name(),
+ descriptorList.add(new ComboBoxPropertyDescriptor(START_PAGE, START_PAGE, new String[] {
+ StartPageEnum.Yes.name(),
StartPageEnum.No.name()}));
}
@@ -89,9 +90,9 @@ public class WorkPageShape extends RectangleShape {
protected void initializePropertyValues() throws OseeCoreException {
if (propertyValues == null) {
super.initializePropertyValues();
- super.setPropertyValue(CoreAttributeTypes.WorkPageName.getName(), workPageDefinition.getPageName());
- super.setPropertyValue(CoreAttributeTypes.WorkId.getName(), workPageDefinition.getId());
- super.setPropertyValue(CoreAttributeTypes.WorkParentId.getName(),
+ super.setPropertyValue(CoreAttributeTypes.WorkPageName.getName(), workPageDefinition.getPageName());
+ super.setPropertyValue(CoreAttributeTypes.WorkId.getName(), workPageDefinition.getId());
+ super.setPropertyValue(CoreAttributeTypes.WorkParentId.getName(),
workPageDefinition.getParentId() == null ? "" : workPageDefinition.getParentId());
}
}
@@ -131,15 +132,15 @@ public class WorkPageShape extends RectangleShape {
@Override
public Result validForSave() {
try {
- String pageName = (String) getPropertyValue(CoreAttributeTypes.WorkPageName.getName());
+ String pageName = (String) getPropertyValue(CoreAttributeTypes.WorkPageName.getName());
if (!Strings.isValid(pageName)) {
- return new Result(CoreAttributeTypes.WorkPageName.getName() + " can not be null");
+ return new Result(CoreAttributeTypes.WorkPageName.getName() + " can not be null");
}
- String pageId = (String) getPropertyValue(CoreAttributeTypes.WorkId.getName());
+ String pageId = (String) getPropertyValue(CoreAttributeTypes.WorkId.getName());
if (!Strings.isValid(pageId)) {
- return new Result(CoreAttributeTypes.WorkId.getName() + " can not be null");
+ return new Result(CoreAttributeTypes.WorkId.getName() + " can not be null");
}
- String parentPageId = (String) getPropertyValue(CoreAttributeTypes.WorkParentId.getName());
+ String parentPageId = (String) getPropertyValue(CoreAttributeTypes.WorkParentId.getName());
if (Strings.isValid(parentPageId)) {
if (WorkItemDefinitionFactory.getWorkItemDefinition(parentPageId) == null) {
return new Result("Parent Id " + parentPageId + " Work Page Definition must exist and does not.");
@@ -175,7 +176,7 @@ public class WorkPageShape extends RectangleShape {
@Override
public String getName() {
- return (String) getPropertyValue(CoreAttributeTypes.WorkPageName.getName());
+ return (String) getPropertyValue(CoreAttributeTypes.WorkPageName.getName());
}
@Override
@@ -189,7 +190,7 @@ public class WorkPageShape extends RectangleShape {
}
public String getId() {
- return (String) getPropertyValue(CoreAttributeTypes.WorkId.getName());
+ return (String) getPropertyValue(CoreAttributeTypes.WorkId.getName());
}
@Override
@@ -209,17 +210,17 @@ public class WorkPageShape extends RectangleShape {
public void setPropertyValue(Object propertyId, Object value) {
try {
initializePropertyValues();
- if (CoreAttributeTypes.WorkPageName.getName().equals(propertyId)) {
- super.setPropertyValue(CoreAttributeTypes.WorkPageName.getName(), value);
- firePropertyChange(CoreAttributeTypes.WorkPageName.getName(), null, value);
- setPropertyValue(CoreAttributeTypes.WorkId.getName(),
+ if (CoreAttributeTypes.WorkPageName.getName().equals(propertyId)) {
+ super.setPropertyValue(CoreAttributeTypes.WorkPageName.getName(), value);
+ firePropertyChange(CoreAttributeTypes.WorkPageName.getName(), null, value);
+ setPropertyValue(CoreAttributeTypes.WorkId.getName(),
getWorkflowDiagram().getWorkFlowDefinition().getId() + "." + value);
- } else if (CoreAttributeTypes.WorkId.getName().equals(propertyId)) {
- super.setPropertyValue(CoreAttributeTypes.WorkId.getName(), value);
- firePropertyChange(CoreAttributeTypes.WorkId.getName(), null, value);
- } else if (CoreAttributeTypes.WorkParentId.getName().equals(propertyId)) {
- super.setPropertyValue(CoreAttributeTypes.WorkParentId.getName(), value);
- firePropertyChange(CoreAttributeTypes.WorkParentId.getName(), null, value);
+ } else if (CoreAttributeTypes.WorkId.getName().equals(propertyId)) {
+ super.setPropertyValue(CoreAttributeTypes.WorkId.getName(), value);
+ firePropertyChange(CoreAttributeTypes.WorkId.getName(), null, value);
+ } else if (CoreAttributeTypes.WorkParentId.getName().equals(propertyId)) {
+ super.setPropertyValue(CoreAttributeTypes.WorkParentId.getName(), value);
+ firePropertyChange(CoreAttributeTypes.WorkParentId.getName(), null, value);
} else if (START_PAGE.equals(propertyId)) {
super.setPropertyValue(START_PAGE, value);
firePropertyChange(START_PAGE, null, value);
@@ -233,9 +234,9 @@ public class WorkPageShape extends RectangleShape {
@Override
public Result doSave(SkynetTransaction transaction) throws OseeCoreException {
- String name = (String) getPropertyValue(CoreAttributeTypes.WorkPageName.getName());
- String workId = (String) getPropertyValue(CoreAttributeTypes.WorkId.getName());
- String parentWorkId = (String) getPropertyValue(CoreAttributeTypes.WorkParentId.getName());
+ String name = (String) getPropertyValue(CoreAttributeTypes.WorkPageName.getName());
+ String workId = (String) getPropertyValue(CoreAttributeTypes.WorkId.getName());
+ String parentWorkId = (String) getPropertyValue(CoreAttributeTypes.WorkParentId.getName());
workPageDefinition.setPageName(name);
workPageDefinition.setId(workId);
@@ -244,12 +245,12 @@ public class WorkPageShape extends RectangleShape {
if (artifact == null) {
artifact = workPageDefinition.toArtifact(WriteType.New);
} else {
- artifact.setSoleAttributeValue(CoreAttributeTypes.WorkPageName, name);
- artifact.setSoleAttributeValue(CoreAttributeTypes.WorkId, workId);
+ artifact.setSoleAttributeValue(CoreAttributeTypes.WorkPageName, name);
+ artifact.setSoleAttributeValue(CoreAttributeTypes.WorkId, workId);
if (!Strings.isValid(parentWorkId)) {
- artifact.deleteSoleAttribute(CoreAttributeTypes.WorkParentId);
+ artifact.deleteSoleAttribute(CoreAttributeTypes.WorkParentId);
} else {
- artifact.setSoleAttributeValue(CoreAttributeTypes.WorkParentId, parentWorkId);
+ artifact.setSoleAttributeValue(CoreAttributeTypes.WorkParentId, parentWorkId);
}
}
artifact.setName(workId);
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/WorkflowDiagram.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/WorkflowDiagram.java
index 78216e70e0b..cfce5ce5365 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/WorkflowDiagram.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/WorkflowDiagram.java
@@ -197,7 +197,7 @@ public class WorkflowDiagram extends ModelElement {
List<String> stateNames = new ArrayList<String>();
for (Shape shape : getChildren()) {
if (WorkPageShape.class.isAssignableFrom(shape.getClass())) {
- String name = (String) ((WorkPageShape) shape).getPropertyValue(CoreAttributeTypes.WorkPageName);
+ String name = (String) ((WorkPageShape) shape).getPropertyValue(CoreAttributeTypes.WorkPageName);
if (stateNames.contains(name)) {
return new Result(
"Workflow can not have more than one state of same name. Multiples found of name " + name);
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/commands/ShapeDeleteCommand.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/commands/ShapeDeleteCommand.java
index f7a11d53cf3..b95db14654d 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/commands/ShapeDeleteCommand.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/commands/ShapeDeleteCommand.java
@@ -70,7 +70,7 @@ public class ShapeDeleteCommand extends Command {
@Override
public void execute() {
- // store a copy of incoming & outgoing connections before proceeding
+ // store a copy of incoming & outgoing connections before proceeding
sourceConnections = child.getSourceConnections();
targetConnections = child.getTargetConnections();
redo();
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/parts/ConnectionEditPart.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/parts/ConnectionEditPart.java
index 0de2df2d1a0..d7a34bfe64d 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/parts/ConnectionEditPart.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/parts/ConnectionEditPart.java
@@ -51,7 +51,7 @@ class ConnectionEditPart extends AbstractConnectionEditPart implements PropertyC
@Override
protected void createEditPolicies() {
- // Selection handle edit policy.
+ // Selection handle edit policy.
// Makes the connection show a feedback, when selected by the user.
installEditPolicy(EditPolicy.CONNECTION_ENDPOINTS_ROLE, new ConnectionEndpointEditPolicy());
// Allows the removal of the connection model element
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/parts/DiagramEditPart.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/parts/DiagramEditPart.java
index cbafcf21bae..7b1e66fc63d 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/parts/DiagramEditPart.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/parts/DiagramEditPart.java
@@ -110,7 +110,7 @@ public class DiagramEditPart extends AbstractGraphicalEditPart implements Proper
@Override
public void propertyChange(PropertyChangeEvent evt) {
String prop = evt.getPropertyName();
- // these properties are fired when Shapes are added into or removed from
+ // these properties are fired when Shapes are added into or removed from
// the ShapeDiagram instance and must cause a call of refreshChildren()
// to update the diagram's contents.
if (WorkflowDiagram.CHILD_ADDED_PROP.equals(prop) || WorkflowDiagram.CHILD_REMOVED_PROP.equals(prop)) {
@@ -145,7 +145,7 @@ public class DiagramEditPart extends AbstractGraphicalEditPart implements Proper
protected Command getCreateCommand(CreateRequest request) {
Object childClass = request.getNewObjectType();
if (childClass == EllipticalShape.class || WorkPageShape.class.isAssignableFrom(((Class<?>) childClass))) {
- // return a command that can add a Shape to a WorkflowDiagram
+ // return a command that can add a Shape to a WorkflowDiagram
return new ShapeCreateCommand((Shape) request.getNewObject(), (WorkflowDiagram) getHost().getModel(),
(Rectangle) getConstraintFor(request));
}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/parts/ShapeEditPart.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/parts/ShapeEditPart.java
index 19f5d4ca739..a73796ce52e 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/parts/ShapeEditPart.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/parts/ShapeEditPart.java
@@ -72,7 +72,7 @@ class ShapeEditPart extends AbstractGraphicalEditPart implements PropertyChangeL
protected void createEditPolicies() {
// allow removal of the associated model element
installEditPolicy(EditPolicy.COMPONENT_ROLE, new ShapeComponentEditPolicy());
- // allow the creation of connections and
+ // allow the creation of connections and
// and the reconnection of connections between Shape instances
installEditPolicy(EditPolicy.GRAPHICAL_NODE_ROLE, new GraphicalNodeEditPolicy() {
@Override
@@ -234,7 +234,7 @@ class ShapeEditPart extends AbstractGraphicalEditPart implements PropertyChangeL
@Override
protected void refreshVisuals() {
// notify parent container of changed position & location
- // if this line is removed, the XYLayoutManager used by the parent container
+ // if this line is removed, the XYLayoutManager used by the parent container
// (the Figure of the ShapesDiagramEditPart), will not know the bounds of this figure
// and will not draw it correctly.
Rectangle bounds = new Rectangle(getCastedModel().getLocation(), getCastedModel().getSize());
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/wizard/AtsWorkflowConfigCreationWizard.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/wizard/AtsWorkflowConfigCreationWizard.java
index 66d2490993b..183c5ba703a 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/wizard/AtsWorkflowConfigCreationWizard.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/wizard/AtsWorkflowConfigCreationWizard.java
@@ -126,8 +126,8 @@ public class AtsWorkflowConfigCreationWizard extends Wizard implements INewWizar
WorkPageDefinition implementPage = new WorkPageDefinition("Implement", namespace + ".Implement", null);
implementPage.addWorkItem(RuleWorkItemId.atsRequireStateHourSpentPrompt.name());
- implementPage.addWorkItem(AtsAttributeTypes.WorkPackage);
- implementPage.addWorkItem(AtsAttributeTypes.Resolution);
+ implementPage.addWorkItem(AtsAttributeTypes.WorkPackage);
+ implementPage.addWorkItem(AtsAttributeTypes.Resolution);
WorkPageDefinition completedPage =
new WorkPageDefinition("Completed", namespace + ".Completed", AtsCompletedWorkPageDefinition.ID);
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/wizard/NewWorkflowConfigPage1.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/wizard/NewWorkflowConfigPage1.java
index b24ffc8ea92..86769697fbe 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/wizard/NewWorkflowConfigPage1.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/wizard/NewWorkflowConfigPage1.java
@@ -33,9 +33,6 @@ import org.eclipse.swt.widgets.Composite;
public class NewWorkflowConfigPage1 extends WizardPage {
private WorkPage page;
- /**
- * @param actionWizard
- */
public NewWorkflowConfigPage1(AtsWorkflowConfigCreationWizard actionWizard) {
super("Create new ATS Workflow Configuration", "Create ATS Workflow Configuration", null);
setMessage("Enter workflow namespace.");
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/flow/GoalWorkflowDefinition.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/flow/GoalWorkflowDefinition.java
index 3597842367d..12033ef9a76 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/flow/GoalWorkflowDefinition.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/flow/GoalWorkflowDefinition.java
@@ -57,11 +57,6 @@ public class GoalWorkflowDefinition extends WorkFlowDefinition {
return workItems;
}
- /**
- * @param name
- * @param id
- * @param parentId
- */
public GoalWorkflowDefinition(String name, String id) {
super(name, id, null);
addPageTransition(GoalState.InWork.name(), GoalState.Completed.name(), TransitionType.ToPageAsDefault);
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/flow/SimpleWorkflowDefinition.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/flow/SimpleWorkflowDefinition.java
index 9761e69b496..38dad271536 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/flow/SimpleWorkflowDefinition.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/flow/SimpleWorkflowDefinition.java
@@ -54,11 +54,6 @@ public class SimpleWorkflowDefinition extends WorkFlowDefinition {
addWorkItem(AtsStatePercentCompleteWeightSimpleWorkflowRule.ID);
}
- /**
- * @param name
- * @param id
- * @param parentId
- */
public SimpleWorkflowDefinition(String name, String workflowId) {
super(name, workflowId, null);
addDefaultTransitions(this, workflowId);
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/flow/TaskWorkflowDefinition.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/flow/TaskWorkflowDefinition.java
index 88192180f1a..75ba55b6d5f 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/flow/TaskWorkflowDefinition.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/flow/TaskWorkflowDefinition.java
@@ -61,11 +61,6 @@ public class TaskWorkflowDefinition extends WorkFlowDefinition {
return workItems;
}
- /**
- * @param name
- * @param id
- * @param parentId
- */
public TaskWorkflowDefinition(String name, String id) {
super(name, id, null);
addPageTransition(TaskStates.InWork.name(), TaskStates.Completed.name(), TransitionType.ToPageAsDefault);
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/flow/TeamWorkflowDefinition.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/flow/TeamWorkflowDefinition.java
index 9574f4489d5..3a107394a81 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/flow/TeamWorkflowDefinition.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/flow/TeamWorkflowDefinition.java
@@ -50,9 +50,6 @@ public class TeamWorkflowDefinition extends WorkFlowDefinition {
* Instantiate workflow as inherited from parentWorkflowId. Default transitions and startPageId are not set as they
* will most likely come from parent.
*
- * @param name
- * @param workflowId
- * @param parentWorkflowId
*/
public TeamWorkflowDefinition(String name, String workflowId, String parentWorkflowId) {
super(name, workflowId, parentWorkflowId);
@@ -65,9 +62,6 @@ public class TeamWorkflowDefinition extends WorkFlowDefinition {
/**
* Instantiate workflow as a TeamWorkflowDefinition with default transitions and startPageId set.
*
- * @param name
- * @param id
- * @param parentId
*/
public TeamWorkflowDefinition(String name, String workflowId) {
super(name, workflowId, null);
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/item/AtsAddDecisionReviewRule.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/item/AtsAddDecisionReviewRule.java
index e6198b8bcad..f099c42d7f9 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/item/AtsAddDecisionReviewRule.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/item/AtsAddDecisionReviewRule.java
@@ -82,8 +82,6 @@ public class AtsAddDecisionReviewRule extends WorkRuleDefinition {
/**
* Creates decision review if one of same name doesn't already exist
*
- * @param atsAddDecisionReviewRule
- * @param sma
* @return DecisionReviewArtifact
* @throws OseeCoreException
*/
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/item/AtsAddPeerToPeerReviewRule.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/item/AtsAddPeerToPeerReviewRule.java
index 107ada4d128..86925978654 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/item/AtsAddPeerToPeerReviewRule.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/item/AtsAddPeerToPeerReviewRule.java
@@ -74,9 +74,6 @@ public class AtsAddPeerToPeerReviewRule extends WorkRuleDefinition {
/**
* Creates PeerToPeer review if one of same name doesn't already exist
*
- * @param atsAddPeerToPeerReviewRule
- * @param sma
- * @param transaction
* @return review
* @throws OseeCoreException
*/
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 2e616bf5cd4..f5617e48cda 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
@@ -66,8 +66,7 @@ import org.eclipse.osee.framework.ui.skynet.widgets.workflow.XWidgetFactory;
public final class AtsWorkDefinitions implements IWorkDefinitionProvider {
public static final String ATS_DESCRIPTION_NOT_REQUIRED_ID = AtsAttributeTypes.Description + ".notRequired";
- public static final String ATS_ESTIMATED_HOURS_NOT_REQUIRED_ID =
- AtsAttributeTypes.EstimatedHours + ".notRequired";
+ public static final String ATS_ESTIMATED_HOURS_NOT_REQUIRED_ID = AtsAttributeTypes.EstimatedHours + ".notRequired";
public static enum RuleWorkItemId {
atsRequireStateHourSpentPrompt("Work Page Option: Will popup a dialog to prompt user for time spent in this state."),
@@ -151,8 +150,7 @@ public final class AtsWorkDefinitions implements IWorkDefinitionProvider {
workItems.add(new AtsAttributeXWidgetWorkItem("Decision",
AtsDecisionDecisionWorkPageDefinition.DECISION_ANSWER_LABEL, AtsAttributeTypes.Decision, "XLabelDam"));
- workItems.add(new AtsAttributeXWidgetWorkItem(AtsAttributeTypes.ProposedResolution, "XTextDam",
- FILL_VERTICALLY));
+ workItems.add(new AtsAttributeXWidgetWorkItem(AtsAttributeTypes.ProposedResolution, "XTextDam", FILL_VERTICALLY));
workItems.add(new AtsAttributeXWidgetWorkItem(AtsAttributeTypes.Description, "XTextDam", XOption.REQUIRED,
FILL_VERTICALLY));
workItems.add(new AtsAttributeXWidgetWorkItem(AtsAttributeTypes.Description.getUnqualifiedName(),
@@ -174,8 +172,8 @@ public final class AtsWorkDefinitions implements IWorkDefinitionProvider {
"OPTIONS_FROM_ATTRIBUTE_VALIDITY", XOption.REQUIRED, XOption.BEGIN_COMPOSITE_6));
workItems.add(new AtsAttributeSoleComboXWidgetWorkItem(AtsAttributeTypes.PriorityType,
"OPTIONS_FROM_ATTRIBUTE_VALIDITY", XOption.REQUIRED));
- workItems.add(new AtsAttributeXWidgetWorkItem(AtsAttributeTypes.NeedBy, "XDateDam",
- XOption.HORIZONTAL_LABEL, XOption.END_COMPOSITE));
+ workItems.add(new AtsAttributeXWidgetWorkItem(AtsAttributeTypes.NeedBy, "XDateDam", XOption.HORIZONTAL_LABEL,
+ XOption.END_COMPOSITE));
workItems.add(new AtsAttributeXWidgetWorkItem(AtsAttributeTypes.ValidationRequired, "XCheckBoxDam",
XOption.HORIZONTAL_LABEL, XOption.LABEL_BEFORE));
workItems.add(new AtsAttributeXWidgetWorkItem(AtsAttributeTypes.UserCommunity,
@@ -256,8 +254,11 @@ public final class AtsWorkDefinitions implements IWorkDefinitionProvider {
SkynetTransaction transaction = new SkynetTransaction(AtsUtil.getAtsBranch(), "Import ATS Work Item Definitions");
// Items must be imported in order due to the relations that are created between items
- for (Class<?> clazz : new Class[] {WorkRuleDefinition.class, WorkWidgetDefinition.class,
- WorkPageDefinition.class, WorkFlowDefinition.class}) {
+ for (Class<?> clazz : new Class[] {
+ WorkRuleDefinition.class,
+ WorkWidgetDefinition.class,
+ WorkPageDefinition.class,
+ WorkFlowDefinition.class}) {
for (WorkItemDefinition wid : workItemDefinitions) {
if (clazz.isInstance(wid)) {
// System.out.println("Adding " + wid.getId() + " as class " + clazz);
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
index b7d1981c507..99cb3e19212 100644
--- 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
@@ -341,7 +341,7 @@ public class LoadAIsAndTeamsAction {
//
// /**
// * We can use this method to dispose of any system resources we previously allocated.
- // *
+ // *
// * @see IWorkbenchWindowActionDelegate#dispose
// */
// public void dispose() {
@@ -349,7 +349,7 @@ public class LoadAIsAndTeamsAction {
//
// /**
// * 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) {
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/IAtsWorldEditorItem.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/IAtsWorldEditorItem.java
index 6515e96257a..71c54285697 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/IAtsWorldEditorItem.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/IAtsWorldEditorItem.java
@@ -36,8 +36,6 @@ public interface IAtsWorldEditorItem {
* Return menu item objects to add to the World Editor pull-down menu only if applicable for the given
* worldSearchItem
*
- * @param worldEditorProvider
- * @param worldComposite
* @return applicable pull-down actions
* @throws OseeCoreException
*/
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/WorldXViewerFactory.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/WorldXViewerFactory.java
index 2fce82f80b1..672df720ee1 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/WorldXViewerFactory.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/WorldXViewerFactory.java
@@ -236,21 +236,80 @@ public class WorldXViewerFactory extends SkynetXViewerFactory {
"Action's Initiating Workflow", 150, SWT.LEFT, false, SortDataType.String, false,
"This is the first workflow(s) that created the initiation of the Action");
public static final XViewerColumn Artifact_Type_Col = new XViewerArtifactTypeColumn(true);
- public static final XViewerColumn[] WorldViewColumns = new XViewerColumn[] {Type_Col, State_Col, Priority_Col,
- Change_Type_Col, Assignees_Col, Title_Col, Actionable_Items_Col, User_Community_Col, new XViewerHridColumn(),
- Created_Date_Col, Version_Target_Col, Team_Col, Notes_Col, Deadline_Col, Annual_Cost_Avoidance_Col,
- Description_Col, Legacy_PCR_Col, Decision_Col, Resolution_Col, Groups_Col, Goals_Col, Estimated_Release_Date_Col,
- Estimated_Completion_Date_Col, Release_Date_Col, Work_Package_Col, Category_Col, Category2_Col, Category3_Col,
- Goal_Order, Goal_Order_Vote_Col, Related_To_State_Col, Estimated_Hours_Col, Weekly_Benefit_Hrs_Col,
- Remaining_Hours_Col, Percent_Complete_State_Col, Percent_Complete_State_Task_Col,
- Percent_Complete_State_Review_Col, Percent_Complete_Total_Col, Hours_Spent_State_Col, Hours_Spent_State_Task_Col,
- Hours_Spent_State_Review_Col, Hours_Spent_Total_Col, Total_Hours_Spent_Col, Originator_Col, Implementor_Col,
- Review_Author_Col, Review_Moderator_Col, Review_Reviewer_Col, Review_Decider_Col, Completed_Date_Col,
- Cancelled_Date_Col, Work_Days_Needed_Col, Percent_Rework_Col, Branch_Status_Col, Number_of_Tasks_Col,
- Number_of_Tasks_Remining_Col, new XViewerLastModifiedByColumn(false), new XViewerLastModifiedDateColumn(false),
- Last_Statused_Col, Validation_Required_Col, Review_Major_Defects, Review_Minor_Defects, Review_Issues,
- Actions_Initiating_Workflow_Col, Artifact_Type_Col, Originating_Workflow, Parent_ID_Col, Days_In_Current_State,
- Parent_State_Col, Points_Col, Numeric1_Col, Numeric2_Col, new XViewerGuidColumn(false)};
+ public static final XViewerColumn[] WorldViewColumns = new XViewerColumn[] {
+ Type_Col,
+ State_Col,
+ Priority_Col,
+ Change_Type_Col,
+ Assignees_Col,
+ Title_Col,
+ Actionable_Items_Col,
+ User_Community_Col,
+ new XViewerHridColumn(),
+ Created_Date_Col,
+ Version_Target_Col,
+ Team_Col,
+ Notes_Col,
+ Deadline_Col,
+ Annual_Cost_Avoidance_Col,
+ Description_Col,
+ Legacy_PCR_Col,
+ Decision_Col,
+ Resolution_Col,
+ Groups_Col,
+ Goals_Col,
+ Estimated_Release_Date_Col,
+ Estimated_Completion_Date_Col,
+ Release_Date_Col,
+ Work_Package_Col,
+ Category_Col,
+ Category2_Col,
+ Category3_Col,
+ Goal_Order,
+ Goal_Order_Vote_Col,
+ Related_To_State_Col,
+ Estimated_Hours_Col,
+ Weekly_Benefit_Hrs_Col,
+ Remaining_Hours_Col,
+ Percent_Complete_State_Col,
+ Percent_Complete_State_Task_Col,
+ Percent_Complete_State_Review_Col,
+ Percent_Complete_Total_Col,
+ Hours_Spent_State_Col,
+ Hours_Spent_State_Task_Col,
+ Hours_Spent_State_Review_Col,
+ Hours_Spent_Total_Col,
+ Total_Hours_Spent_Col,
+ Originator_Col,
+ Implementor_Col,
+ Review_Author_Col,
+ Review_Moderator_Col,
+ Review_Reviewer_Col,
+ Review_Decider_Col,
+ Completed_Date_Col,
+ Cancelled_Date_Col,
+ Work_Days_Needed_Col,
+ Percent_Rework_Col,
+ Branch_Status_Col,
+ Number_of_Tasks_Col,
+ Number_of_Tasks_Remining_Col,
+ new XViewerLastModifiedByColumn(false),
+ new XViewerLastModifiedDateColumn(false),
+ Last_Statused_Col,
+ Validation_Required_Col,
+ Review_Major_Defects,
+ Review_Minor_Defects,
+ Review_Issues,
+ Actions_Initiating_Workflow_Col,
+ Artifact_Type_Col,
+ Originating_Workflow,
+ Parent_ID_Col,
+ Days_In_Current_State,
+ Parent_State_Col,
+ Points_Col,
+ Numeric1_Col,
+ Numeric2_Col,
+ new XViewerGuidColumn(false)};
private static String NAMESPACE = "org.eclipse.osee.ats.WorldXViewer";
public WorldXViewerFactory() {
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/WorldXViewerSorter.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/WorldXViewerSorter.java
index 9c9af52b3ea..985ee54d89f 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/WorldXViewerSorter.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/WorldXViewerSorter.java
@@ -23,9 +23,6 @@ public class WorldXViewerSorter extends XViewerSorter {
protected final XViewer xViewer;
- /**
- * @param xViewer
- */
public WorldXViewerSorter(XViewer xViewer) {
super(xViewer);
this.xViewer = xViewer;
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/search/MultipleHridSearchUi.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/search/MultipleHridSearchUi.java
index 9a4fb14b915..de7259ace9f 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/search/MultipleHridSearchUi.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/search/MultipleHridSearchUi.java
@@ -72,7 +72,8 @@ public class MultipleHridSearchUi {
} else {
ed =
new EntryDialog(Displays.getActiveShell(), data.getName(), null,
- "Enter Legacy ID, Guid or HRID (comma separated)", MessageDialog.QUESTION, new String[] {"OK",
+ "Enter Legacy ID, Guid or HRID (comma separated)", MessageDialog.QUESTION, new String[] {
+ "OK",
"Cancel"}, 0);
}
int response = ed.open();
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/search/TaskSearchWorldSearchItem.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/search/TaskSearchWorldSearchItem.java
index c4794c6bdc4..b9170d36386 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/search/TaskSearchWorldSearchItem.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/search/TaskSearchWorldSearchItem.java
@@ -64,17 +64,10 @@ public class TaskSearchWorldSearchItem extends TaskEditorParameterSearchItem {
private XHyperlabelGroupSelection groupWidget = null;
private XCombo versionCombo = null;
- /**
- * @param worldSearchItem
- */
public TaskSearchWorldSearchItem(WorldSearchItem worldSearchItem) {
super(worldSearchItem);
}
- /**
- * @param name
- * @param loadView
- */
public TaskSearchWorldSearchItem() {
super("Task Search");
}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/search/WorldSearchItem.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/search/WorldSearchItem.java
index 16587ea41ab..5bc9d9e25be 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/search/WorldSearchItem.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/search/WorldSearchItem.java
@@ -81,7 +81,6 @@ public abstract class WorldSearchItem {
* Method called to display the current search in the view. Override to provide more information about selected
* values (eg MyWorld)
*
- * @param searchType
* @return selected name
* @throws OseeCoreException
*/

Back to the top