diff options
author | donald.g.dunne | 2013-10-17 23:02:31 +0000 |
---|---|---|
committer | Roberto E. Escobar | 2013-11-25 23:45:29 +0000 |
commit | d07bba90619cee2f19d25bbfeb83935144832555 (patch) | |
tree | 7da5782f4df423bb67cf27d74dc1b230dcbb805d /plugins/org.eclipse.osee.ats | |
parent | c4f67af4a1438b08fff0e55c0e63597300e265ca (diff) | |
download | org.eclipse.osee-d07bba90619cee2f19d25bbfeb83935144832555.tar.gz org.eclipse.osee-d07bba90619cee2f19d25bbfeb83935144832555.tar.xz org.eclipse.osee-d07bba90619cee2f19d25bbfeb83935144832555.zip |
feature[ats_S5JDQ]: Move TransitionManager to ats.core
- Replace client-only SkynetTransaction with AtsChangeSet
- Convert necessary Artifact references objects with ATS interfaces
- Move TransitionManager to ats.core
Change-Id: I629cd44a06e1435679c542ebdee3664017692092
Diffstat (limited to 'plugins/org.eclipse.osee.ats')
48 files changed, 503 insertions, 430 deletions
diff --git a/plugins/org.eclipse.osee.ats/META-INF/MANIFEST.MF b/plugins/org.eclipse.osee.ats/META-INF/MANIFEST.MF index 961b32731dc..62414e8c1a0 100644 --- a/plugins/org.eclipse.osee.ats/META-INF/MANIFEST.MF +++ b/plugins/org.eclipse.osee.ats/META-INF/MANIFEST.MF @@ -75,6 +75,7 @@ Import-Package: com.google.inject, org.eclipse.osee.ats.api.ev, org.eclipse.osee.ats.api.notify, org.eclipse.osee.ats.api.query, + org.eclipse.osee.ats.api.review, org.eclipse.osee.ats.api.rule, org.eclipse.osee.ats.api.team, org.eclipse.osee.ats.api.user, @@ -83,8 +84,9 @@ Import-Package: com.google.inject, org.eclipse.osee.ats.api.workdef, org.eclipse.osee.ats.api.workflow, org.eclipse.osee.ats.api.workflow.log, - org.eclipse.osee.ats.core.ai, org.eclipse.osee.ats.api.workflow.state, + org.eclipse.osee.ats.api.workflow.transition, + org.eclipse.osee.ats.core.ai, org.eclipse.osee.ats.core.client, org.eclipse.osee.ats.core.client.access, org.eclipse.osee.ats.core.client.action, diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/WorkflowPortingBlam.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/WorkflowPortingBlam.java index a1288379886..85feb9e3250 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/WorkflowPortingBlam.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/WorkflowPortingBlam.java @@ -21,17 +21,16 @@ import org.eclipse.osee.ats.api.data.AtsRelationTypes; import org.eclipse.osee.ats.api.team.CreateTeamOption; import org.eclipse.osee.ats.api.team.IAtsTeamDefinition; import org.eclipse.osee.ats.api.user.IAtsUser; +import org.eclipse.osee.ats.api.util.IAtsChangeSet; import org.eclipse.osee.ats.core.client.action.ActionManager; import org.eclipse.osee.ats.core.client.team.TeamWorkFlowArtifact; +import org.eclipse.osee.ats.core.client.util.AtsChangeSet; import org.eclipse.osee.ats.internal.AtsClientService; -import org.eclipse.osee.ats.util.AtsUtil; import org.eclipse.osee.ats.world.AtsWorldEditorRenderer; import org.eclipse.osee.framework.core.util.Conditions; import org.eclipse.osee.framework.jdk.core.type.OseeCoreException; import org.eclipse.osee.framework.jdk.core.util.Collections; import org.eclipse.osee.framework.skynet.core.artifact.Artifact; -import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction; -import org.eclipse.osee.framework.skynet.core.transaction.TransactionManager; import org.eclipse.osee.framework.ui.skynet.blam.AbstractBlam; import org.eclipse.osee.framework.ui.skynet.blam.VariableMap; import org.eclipse.osee.framework.ui.skynet.render.PresentationType; @@ -52,18 +51,15 @@ public class WorkflowPortingBlam extends AbstractBlam { getActionableItems((IAtsActionableItem) variableMap.getValue(ACTIONABLE_ITEM)); Conditions.checkNotNullOrEmpty(actionableItems, ACTIONABLE_ITEM); - SkynetTransaction transaction = - TransactionManager.createTransaction(AtsUtil.getAtsBranch(), "Create Porting Workflow(s)"); - - List<Artifact> destinationWorkflows = createDestinationWorkflows(transaction, actionableItems); - - transaction.execute(); + AtsChangeSet changes = new AtsChangeSet("Create Porting Workflow(s)"); + List<Artifact> destinationWorkflows = createDestinationWorkflows(changes, actionableItems); + changes.execute(); AtsWorldEditorRenderer renderer = new AtsWorldEditorRenderer(); renderer.open(destinationWorkflows, PresentationType.SPECIALIZED_EDIT); } - private List<Artifact> createDestinationWorkflows(SkynetTransaction transaction, List<IAtsActionableItem> actionableItems) throws OseeCoreException { + private List<Artifact> createDestinationWorkflows(IAtsChangeSet changes, List<IAtsActionableItem> actionableItems) throws OseeCoreException { IAtsTeamDefinition teamDefinition = actionableItems.get(0).getTeamDefinition(); List<Artifact> destinationWorkflows = new ArrayList<Artifact>(); IAtsUser createdBy = AtsClientService.get().getUserAdmin().getCurrentUser(); @@ -76,14 +72,14 @@ public class WorkflowPortingBlam extends AbstractBlam { destinationWorkflow = ActionManager.createTeamWorkflow(sourceWorkflow.getParentActionArtifact(), teamDefinition, - actionableItems, assignees, transaction, createdDate, createdBy, null, + actionableItems, assignees, changes, createdDate, createdBy, null, CreateTeamOption.Duplicate_If_Exists); destinationWorkflow.setName(sourceWorkflow.getName()); - destinationWorkflow.persist(transaction); + changes.add(destinationWorkflow); sourceWorkflow.addRelation(AtsRelationTypes.Port_To, destinationWorkflow); - sourceWorkflow.persist(transaction); + changes.add(sourceWorkflow); } else { destinationWorkflow = sourceWorkflow.getRelatedArtifact(AtsRelationTypes.Port_To); log("Reusing destination workflow " + destinationWorkflow); diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/ConvertActionableItemsAction.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/ConvertActionableItemsAction.java index 7ea9ae7e751..c79e27281c3 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/ConvertActionableItemsAction.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/ConvertActionableItemsAction.java @@ -182,8 +182,9 @@ public class ConvertActionableItemsAction extends Action { teamArt.setTeamDefinition(teamDef); } SkynetTransaction transaction = TransactionManager.createTransaction(branch, "Convert Actionable Item"); - ActionArtifactRollup rollup = new ActionArtifactRollup(teamArt.getParentActionArtifact(), transaction); + ActionArtifactRollup rollup = new ActionArtifactRollup(teamArt.getParentActionArtifact()); rollup.resetAttributesOffChildren(); + teamArt.getParentActionArtifact().persist(transaction); teamArt.persist(transaction); transaction.execute(); } 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 63096c19049..af078f35330 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 @@ -13,6 +13,7 @@ package org.eclipse.osee.ats.actions; import org.eclipse.osee.ats.AtsImage; import org.eclipse.osee.ats.artifact.GoalManager; import org.eclipse.osee.ats.core.client.artifact.GoalArtifact; +import org.eclipse.osee.ats.core.client.util.AtsChangeSet; import org.eclipse.osee.ats.editor.SMAEditor; import org.eclipse.osee.framework.jdk.core.type.OseeCoreException; import org.eclipse.osee.framework.jdk.core.util.Strings; @@ -42,8 +43,9 @@ public class NewGoal extends AbstractAtsAction { } } if (Strings.isValid(title)) { - GoalArtifact goalArt = GoalManager.createGoal(title); - goalArt.persist(getClass().getSimpleName()); + AtsChangeSet changes = new AtsChangeSet(getClass().getSimpleName()); + GoalArtifact goalArt = GoalManager.createGoal(title, changes); + changes.execute(); SMAEditor.editArtifact(goalArt); } } 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 4b2a17d527c..50182e179cf 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 @@ -12,9 +12,9 @@ package org.eclipse.osee.ats.actions.wizard; import java.util.Collection; import org.eclipse.osee.ats.api.ai.IAtsActionableItem; +import org.eclipse.osee.ats.api.util.IAtsChangeSet; import org.eclipse.osee.framework.core.util.Result; import org.eclipse.osee.framework.skynet.core.artifact.Artifact; -import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction; /** * Allows the New Action wizard to be extended with custom widgets when the appropriate Actionable Items are selected @@ -48,7 +48,7 @@ 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. */ - void wizardCompleted(Artifact actionArt, NewActionWizard wizard, SkynetTransaction transaction) throws Exception; + void wizardCompleted(Artifact actionArt, NewActionWizard wizard, IAtsChangeSet changes) throws Exception; /** * Validation that the data entered is valid and the wizard can be finished. This will be called after every diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/NewActionJob.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/NewActionJob.java index 3ef06deaee8..5fe25cc2ddf 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/NewActionJob.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/NewActionJob.java @@ -22,6 +22,7 @@ import org.eclipse.osee.ats.AtsOpenOption; import org.eclipse.osee.ats.api.ai.IAtsActionableItem; import org.eclipse.osee.ats.core.client.action.ActionManager; import org.eclipse.osee.ats.core.client.action.INewActionListener; +import org.eclipse.osee.ats.core.client.util.AtsChangeSet; import org.eclipse.osee.ats.core.client.workflow.ChangeType; import org.eclipse.osee.ats.internal.Activator; import org.eclipse.osee.ats.internal.AtsClientService; @@ -29,8 +30,6 @@ import org.eclipse.osee.ats.util.AtsUtil; import org.eclipse.osee.framework.jdk.core.type.OseeArgumentException; import org.eclipse.osee.framework.logging.OseeLog; import org.eclipse.osee.framework.skynet.core.artifact.Artifact; -import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction; -import org.eclipse.osee.framework.skynet.core.transaction.TransactionManager; import org.eclipse.osee.framework.ui.skynet.notify.OseeNotificationManager; /** @@ -69,22 +68,23 @@ public class NewActionJob extends Job { if (actionableItems.isEmpty()) { throw new OseeArgumentException("Actionable Items can not be empty for New Action"); } - SkynetTransaction transaction = TransactionManager.createTransaction(AtsUtil.getAtsBranch(), "Create New Action"); if ("tt".equals(title)) { title += " " + AtsUtil.getAtsDeveloperIncrementingNum(); } + AtsChangeSet changes = new AtsChangeSet("Create New Action"); actionArt = ActionManager.createAction(monitor, title, desc, changeType, priority, validationRequired, needByDate, - actionableItems, new Date(), AtsClientService.get().getUserAdmin().getCurrentUser(), newActionListener, transaction); + actionableItems, new Date(), AtsClientService.get().getUserAdmin().getCurrentUser(), newActionListener, + changes); if (wizard != null) { - wizard.notifyAtsWizardItemExtensions(actionArt, transaction); + wizard.notifyAtsWizardItemExtensions(actionArt, changes); } if (monitor != null) { monitor.subTask("Persisting"); } - transaction.execute(); + changes.execute(); // Because this is a job, it will automatically kill any popups that are created during. // Thus, if multiple teams were selected to create, don't popup on openAction or dialog diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/NewActionPage3.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/NewActionPage3.java index 444d10c4505..5b05df1a4b5 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/NewActionPage3.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/NewActionPage3.java @@ -21,6 +21,7 @@ import org.eclipse.core.runtime.IExtensionPoint; import org.eclipse.core.runtime.Platform; import org.eclipse.jface.wizard.WizardPage; import org.eclipse.osee.ats.api.ai.IAtsActionableItem; +import org.eclipse.osee.ats.api.util.IAtsChangeSet; import org.eclipse.osee.ats.internal.Activator; import org.eclipse.osee.ats.workflow.ATSXWidgetOptionResolver; import org.eclipse.osee.framework.core.util.Conditions; @@ -29,7 +30,6 @@ import org.eclipse.osee.framework.jdk.core.type.OseeCoreException; import org.eclipse.osee.framework.logging.OseeLevel; import org.eclipse.osee.framework.logging.OseeLog; import org.eclipse.osee.framework.skynet.core.artifact.Artifact; -import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction; import org.eclipse.osee.framework.ui.skynet.widgets.XModifiedListener; import org.eclipse.osee.framework.ui.skynet.widgets.XWidget; import org.eclipse.osee.framework.ui.skynet.widgets.util.XWidgetPage; @@ -59,11 +59,11 @@ public class NewActionPage3 extends WizardPage { getWizardXWidgetExtensions(); } - public void notifyAtsWizardItemExtensions(Artifact action, SkynetTransaction transaction) { + public void notifyAtsWizardItemExtensions(Artifact action, IAtsChangeSet changes) { for (IAtsWizardItem item : wizardExtensionItems) { try { if (item.hasWizardXWidgetExtensions(wizard.getSelectedIAtsActionableItems())) { - item.wizardCompleted(action, wizard, transaction); + item.wizardCompleted(action, wizard, changes); } } catch (Exception ex) { OseeLog.log(Activator.class, OseeLevel.SEVERE_POPUP, ex); diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/NewActionWizard.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/NewActionWizard.java index d9ba297fbf7..0608424f435 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/NewActionWizard.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/NewActionWizard.java @@ -17,6 +17,7 @@ import org.eclipse.core.runtime.jobs.Job; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.wizard.Wizard; import org.eclipse.osee.ats.api.ai.IAtsActionableItem; +import org.eclipse.osee.ats.api.util.IAtsChangeSet; import org.eclipse.osee.ats.core.client.action.INewActionListener; import org.eclipse.osee.ats.core.client.workflow.ChangeType; import org.eclipse.osee.ats.internal.Activator; @@ -25,7 +26,6 @@ import org.eclipse.osee.framework.jdk.core.type.OseeCoreException; import org.eclipse.osee.framework.logging.OseeLevel; import org.eclipse.osee.framework.logging.OseeLog; import org.eclipse.osee.framework.skynet.core.artifact.Artifact; -import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction; import org.eclipse.osee.framework.ui.plugin.util.AWorkbench; import org.eclipse.osee.framework.ui.skynet.widgets.XCheckBox; import org.eclipse.osee.framework.ui.skynet.widgets.XCombo; @@ -127,9 +127,9 @@ public class NewActionWizard extends Wizard implements INewWizard { return ((XDate) page2.getXWidget("Deadline")).getDate(); } - public void notifyAtsWizardItemExtensions(Artifact action, SkynetTransaction transaction) { + public void notifyAtsWizardItemExtensions(Artifact action, IAtsChangeSet changes) { if (page3 != null) { - page3.notifyAtsWizardItemExtensions(action, transaction); + page3.notifyAtsWizardItemExtensions(action, changes); } } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/GoalManager.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/GoalManager.java index c0bb634a4e9..accc23151fc 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/GoalManager.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/GoalManager.java @@ -23,6 +23,7 @@ import java.util.Set; import org.eclipse.jface.window.Window; import org.eclipse.osee.ats.api.data.AtsArtifactTypes; import org.eclipse.osee.ats.api.data.AtsRelationTypes; +import org.eclipse.osee.ats.api.util.IAtsChangeSet; import org.eclipse.osee.ats.core.client.artifact.GoalArtifact; import org.eclipse.osee.ats.core.client.workflow.AbstractWorkflowArtifact; import org.eclipse.osee.ats.goal.GoalLabelProvider; @@ -172,12 +173,14 @@ public final class GoalManager { } } - public static GoalArtifact createGoal(String title) throws OseeCoreException { + public static GoalArtifact createGoal(String title, IAtsChangeSet changes) throws OseeCoreException { GoalArtifact goalArt = (GoalArtifact) ArtifactTypeManager.addArtifact(AtsArtifactTypes.Goal, AtsUtil.getAtsBranch(), title); // Initialize state machine - goalArt.initializeNewStateMachine(Arrays.asList(AtsClientService.get().getUserAdmin().getCurrentUser()), new Date(), AtsClientService.get().getUserAdmin().getCurrentUser()); + goalArt.initializeNewStateMachine(Arrays.asList(AtsClientService.get().getUserAdmin().getCurrentUser()), + new Date(), AtsClientService.get().getUserAdmin().getCurrentUser()); + changes.add(goalArt); return goalArt; } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/config/AtsConfigOperation.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/config/AtsConfigOperation.java index d6526fea0d5..9638ed1fe33 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/config/AtsConfigOperation.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/config/AtsConfigOperation.java @@ -21,9 +21,11 @@ import org.eclipse.osee.ats.AtsOpenOption; import org.eclipse.osee.ats.api.ai.IAtsActionableItem; import org.eclipse.osee.ats.api.data.AtsArtifactTypes; import org.eclipse.osee.ats.api.team.IAtsTeamDefinition; +import org.eclipse.osee.ats.api.util.IAtsChangeSet; import org.eclipse.osee.ats.api.version.IAtsVersion; import org.eclipse.osee.ats.api.workdef.IAtsWorkDefinition; import org.eclipse.osee.ats.core.client.config.AtsArtifactToken; +import org.eclipse.osee.ats.core.client.util.AtsChangeSet; import org.eclipse.osee.ats.core.client.util.AtsUtilCore; import org.eclipse.osee.ats.core.config.AtsVersionService; import org.eclipse.osee.ats.core.config.TeamDefinitions; @@ -44,8 +46,6 @@ import org.eclipse.osee.framework.logging.OseeLog; 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.search.ArtifactQuery; -import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction; -import org.eclipse.osee.framework.skynet.core.transaction.TransactionManager; import org.eclipse.osee.framework.ui.skynet.render.PresentationType; import org.eclipse.osee.framework.ui.skynet.render.RendererManager; import org.eclipse.ui.progress.UIJob; @@ -102,44 +102,43 @@ public class AtsConfigOperation extends AbstractOperation { checkWorkItemNamespaceUnique(); monitor.worked(calculateWork(0.10)); - SkynetTransaction transaction = - TransactionManager.createTransaction(AtsUtil.getAtsBranch(), "Configure ATS for Default Team"); + AtsChangeSet changes = new AtsChangeSet("Configure ATS for Default Team"); - teamDefinition = createTeamDefinition(transaction); + teamDefinition = createTeamDefinition(changes); - actionableItems = createActionableItems(transaction, teamDefinition); + actionableItems = createActionableItems(changes, teamDefinition); - createVersions(transaction, teamDefinition); + createVersions(changes, teamDefinition); XResultData resultData = new XResultData(); - IAtsWorkDefinition workDefinition = createWorkflow(transaction, resultData, teamDefinition); + IAtsWorkDefinition workDefinition = createWorkflow(changes, resultData, teamDefinition); - transaction.execute(); + changes.execute(); monitor.worked(calculateWork(0.30)); display.openAtsConfigurationEditors(teamDefinition, actionableItems, workDefinition); monitor.worked(calculateWork(0.10)); } - private IAtsTeamDefinition createTeamDefinition(SkynetTransaction transaction) throws OseeCoreException { + private IAtsTeamDefinition createTeamDefinition(IAtsChangeSet changes) throws OseeCoreException { IAtsTeamDefinition teamDef = AtsClientService.get().createTeamDefinition(GUID.create(), teamDefName); teamDef.getLeads().add(AtsClientService.get().getUserAdmin().getCurrentUser()); teamDef.getMembers().add(AtsClientService.get().getUserAdmin().getCurrentUser()); TeamDefinitions.getTopTeamDefinition().getChildrenTeamDefinitions().add(teamDef); - AtsClientService.get().storeConfigObject(teamDef, transaction); + AtsClientService.get().storeConfigObject(teamDef, changes); return teamDef; } - private Collection<IAtsActionableItem> createActionableItems(SkynetTransaction transaction, IAtsTeamDefinition teamDef) throws OseeCoreException { + private Collection<IAtsActionableItem> createActionableItems(IAtsChangeSet changes, IAtsTeamDefinition teamDef) throws OseeCoreException { Collection<IAtsActionableItem> aias = new ArrayList<IAtsActionableItem>(); // Create top actionable item IAtsActionableItem topAia = AtsClientService.get().createActionableItem(GUID.create(), teamDefName); topAia.setActionable(false); topAia.setTeamDefinition(teamDef); - AtsClientService.get().storeConfigObject(topAia, transaction); + AtsClientService.get().storeConfigObject(topAia, changes); teamDef.getActionableItems().add(topAia); - AtsClientService.get().storeConfigObject(teamDef, transaction); + AtsClientService.get().storeConfigObject(teamDef, changes); aias.add(topAia); @@ -149,38 +148,38 @@ public class AtsConfigOperation extends AbstractOperation { childAi.setActionable(true); topAia.getChildrenActionableItems().add(childAi); childAi.setParentActionableItem(topAia); - AtsClientService.get().storeConfigObject(childAi, transaction); + AtsClientService.get().storeConfigObject(childAi, changes); aias.add(childAi); } - AtsClientService.get().storeConfigObject(topAia, transaction); + AtsClientService.get().storeConfigObject(topAia, changes); return aias; } - private void createVersions(SkynetTransaction transaction, IAtsTeamDefinition teamDef) throws OseeCoreException { + private void createVersions(IAtsChangeSet changes, IAtsTeamDefinition teamDef) throws OseeCoreException { if (versionNames != null) { for (String name : versionNames) { IAtsVersion version = AtsClientService.get().createVersion(name); teamDef.getVersions().add(version); - AtsClientService.get().storeConfigObject(version, transaction); + AtsClientService.get().storeConfigObject(version, changes); AtsVersionService.get().setTeamDefinition(version, teamDef); } } } - private IAtsWorkDefinition createWorkflow(SkynetTransaction transaction, XResultData resultData, IAtsTeamDefinition teamDef) throws OseeCoreException { + private IAtsWorkDefinition createWorkflow(IAtsChangeSet changes, XResultData resultData, IAtsTeamDefinition teamDef) throws OseeCoreException { WorkDefinitionMatch workDefMatch = AtsClientService.get().getWorkDefinitionAdmin().getWorkDefinition(name); IAtsWorkDefinition workDef = null; // If can't be found, create a new one if (!workDefMatch.isMatched()) { - workDef = generateDefaultWorkflow(name, resultData, transaction, teamDef); + workDef = generateDefaultWorkflow(name, resultData, changes, teamDef); try { String workDefXml = AtsClientService.get().getWorkDefinitionAdmin().getStorageString(workDef, resultData); Artifact workDefArt = AtsWorkDefinitionImporter.get().importWorkDefinitionToDb(workDefXml, workDef.getName(), name, - resultData, transaction); + resultData, changes); Artifact folder = AtsUtilCore.getFromToken(AtsArtifactToken.WorkDefinitionsFolder); folder.addChild(workDefArt); - folder.persist(transaction); + changes.add(folder); } catch (Exception ex) { throw new OseeWrappedException(ex); } @@ -189,11 +188,11 @@ public class AtsConfigOperation extends AbstractOperation { } // Relate new team def to workflow artifact teamDef.setWorkflowDefinition(workDef.getId()); - AtsClientService.get().storeConfigObject(teamDef, transaction); + AtsClientService.get().storeConfigObject(teamDef, changes); return workDef; } - private IAtsWorkDefinition generateDefaultWorkflow(String name, XResultData resultData, SkynetTransaction transaction, IAtsTeamDefinition teamDef) throws OseeCoreException { + private IAtsWorkDefinition generateDefaultWorkflow(String name, XResultData resultData, IAtsChangeSet changes, IAtsTeamDefinition teamDef) throws OseeCoreException { IAtsWorkDefinition defaultWorkDef = AtsClientService.get().getWorkDefinitionAdmin().getWorkDefinition( AtsWorkDefinitionSheetProviders.WORK_DEF_TEAM_DEFAULT).getWorkDefinition(); diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/config/AtsDatabaseConfig.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/config/AtsDatabaseConfig.java index a7064e6a51c..85d8528d7bb 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/config/AtsDatabaseConfig.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/config/AtsDatabaseConfig.java @@ -15,6 +15,7 @@ import org.eclipse.osee.ats.api.ai.IAtsActionableItem; import org.eclipse.osee.ats.api.team.IAtsTeamDefinition; import org.eclipse.osee.ats.core.client.IAtsWorkDefinitionAdmin; import org.eclipse.osee.ats.core.client.config.AtsArtifactToken; +import org.eclipse.osee.ats.core.client.util.AtsChangeSet; import org.eclipse.osee.ats.core.client.util.AtsGroup; import org.eclipse.osee.ats.internal.AtsClientService; import org.eclipse.osee.ats.util.AtsUtil; @@ -44,19 +45,18 @@ public class AtsDatabaseConfig implements IDbInitializationTask { ArtifactQuery.getArtifactFromToken(AtsArtifactToken.TopTeamDefinition, AtsUtil.getAtsBranchToken()); IAtsTeamDefinition teamDef = AtsClientService.get().getConfigObject(topTeamDefArt); teamDef.setWorkflowDefinition(IAtsWorkDefinitionAdmin.TeamWorkflowDefaultDefinitionId); - SkynetTransaction transaction = - TransactionManager.createTransaction(AtsUtil.getAtsBranchToken(), "Set Top Team Work Definition"); - AtsClientService.get().storeConfigObject(teamDef, transaction); - transaction.execute(); + AtsChangeSet changes = new AtsChangeSet("Set Top Team Work Definition"); + AtsClientService.get().storeConfigObject(teamDef, changes); + changes.execute(); // load top ai into cache Artifact topAiArt = ArtifactQuery.getArtifactFromToken(AtsArtifactToken.TopActionableItem, AtsUtil.getAtsBranchToken()); IAtsActionableItem aia = AtsClientService.get().getConfigObject(topAiArt); aia.setActionable(false); - transaction = TransactionManager.createTransaction(AtsUtil.getAtsBranchToken(), "Set Top AI to Non Actionable"); - AtsClientService.get().storeConfigObject(aia, transaction); - transaction.execute(); + changes.reset("Set Top AI to Non Actionable"); + AtsClientService.get().storeConfigObject(aia, changes); + changes.execute(); AtsWorkDefinitionSheetProviders.initializeDatabase(new XResultData(false)); diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/config/copy/CopyAtsConfigurationOperation.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/config/copy/CopyAtsConfigurationOperation.java index fc44105f9d6..9e48bf38fa2 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/config/copy/CopyAtsConfigurationOperation.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/config/copy/CopyAtsConfigurationOperation.java @@ -16,6 +16,7 @@ import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; +import java.util.logging.Level; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.osee.ats.api.IAtsConfigObject; import org.eclipse.osee.ats.api.ai.IAtsActionableItem; @@ -23,7 +24,9 @@ import org.eclipse.osee.ats.api.data.AtsArtifactTypes; import org.eclipse.osee.ats.api.data.AtsAttributeTypes; import org.eclipse.osee.ats.api.data.AtsRelationTypes; import org.eclipse.osee.ats.api.team.IAtsTeamDefinition; +import org.eclipse.osee.ats.api.util.IAtsChangeSet; import org.eclipse.osee.ats.core.client.config.AtsBulkLoad; +import org.eclipse.osee.ats.core.client.util.AtsChangeSet; import org.eclipse.osee.ats.internal.Activator; import org.eclipse.osee.ats.internal.AtsClientService; import org.eclipse.osee.ats.util.AtsUtil; @@ -31,9 +34,8 @@ import org.eclipse.osee.framework.core.operation.AbstractOperation; import org.eclipse.osee.framework.core.util.XResultData; import org.eclipse.osee.framework.jdk.core.type.OseeArgumentException; import org.eclipse.osee.framework.jdk.core.type.OseeCoreException; +import org.eclipse.osee.framework.logging.OseeLog; import org.eclipse.osee.framework.skynet.core.artifact.Artifact; -import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction; -import org.eclipse.osee.framework.skynet.core.transaction.TransactionManager; import org.eclipse.osee.framework.ui.skynet.results.XResultDataUI; /** @@ -49,7 +51,6 @@ public class CopyAtsConfigurationOperation extends AbstractOperation { private final Map<IAtsTeamDefinition, IAtsTeamDefinition> fromTeamDefToNewTeamDefMap = new HashMap<IAtsTeamDefinition, IAtsTeamDefinition>(); - private SkynetTransaction transaction; public CopyAtsConfigurationOperation(ConfigData data, XResultData resultData) { super("Copy ATS Configuration", Activator.PLUGIN_ID); @@ -68,16 +69,16 @@ public class CopyAtsConfigurationOperation extends AbstractOperation { if (resultData.isErrors()) { return; } - transaction = TransactionManager.createTransaction(AtsUtil.getAtsBranchToken(), getClass().getSimpleName()); + AtsChangeSet changes = new AtsChangeSet(getName()); getCopyAtsValidation().validate(); if (resultData.isErrors()) { - persistOrUndoChanges(transaction); + persistOrUndoChanges(changes); return; } if (data.isPersistChanges()) { - resultData.log("Persisting Changes"); + resultData.log("Persisting Changes "); } else { resultData.log("Report-Only, Changes are not persisted"); } @@ -86,22 +87,24 @@ public class CopyAtsConfigurationOperation extends AbstractOperation { existingArtifacts = new HashSet<Artifact>(50); processedFromAis = new HashSet<Artifact>(10); - createTeamDefinitions(transaction, data.getTeamDef(), data.getParentTeamDef()); + createTeamDefinitions(changes, data.getTeamDef(), data.getParentTeamDef()); if (resultData.isErrors()) { - persistOrUndoChanges(transaction); + persistOrUndoChanges(changes); return; } - createActionableItems(transaction, data.getActionableItem(), data.getParentActionableItem()); + createActionableItems(changes, data.getActionableItem(), data.getParentActionableItem()); if (resultData.isErrors()) { - persistOrUndoChanges(transaction); + persistOrUndoChanges(changes); return; } AtsBulkLoad.reloadConfig(true); - persistOrUndoChanges(transaction); + persistOrUndoChanges(changes); XResultDataUI.report(resultData, getName()); + } catch (OseeCoreException ex) { + OseeLog.log(Activator.class, Level.SEVERE, ex); } finally { monitor.subTask("Done"); } @@ -109,10 +112,8 @@ public class CopyAtsConfigurationOperation extends AbstractOperation { /** * Has potential of returning null if this fromAi has already been processed. - * - * @param transaction */ - protected IAtsActionableItem createActionableItems(SkynetTransaction transaction, IAtsActionableItem fromAi, IAtsActionableItem parentAi) throws OseeCoreException { + protected IAtsActionableItem createActionableItems(IAtsChangeSet changes, IAtsActionableItem fromAi, IAtsActionableItem parentAi) throws OseeCoreException { Artifact fromAiArt = AtsClientService.get().getConfigArtifact(fromAi); if (processedFromAis.contains(fromAiArt)) { @@ -121,15 +122,17 @@ public class CopyAtsConfigurationOperation extends AbstractOperation { } else { processedFromAis.add(fromAiArt); } - Artifact parentAiArt = AtsClientService.get().storeConfigObject(parentAi, transaction); + Artifact parentAiArt = AtsClientService.get().storeConfigObject(parentAi, changes); // Get or create new team definition - Artifact newAiArt = duplicateTeamDefinitionOrActionableItem(fromAiArt); + Artifact newAiArt = duplicateTeamDefinitionOrActionableItem(changes, fromAiArt); + changes.add(newAiArt); IAtsActionableItem newAi = AtsClientService.get().getConfigObject(newAiArt); newAi.setParentActionableItem(parentAi); parentAi.getChildrenActionableItems().add(newAi); parentAiArt.addChild(newAiArt); + changes.add(parentAiArt); existingArtifacts.add(parentAiArt); newArtifacts.add(newAiArt); // Relate new Ais to their TeamDefs just like other config @@ -145,9 +148,7 @@ public class CopyAtsConfigurationOperation extends AbstractOperation { } else { Artifact newTeamDefArt = AtsClientService.get().getConfigArtifact(newTeamDef); newAiArt.addRelation(AtsRelationTypes.TeamActionableItem_Team, newTeamDefArt); - if (data.isPersistChanges()) { - newTeamDefArt.persist(transaction); - } + changes.add(newTeamDefArt); } } @@ -156,39 +157,41 @@ public class CopyAtsConfigurationOperation extends AbstractOperation { if (childFromAiArt.isOfType(AtsArtifactTypes.ActionableItem)) { IAtsActionableItem childAi = AtsClientService.get().getConfigObject(childFromAiArt); IAtsActionableItem newChildAi = AtsClientService.get().getConfigObject(newAiArt); - createActionableItems(transaction, childAi, newChildAi); + createActionableItems(changes, childAi, newChildAi); } } return newAi; } - protected IAtsTeamDefinition createTeamDefinitions(SkynetTransaction transaction, IAtsTeamDefinition fromTeamDef, IAtsTeamDefinition parentTeamDef) throws OseeCoreException { + protected IAtsTeamDefinition createTeamDefinitions(IAtsChangeSet changes, IAtsTeamDefinition fromTeamDef, IAtsTeamDefinition parentTeamDef) throws OseeCoreException { // Get or create new team definition Artifact parentTeamDefArt = AtsClientService.get().getConfigArtifact(parentTeamDef); Artifact fromTeamDefArt = AtsClientService.get().getConfigArtifact(fromTeamDef); - Artifact newTeamDefArt = duplicateTeamDefinitionOrActionableItem(fromTeamDefArt); + Artifact newTeamDefArt = duplicateTeamDefinitionOrActionableItem(changes, fromTeamDefArt); + changes.add(newTeamDefArt); IAtsTeamDefinition newTeamDef = AtsClientService.get().getConfigObject(newTeamDefArt); parentTeamDefArt.addChild(newTeamDefArt); + changes.add(parentTeamDefArt); existingArtifacts.add(parentTeamDefArt); newArtifacts.add(newTeamDefArt); fromTeamDefToNewTeamDefMap.put(fromTeamDef, newTeamDef); if (data.isRetainTeamLeads()) { - duplicateTeamLeadsAndMembers(fromTeamDef, newTeamDef); + duplicateTeamLeadsAndMembers(changes, fromTeamDef, newTeamDef); } // handle all children for (Artifact childFromTeamDefArt : fromTeamDefArt.getChildren()) { if (childFromTeamDefArt.isOfType(AtsArtifactTypes.TeamDefinition)) { IAtsTeamDefinition childFromTeamDef = AtsClientService.get().getConfigObject(childFromTeamDefArt); AtsClientService.get().getAtsConfig().getSoleByGuid(childFromTeamDefArt.getGuid(), IAtsTeamDefinition.class); - createTeamDefinitions(transaction, childFromTeamDef, newTeamDef); + createTeamDefinitions(changes, childFromTeamDef, newTeamDef); } } return newTeamDef; } - private void duplicateTeamLeadsAndMembers(IAtsTeamDefinition fromTeamDef, IAtsTeamDefinition newTeamDef) throws OseeCoreException { + private void duplicateTeamLeadsAndMembers(IAtsChangeSet changes, IAtsTeamDefinition fromTeamDef, IAtsTeamDefinition newTeamDef) throws OseeCoreException { Artifact fromTeamDefArt = AtsClientService.get().getConfigArtifact(fromTeamDef); Artifact newTeamDefArt = AtsClientService.get().getConfigArtifact(newTeamDef); @@ -196,6 +199,7 @@ public class CopyAtsConfigurationOperation extends AbstractOperation { for (Artifact user : fromTeamDefArt.getRelatedArtifacts(AtsRelationTypes.TeamLead_Lead)) { if (!leads.contains(user)) { existingArtifacts.add(user); + changes.add(user); newTeamDefArt.addRelation(AtsRelationTypes.TeamLead_Lead, user); resultData.log(" - Relating team lead " + user); } @@ -204,6 +208,7 @@ public class CopyAtsConfigurationOperation extends AbstractOperation { for (Artifact user : fromTeamDefArt.getRelatedArtifacts(AtsRelationTypes.TeamMember_Member)) { if (!members.contains(user)) { existingArtifacts.add(user); + changes.add(user); newTeamDefArt.addRelation(AtsRelationTypes.TeamMember_Member, user); resultData.log(" - Relating team member " + user); } @@ -211,18 +216,16 @@ public class CopyAtsConfigurationOperation extends AbstractOperation { for (Artifact user : fromTeamDefArt.getRelatedArtifacts(AtsRelationTypes.PrivilegedMember_Member)) { if (!members.contains(user)) { existingArtifacts.add(user); + changes.add(user); newTeamDefArt.addRelation(AtsRelationTypes.PrivilegedMember_Member, user); resultData.log(" - Relating privileged member " + user); } } } - private void persistOrUndoChanges(SkynetTransaction transaction) throws OseeCoreException { + private void persistOrUndoChanges(AtsChangeSet changes) throws OseeCoreException { if (data.isPersistChanges()) { - for (Artifact art : newArtifacts) { - art.persist(transaction); - } - transaction.execute(); + changes.execute(); AtsClientService.get().invalidateConfigCache(); } else { resultData.log("\n\nCleanup of created / modified artifacts\n\n"); @@ -245,7 +248,7 @@ public class CopyAtsConfigurationOperation extends AbstractOperation { } } - private Artifact duplicateTeamDefinitionOrActionableItem(Artifact fromArtifact) throws OseeCoreException { + private Artifact duplicateTeamDefinitionOrActionableItem(IAtsChangeSet changes, Artifact fromArtifact) throws OseeCoreException { String newName = CopyAtsUtil.getConvertedName(data, fromArtifact.getName()); if (newName.equals(fromArtifact.getName())) { throw new OseeArgumentException("Could not get new name from name conversion."); @@ -254,6 +257,7 @@ public class CopyAtsConfigurationOperation extends AbstractOperation { Artifact newTeamDef = fromArtifact.duplicate(AtsUtil.getAtsBranch(), Arrays.asList(AtsAttributeTypes.BaselineBranchGuid)); newTeamDef.setName(newName); + changes.add(newTeamDef); resultData.log("Creating new " + newTeamDef.getArtifactTypeName() + ": " + newTeamDef); String fullName = newTeamDef.getSoleAttributeValue(AtsAttributeTypes.FullName, null); if (fullName != null) { diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAPromptChangeHoursSpent.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAPromptChangeHoursSpent.java index 28d5bc749bd..2a32b7db681 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAPromptChangeHoursSpent.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAPromptChangeHoursSpent.java @@ -13,7 +13,7 @@ package org.eclipse.osee.ats.editor; import java.util.Arrays; import java.util.Collection; import org.eclipse.osee.ats.core.client.workflow.AbstractWorkflowArtifact; -import org.eclipse.osee.ats.core.client.workflow.transition.TransitionStatusData; +import org.eclipse.osee.ats.core.workflow.transition.TransitionStatusData; import org.eclipse.osee.ats.util.widgets.dialog.TransitionStatusDialog; import org.eclipse.osee.framework.core.util.Result; import org.eclipse.osee.framework.jdk.core.type.OseeCoreException; diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAPromptChangeStatus.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAPromptChangeStatus.java index 03b7c5a7ab9..009bfaf1b8d 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAPromptChangeStatus.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAPromptChangeStatus.java @@ -12,12 +12,13 @@ package org.eclipse.osee.ats.editor; import java.util.Arrays; import java.util.Collection; +import org.eclipse.osee.ats.api.IAtsWorkItem; import org.eclipse.osee.ats.api.data.AtsArtifactTypes; import org.eclipse.osee.ats.api.data.AtsAttributeTypes; import org.eclipse.osee.ats.core.client.task.TaskArtifact; import org.eclipse.osee.ats.core.client.workflow.AbstractWorkflowArtifact; -import org.eclipse.osee.ats.core.client.workflow.transition.TransitionStatusData; import org.eclipse.osee.ats.core.users.AtsCoreUsers; +import org.eclipse.osee.ats.core.workflow.transition.TransitionStatusData; import org.eclipse.osee.ats.internal.AtsClientService; import org.eclipse.osee.ats.util.AtsUtil; import org.eclipse.osee.ats.util.widgets.dialog.TransitionStatusDialog; @@ -96,22 +97,22 @@ public class SMAPromptChangeStatus { return Result.FalseResult; } - public static void performChangeStatus(Collection<? extends AbstractWorkflowArtifact> awas, String selectedOption, double hours, int percent, boolean splitHours, boolean persist) throws OseeCoreException { + public static void performChangeStatus(Collection<? extends IAtsWorkItem> workItems, String selectedOption, double hours, int percent, boolean splitHours, boolean persist) throws OseeCoreException { if (splitHours) { - hours = hours / awas.size(); + hours = hours / workItems.size(); } SkynetTransaction transaction = null; if (persist) { transaction = TransactionManager.createTransaction(AtsUtil.getAtsBranch(), "ATS Prompt Change Status"); } - for (AbstractWorkflowArtifact awa : awas) { - if (awa.getStateMgr().isUnAssigned()) { - awa.getStateMgr().removeAssignee(AtsCoreUsers.UNASSIGNED_USER); - awa.getStateMgr().addAssignee(AtsClientService.get().getUserAdmin().getCurrentUser()); + for (IAtsWorkItem workItem : workItems) { + if (workItem.getStateMgr().isUnAssigned()) { + workItem.getStateMgr().removeAssignee(AtsCoreUsers.UNASSIGNED_USER); + workItem.getStateMgr().addAssignee(AtsClientService.get().getUserAdmin().getCurrentUser()); } - awa.getStateMgr().updateMetrics(awa.getStateDefinition(), hours, percent, true); + workItem.getStateMgr().updateMetrics(workItem.getStateDefinition(), hours, percent, true); if (persist) { - awa.persist(transaction); + AtsClientService.get().getArtifact(workItem).persist(transaction); } } if (persist) { diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/WETransitionComposite.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/WETransitionComposite.java index 2e42590f118..0a14492540e 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/WETransitionComposite.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/WETransitionComposite.java @@ -21,18 +21,23 @@ import org.eclipse.core.runtime.jobs.JobChangeAdapter; import org.eclipse.jface.viewers.ArrayContentProvider; import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.osee.ats.api.IAtsWorkItem; import org.eclipse.osee.ats.api.data.AtsArtifactTypes; import org.eclipse.osee.ats.api.data.AtsAttributeTypes; import org.eclipse.osee.ats.api.user.IAtsUser; +import org.eclipse.osee.ats.api.util.IAtsChangeSet; import org.eclipse.osee.ats.api.workdef.IAtsStateDefinition; import org.eclipse.osee.ats.api.workdef.RuleDefinitionOption; +import org.eclipse.osee.ats.api.workflow.transition.ITransitionHelper; +import org.eclipse.osee.ats.api.workflow.transition.ITransitionListener; +import org.eclipse.osee.ats.api.workflow.transition.TransitionResults; +import org.eclipse.osee.ats.core.AtsCore; +import org.eclipse.osee.ats.core.client.util.AtsChangeSet; import org.eclipse.osee.ats.core.client.util.AtsUtilCore; import org.eclipse.osee.ats.core.client.workflow.AbstractWorkflowArtifact; -import org.eclipse.osee.ats.core.client.workflow.transition.ITransitionHelper; -import org.eclipse.osee.ats.core.client.workflow.transition.TransitionHelperAdapter; -import org.eclipse.osee.ats.core.client.workflow.transition.TransitionResults; -import org.eclipse.osee.ats.core.client.workflow.transition.TransitionStatusData; import org.eclipse.osee.ats.core.client.workflow.transition.TransitionToOperation; +import org.eclipse.osee.ats.core.workflow.transition.TransitionHelperAdapter; +import org.eclipse.osee.ats.core.workflow.transition.TransitionStatusData; import org.eclipse.osee.ats.editor.stateItem.AtsStateItemManager; import org.eclipse.osee.ats.editor.stateItem.IAtsStateItem; import org.eclipse.osee.ats.internal.Activator; @@ -183,7 +188,7 @@ public class WETransitionComposite extends Composite { private void handleTransitionButtonSelection(final SMAEditor editor, final boolean isEditable) { editor.doSave(null); - final List<AbstractWorkflowArtifact> awas = Arrays.asList(awa); + final List<IAtsWorkItem> workItems = Arrays.asList((IAtsWorkItem) awa); final IAtsStateDefinition toStateDef = (IAtsStateDefinition) transitionToStateCombo.getSelected(); final IAtsStateDefinition fromStateDef = awa.getStateDefinition(); ITransitionHelper helper = new TransitionHelperAdapter() { @@ -199,7 +204,8 @@ public class WETransitionComposite extends Composite { } @Override - public Collection<? extends IAtsUser> getToAssignees(AbstractWorkflowArtifact awa) throws OseeCoreException { + public Collection<? extends IAtsUser> getToAssignees(IAtsWorkItem workItem) throws OseeCoreException { + AbstractWorkflowArtifact awa = (AbstractWorkflowArtifact) AtsClientService.get().getArtifact(workItem); return awa.getTransitionAssignees(); } @@ -222,7 +228,7 @@ public class WETransitionComposite extends Composite { OseeLog.log(Activator.class, OseeLevel.SEVERE_POPUP, ex); result.set(false); result.setText(String.format("Error processing extra hours spent for [%s]", - awas.iterator().next().toStringWithId())); + workItems.iterator().next().toStringWithId())); } if (!resultBool) { result.setCancelled(true); @@ -240,25 +246,49 @@ public class WETransitionComposite extends Composite { @Override public void run() { - IAtsStateDefinition toStateDef = - getAwas().iterator().next().getStateDefinitionByName(getToStateName()); - if (toStateDef.getStateType().isCancelledState()) { - EntryDialog cancelDialog = new EntryDialog("Cancellation Reason", "Enter cancellation reason."); - if (cancelDialog.open() != 0) { - result.setCancelled(true); + IAtsStateDefinition toStateDef; + try { + toStateDef = + AtsClientService.get().getWorkDefinitionAdmin().getStateDefinitionByName(awa, getToStateName()); + if (toStateDef.getStateType().isCancelledState()) { + EntryDialog cancelDialog = new EntryDialog("Cancellation Reason", "Enter cancellation reason."); + if (cancelDialog.open() != 0) { + result.setCancelled(true); + } + result.set(true); + result.setText(cancelDialog.getEntry()); } - result.set(true); - result.setText(cancelDialog.getEntry()); + } catch (OseeCoreException ex) { + OseeLog.log(Activator.class, Level.SEVERE, ex); } - } }, true); return result; } @Override - public Collection<AbstractWorkflowArtifact> getAwas() { - return awas; + public Collection<IAtsWorkItem> getWorkItems() { + return workItems; + } + + @Override + public void setInTransition(IAtsWorkItem workItem, boolean inTransition) throws OseeCoreException { + AtsClientService.get().getWorkflowArtifact(workItem).setInTransition(inTransition); + } + + @Override + public IAtsChangeSet getChangeSet() { + return new AtsChangeSet(getName()); + } + + @Override + public Collection<ITransitionListener> getTransitionListeners() { + try { + return AtsCore.getWorkItemService().getTransitionListeners(); + } catch (OseeCoreException ex) { + OseeLog.log(Activator.class, Level.SEVERE, ex); + } + return java.util.Collections.emptyList(); } }; @@ -396,7 +426,8 @@ public class WETransitionComposite extends Composite { uld.setMessage("Select users to transition to."); uld.setInitialSelections(AtsClientService.get().getUserAdmin().getOseeUsers(aba.getTransitionAssignees())); if (awa.getParentTeamWorkflow() != null) { - uld.setTeamMembers(AtsClientService.get().getUserAdmin().getOseeUsers(awa.getParentTeamWorkflow().getTeamDefinition().getMembersAndLeads())); + uld.setTeamMembers(AtsClientService.get().getUserAdmin().getOseeUsers( + awa.getParentTeamWorkflow().getTeamDefinition().getMembersAndLeads())); } if (uld.open() != 0) { return; 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 51d895db98d..cf476530709 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 @@ -11,16 +11,16 @@ package org.eclipse.osee.ats.editor.stateItem; import java.util.Collection; -import org.eclipse.osee.ats.api.data.AtsArtifactTypes; +import org.eclipse.osee.ats.api.IAtsWorkItem; +import org.eclipse.osee.ats.api.review.IAtsDecisionReview; import org.eclipse.osee.ats.api.user.IAtsUser; +import org.eclipse.osee.ats.api.util.IAtsChangeSet; import org.eclipse.osee.ats.api.workdef.IStateToken; +import org.eclipse.osee.ats.api.workflow.transition.ITransitionListener; +import org.eclipse.osee.ats.api.workflow.transition.TransitionResults; import org.eclipse.osee.ats.core.client.review.DecisionReviewState; import org.eclipse.osee.ats.core.client.review.XDecisionOptions; -import org.eclipse.osee.ats.core.client.workflow.AbstractWorkflowArtifact; -import org.eclipse.osee.ats.core.client.workflow.transition.ITransitionListener; -import org.eclipse.osee.ats.core.client.workflow.transition.TransitionResults; import org.eclipse.osee.framework.jdk.core.type.OseeCoreException; -import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction; /** * @author Donald G. Dunne @@ -37,17 +37,16 @@ public class AtsDecisionReviewPrepareStateItem extends AtsStateItem implements I } @Override - public void transitioning(TransitionResults results, AbstractWorkflowArtifact sma, IStateToken fromState, IStateToken toState, Collection<? extends IAtsUser> toAssignees) throws OseeCoreException { - if (sma.isOfType(AtsArtifactTypes.DecisionReview) && fromState.getName().equals( - DecisionReviewState.Prepare.getName()) && toState.getName().equals( + public void transitioning(TransitionResults results, IAtsWorkItem workItem, IStateToken fromState, IStateToken toState, Collection<? extends IAtsUser> toAssignees) throws OseeCoreException { + if ((workItem instanceof IAtsDecisionReview) && fromState.getName().equals(DecisionReviewState.Prepare.getName()) && toState.getName().equals( DecisionReviewState.Decision.getName())) { - XDecisionOptions decOptions = new XDecisionOptions(sma); + XDecisionOptions decOptions = new XDecisionOptions(workItem); decOptions.validateDecisionOptions(results); } } @Override - public void transitioned(AbstractWorkflowArtifact sma, IStateToken fromState, IStateToken toState, Collection<? extends IAtsUser> toAssignees, SkynetTransaction transaction) { + public void transitioned(IAtsWorkItem workItem, IStateToken fromState, IStateToken toState, Collection<? extends IAtsUser> toAssignees, IAtsChangeSet changes) { // do nothing } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/stateItem/AtsForceAssigneesToTeamLeadsStateItem.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/stateItem/AtsForceAssigneesToTeamLeadsStateItem.java index 2c90e3a4c03..26d4ea08804 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/stateItem/AtsForceAssigneesToTeamLeadsStateItem.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/stateItem/AtsForceAssigneesToTeamLeadsStateItem.java @@ -11,16 +11,18 @@ package org.eclipse.osee.ats.editor.stateItem; import java.util.Collection; +import org.eclipse.osee.ats.api.IAtsWorkItem; import org.eclipse.osee.ats.api.user.IAtsUser; +import org.eclipse.osee.ats.api.util.IAtsChangeSet; import org.eclipse.osee.ats.api.workdef.IAtsStateDefinition; import org.eclipse.osee.ats.api.workdef.IStateToken; import org.eclipse.osee.ats.api.workdef.RuleDefinitionOption; +import org.eclipse.osee.ats.api.workflow.IAtsTeamWorkflow; +import org.eclipse.osee.ats.api.workflow.transition.ITransitionListener; +import org.eclipse.osee.ats.api.workflow.transition.TransitionResults; import org.eclipse.osee.ats.core.client.team.TeamWorkFlowArtifact; -import org.eclipse.osee.ats.core.client.workflow.AbstractWorkflowArtifact; -import org.eclipse.osee.ats.core.client.workflow.transition.ITransitionListener; -import org.eclipse.osee.ats.core.client.workflow.transition.TransitionResults; +import org.eclipse.osee.ats.internal.AtsClientService; import org.eclipse.osee.framework.jdk.core.type.OseeCoreException; -import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction; /** * @author Donald G. Dunne @@ -37,12 +39,13 @@ public class AtsForceAssigneesToTeamLeadsStateItem extends AtsStateItem implemen } @Override - public void transitioned(AbstractWorkflowArtifact sma, IStateToken fromState, IStateToken toState, Collection<? extends IAtsUser> toAssignees, SkynetTransaction transaction) throws OseeCoreException { - if (sma.isTeamWorkflow() && isForceAssigneesToTeamLeads(sma.getStateDefinitionByName(toState.getName()))) { - Collection<IAtsUser> teamLeads = ((TeamWorkFlowArtifact) sma).getTeamDefinition().getLeads(); + public void transitioned(IAtsWorkItem workItem, IStateToken fromState, IStateToken toState, Collection<? extends IAtsUser> toAssignees, IAtsChangeSet changes) throws OseeCoreException { + if ((workItem instanceof IAtsTeamWorkflow) && isForceAssigneesToTeamLeads(AtsClientService.get().getWorkDefinitionAdmin().getStateDefinitionByName( + workItem, toState.getName()))) { + Collection<IAtsUser> teamLeads = ((TeamWorkFlowArtifact) workItem).getTeamDefinition().getLeads(); if (!teamLeads.isEmpty()) { - sma.getStateMgr().setAssignees(teamLeads); - sma.persist(transaction); + workItem.getStateMgr().setAssignees(teamLeads); + changes.add(workItem); } } } @@ -52,7 +55,7 @@ public class AtsForceAssigneesToTeamLeadsStateItem extends AtsStateItem implemen } @Override - public void transitioning(TransitionResults results, AbstractWorkflowArtifact sma, IStateToken fromState, IStateToken toState, Collection<? extends IAtsUser> toAssignees) { + public void transitioning(TransitionResults results, IAtsWorkItem workItem, IStateToken fromState, IStateToken toState, Collection<? extends IAtsUser> toAssignees) { // do nothing } 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 bf35d4f0347..e7c01a21724 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 @@ -75,6 +75,11 @@ public class AtsLogWorkPage extends StateXWidgetPage { public boolean matches(Identity<?>... identities) { return false; } + + @Override + public IAtsStateDefinition getStateDefinitionByName(String name) { + return null; + } } public AtsLogWorkPage(String title) { diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/stateItem/AtsPeerToPeerReviewReviewStateItem.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/stateItem/AtsPeerToPeerReviewReviewStateItem.java index 7f9407e7fd1..c72c0b651c8 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/stateItem/AtsPeerToPeerReviewReviewStateItem.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/stateItem/AtsPeerToPeerReviewReviewStateItem.java @@ -13,18 +13,18 @@ package org.eclipse.osee.ats.editor.stateItem; import java.util.Collection; import java.util.HashSet; import java.util.Set; -import org.eclipse.osee.ats.api.data.AtsArtifactTypes; +import org.eclipse.osee.ats.api.IAtsWorkItem; +import org.eclipse.osee.ats.api.review.IAtsPeerToPeerReview; import org.eclipse.osee.ats.api.user.IAtsUser; +import org.eclipse.osee.ats.api.util.IAtsChangeSet; import org.eclipse.osee.ats.api.workdef.IStateToken; +import org.eclipse.osee.ats.api.workflow.transition.ITransitionListener; +import org.eclipse.osee.ats.api.workflow.transition.TransitionResults; import org.eclipse.osee.ats.core.client.review.PeerToPeerReviewArtifact; import org.eclipse.osee.ats.core.client.review.PeerToPeerReviewState; import org.eclipse.osee.ats.core.client.review.role.UserRole; import org.eclipse.osee.ats.core.client.review.role.UserRoleManager; -import org.eclipse.osee.ats.core.client.workflow.AbstractWorkflowArtifact; -import org.eclipse.osee.ats.core.client.workflow.transition.ITransitionListener; -import org.eclipse.osee.ats.core.client.workflow.transition.TransitionResults; import org.eclipse.osee.framework.jdk.core.type.OseeCoreException; -import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction; /** * @author Donald G. Dunne @@ -41,26 +41,25 @@ public class AtsPeerToPeerReviewReviewStateItem extends AtsStateItem implements } @Override - public void transitioned(AbstractWorkflowArtifact sma, IStateToken fromState, IStateToken toState, Collection<? extends IAtsUser> toAssignees, SkynetTransaction transaction) throws OseeCoreException { - if (sma.isOfType(AtsArtifactTypes.PeerToPeerReview) && toState.getName().equals( - PeerToPeerReviewState.Review.getName())) { + public void transitioned(IAtsWorkItem workItem, IStateToken fromState, IStateToken toState, Collection<? extends IAtsUser> toAssignees, IAtsChangeSet changes) throws OseeCoreException { + if ((workItem instanceof IAtsPeerToPeerReview) && toState.getName().equals(PeerToPeerReviewState.Review.getName())) { // Set Assignees to all user roles users Set<IAtsUser> assignees = new HashSet<IAtsUser>(); - PeerToPeerReviewArtifact peerArt = (PeerToPeerReviewArtifact) sma; + PeerToPeerReviewArtifact peerArt = (PeerToPeerReviewArtifact) workItem; for (UserRole uRole : UserRoleManager.getUserRoles(peerArt)) { if (!uRole.isCompleted()) { assignees.add(uRole.getUser()); } } - assignees.addAll(sma.getStateMgr().getAssignees()); + assignees.addAll(workItem.getStateMgr().getAssignees()); - sma.getStateMgr().setAssignees(assignees); - sma.persist(transaction); + workItem.getStateMgr().setAssignees(assignees); + changes.add(workItem); } } @Override - public void transitioning(TransitionResults results, AbstractWorkflowArtifact sma, IStateToken fromState, IStateToken toState, Collection<? extends IAtsUser> toAssignees) { + public void transitioning(TransitionResults results, IAtsWorkItem workItem, IStateToken fromState, IStateToken toState, Collection<? extends IAtsUser> toAssignees) { // do nothing } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/stateItem/AtsStateItem.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/stateItem/AtsStateItem.java index 8281eab1cb9..6eadb2aacba 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/stateItem/AtsStateItem.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/stateItem/AtsStateItem.java @@ -13,8 +13,11 @@ package org.eclipse.osee.ats.editor.stateItem; import java.util.Collection; import java.util.Collections; import java.util.List; +import org.eclipse.osee.ats.api.IAtsWorkItem; import org.eclipse.osee.ats.api.user.IAtsUser; +import org.eclipse.osee.ats.api.util.IAtsChangeSet; import org.eclipse.osee.ats.api.workdef.IAtsStateDefinition; +import org.eclipse.osee.ats.api.workdef.IStateToken; import org.eclipse.osee.ats.core.client.workflow.AbstractWorkflowArtifact; import org.eclipse.osee.ats.editor.SMAWorkFlowSection; import org.eclipse.osee.framework.core.util.Result; @@ -109,4 +112,8 @@ public abstract class AtsStateItem implements IAtsStateItem { public String toString() { return getName(); } + + @SuppressWarnings("unused") + public void transitioned(IAtsWorkItem workItem, IStateToken fromState, IStateToken toState, Collection<? extends IAtsUser> toAssignees, IAtsChangeSet changes) throws OseeCoreException { + } }
\ 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 37b3f4d6162..f31eca99aa5 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 @@ -18,19 +18,21 @@ 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.api.review.IAtsAbstractReview; import org.eclipse.osee.ats.api.workdef.IStateToken; +import org.eclipse.osee.ats.api.workflow.transition.TransitionOption; +import org.eclipse.osee.ats.api.workflow.transition.TransitionResults; import org.eclipse.osee.ats.core.client.review.AbstractReviewArtifact; import org.eclipse.osee.ats.core.client.review.DecisionReviewManager; import org.eclipse.osee.ats.core.client.review.PeerToPeerReviewManager; import org.eclipse.osee.ats.core.client.review.ReviewManager; import org.eclipse.osee.ats.core.client.team.TeamWorkFlowArtifact; +import org.eclipse.osee.ats.core.client.util.AtsChangeSet; import org.eclipse.osee.ats.core.client.util.AtsUtilCore; import org.eclipse.osee.ats.core.client.workflow.AbstractWorkflowArtifact; -import org.eclipse.osee.ats.core.client.workflow.transition.TransitionHelper; -import org.eclipse.osee.ats.core.client.workflow.transition.TransitionManager; -import org.eclipse.osee.ats.core.client.workflow.transition.TransitionOption; -import org.eclipse.osee.ats.core.client.workflow.transition.TransitionResults; import org.eclipse.osee.ats.core.workflow.state.TeamState; +import org.eclipse.osee.ats.core.workflow.transition.TransitionHelper; +import org.eclipse.osee.ats.core.workflow.transition.TransitionManager; import org.eclipse.osee.ats.editor.SMAEditor; import org.eclipse.osee.ats.editor.SMAWorkFlowSection; import org.eclipse.osee.ats.internal.Activator; @@ -302,7 +304,9 @@ public class ReviewInfoXWidget extends XLabelValueBase { } try { List<AbstractWorkflowArtifact> awas = new ArrayList<AbstractWorkflowArtifact>(); - for (AbstractReviewArtifact revArt : ReviewManager.getReviewsFromCurrentState(teamArt)) { + for (IAtsAbstractReview review : ReviewManager.getReviewsFromCurrentState(teamArt)) { + AbstractReviewArtifact revArt = + (AbstractReviewArtifact) AtsClientService.get().getArtifact(review); if (!revArt.isCompletedOrCancelled()) { if (revArt.getStateMgr().isUnAssigned()) { revArt.getStateMgr().setAssignee(AtsClientService.get().getUserAdmin().getCurrentUser()); @@ -310,15 +314,16 @@ public class ReviewInfoXWidget extends XLabelValueBase { awas.add(revArt); } } + AtsChangeSet changes = new AtsChangeSet("Admin Auto-Complete Reviews"); TransitionHelper helper = new TransitionHelper("ATS Auto Complete Reviews", awas, TeamState.Completed.getName(), null, - null, TransitionOption.OverrideTransitionValidityCheck, TransitionOption.None); + null, changes, TransitionOption.OverrideTransitionValidityCheck, TransitionOption.None); TransitionManager transitionMgr = new TransitionManager(helper); TransitionResults results = transitionMgr.handleAll(); if (!results.isEmpty()) { AWorkbench.popup(String.format("Transition Error %s", results.toString())); } - transitionMgr.getTransaction().execute(); + changes.execute(); smaWorkflowSection.getEditor().refreshPages(); } catch (OseeCoreException ex) { OseeLog.log(Activator.class, OseeLevel.SEVERE_POPUP, ex); 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 1185eb29eb0..26d4bcd0e5e 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 @@ -15,22 +15,21 @@ import java.util.logging.Level; import org.eclipse.jface.dialogs.IMessageProvider; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.osee.ats.api.workdef.IStateToken; +import org.eclipse.osee.ats.api.workflow.transition.TransitionOption; +import org.eclipse.osee.ats.api.workflow.transition.TransitionResults; import org.eclipse.osee.ats.core.client.task.AbstractTaskableArtifact; import org.eclipse.osee.ats.core.client.task.TaskArtifact; import org.eclipse.osee.ats.core.client.task.TaskStates; +import org.eclipse.osee.ats.core.client.util.AtsChangeSet; import org.eclipse.osee.ats.core.client.util.AtsUtilCore; -import org.eclipse.osee.ats.core.client.workflow.transition.TransitionHelper; -import org.eclipse.osee.ats.core.client.workflow.transition.TransitionManager; -import org.eclipse.osee.ats.core.client.workflow.transition.TransitionOption; -import org.eclipse.osee.ats.core.client.workflow.transition.TransitionResults; +import org.eclipse.osee.ats.core.workflow.transition.TransitionHelper; +import org.eclipse.osee.ats.core.workflow.transition.TransitionManager; import org.eclipse.osee.ats.internal.Activator; import org.eclipse.osee.ats.internal.AtsClientService; import org.eclipse.osee.ats.util.AtsUtil; import org.eclipse.osee.framework.jdk.core.type.OseeCoreException; import org.eclipse.osee.framework.logging.OseeLevel; import org.eclipse.osee.framework.logging.OseeLog; -import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction; -import org.eclipse.osee.framework.skynet.core.transaction.TransactionManager; import org.eclipse.osee.framework.ui.plugin.util.AWorkbench; import org.eclipse.osee.framework.ui.skynet.widgets.XLabelValueBase; import org.eclipse.osee.framework.ui.swt.Displays; @@ -127,17 +126,17 @@ public class TaskInfoXWidget extends XLabelValueBase { return; } try { - SkynetTransaction transaction = - TransactionManager.createTransaction(AtsUtil.getAtsBranch(), "ATS Auto Complete Tasks"); + AtsChangeSet changes = new AtsChangeSet("ATS Auto Complete Tasks"); for (TaskArtifact taskArt : taskableArt.getTaskArtifacts(forState)) { if (!taskArt.isCompletedOrCancelled()) { if (taskArt.getStateMgr().isUnAssigned()) { - taskArt.getStateMgr().setAssignee(AtsClientService.get().getUserAdmin().getCurrentUser()); + taskArt.getStateMgr().setAssignee( + AtsClientService.get().getUserAdmin().getCurrentUser()); } TransitionHelper helper = new TransitionHelper("Transition to Completed", Arrays.asList(taskArt), TaskStates.Completed.getName(), null, null, - TransitionOption.OverrideTransitionValidityCheck, TransitionOption.None); + changes, TransitionOption.OverrideTransitionValidityCheck, TransitionOption.None); TransitionManager transitionMgr = new TransitionManager(helper); TransitionResults results = transitionMgr.handleAll(); if (!results.isEmpty()) { @@ -146,7 +145,7 @@ public class TaskInfoXWidget extends XLabelValueBase { } } } - transaction.execute(); + changes.execute(); } catch (OseeCoreException ex) { OseeLog.log(Activator.class, OseeLevel.SEVERE_POPUP, ex); } 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 ac108f9c8eb..44d749fd02d 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 @@ -51,12 +51,12 @@ import org.eclipse.osee.ats.core.client.task.TaskArtifact; import org.eclipse.osee.ats.core.client.team.TeamWorkFlowArtifact; import org.eclipse.osee.ats.core.client.util.AtsTaskCache; import org.eclipse.osee.ats.core.client.workflow.AbstractWorkflowArtifact; -import org.eclipse.osee.ats.core.client.workflow.transition.TransitionManager; import org.eclipse.osee.ats.core.config.AtsVersionService; import org.eclipse.osee.ats.core.config.TeamDefinitions; import org.eclipse.osee.ats.core.users.AtsCoreUsers; import org.eclipse.osee.ats.core.util.AtsObjects; import org.eclipse.osee.ats.core.workflow.state.TeamState; +import org.eclipse.osee.ats.core.workflow.transition.TransitionManager; import org.eclipse.osee.ats.internal.Activator; import org.eclipse.osee.ats.internal.AtsClientService; import org.eclipse.osee.ats.util.AtsUtil; 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 a327f249b6c..41c14b212d0 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 @@ -24,17 +24,18 @@ import org.eclipse.osee.ats.api.ai.IAtsActionableItem; import org.eclipse.osee.ats.api.data.AtsArtifactTypes; import org.eclipse.osee.ats.api.data.AtsAttributeTypes; import org.eclipse.osee.ats.api.version.IAtsVersion; +import org.eclipse.osee.ats.api.workflow.transition.TransitionOption; +import org.eclipse.osee.ats.api.workflow.transition.TransitionResults; import org.eclipse.osee.ats.core.client.action.ActionManager; import org.eclipse.osee.ats.core.client.team.TeamWorkFlowArtifact; +import org.eclipse.osee.ats.core.client.util.AtsChangeSet; import org.eclipse.osee.ats.core.client.util.AtsUtilCore; import org.eclipse.osee.ats.core.client.workflow.ChangeType; import org.eclipse.osee.ats.core.client.workflow.ChangeTypeUtil; -import org.eclipse.osee.ats.core.client.workflow.transition.TransitionHelper; -import org.eclipse.osee.ats.core.client.workflow.transition.TransitionManager; -import org.eclipse.osee.ats.core.client.workflow.transition.TransitionOption; -import org.eclipse.osee.ats.core.client.workflow.transition.TransitionResults; import org.eclipse.osee.ats.core.config.AtsVersionService; import org.eclipse.osee.ats.core.workflow.state.TeamState; +import org.eclipse.osee.ats.core.workflow.transition.TransitionHelper; +import org.eclipse.osee.ats.core.workflow.transition.TransitionManager; import org.eclipse.osee.ats.internal.Activator; import org.eclipse.osee.ats.internal.AtsClientService; import org.eclipse.osee.ats.util.AtsUtil; @@ -48,8 +49,6 @@ import org.eclipse.osee.framework.logging.OseeLog; 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.event.OseeEventManager; -import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction; -import org.eclipse.osee.framework.skynet.core.transaction.TransactionManager; 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; @@ -193,16 +192,16 @@ public class AtsRemoteEventTestItem extends WorldXNavigateItemAction { } private void makeChanges7(TeamWorkFlowArtifact teamArt) throws OseeCoreException { - SkynetTransaction transaction = TransactionManager.createTransaction(AtsUtil.getAtsBranch(), "Remote Event Test"); + AtsChangeSet changes = new AtsChangeSet("Remote Event Test"); TransitionHelper helper = new TransitionHelper("Remote Event Test", Arrays.asList(teamArt), TeamState.Analyze.getName(), - Collections.singleton(AtsClientService.get().getUserAdmin().getCurrentUser()), null, TransitionOption.None); - TransitionManager transitionMgr = new TransitionManager(helper, transaction); + Collections.singleton(AtsClientService.get().getUserAdmin().getCurrentUser()), null, changes, TransitionOption.None); + TransitionManager transitionMgr = new TransitionManager(helper); TransitionResults results = transitionMgr.handleAll(); if (!results.isEmpty()) { throw new OseeStateException(results.toString()); } - transaction.execute(); + changes.execute(); } private void makeChanges6(TeamWorkFlowArtifact teamArt) throws OseeCoreException { diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/notify/AtsNotificationTransitionListener.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/notify/AtsNotificationTransitionListener.java index 2a4e1542908..9b7f34772d4 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/notify/AtsNotificationTransitionListener.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/notify/AtsNotificationTransitionListener.java @@ -11,15 +11,17 @@ package org.eclipse.osee.ats.notify; import java.util.Collection; +import org.eclipse.osee.ats.api.IAtsWorkItem; import org.eclipse.osee.ats.api.notify.AtsNotifyType; import org.eclipse.osee.ats.api.user.IAtsUser; +import org.eclipse.osee.ats.api.util.IAtsChangeSet; import org.eclipse.osee.ats.api.workdef.IStateToken; +import org.eclipse.osee.ats.api.workflow.transition.ITransitionListener; +import org.eclipse.osee.ats.api.workflow.transition.TransitionResults; import org.eclipse.osee.ats.core.client.notify.AtsNotificationManager; import org.eclipse.osee.ats.core.client.workflow.AbstractWorkflowArtifact; -import org.eclipse.osee.ats.core.client.workflow.transition.ITransitionListener; -import org.eclipse.osee.ats.core.client.workflow.transition.TransitionResults; +import org.eclipse.osee.ats.internal.AtsClientService; import org.eclipse.osee.framework.jdk.core.type.OseeCoreException; -import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction; import org.eclipse.osee.framework.ui.skynet.notify.OseeNotificationManager; /** @@ -28,14 +30,15 @@ import org.eclipse.osee.framework.ui.skynet.notify.OseeNotificationManager; public class AtsNotificationTransitionListener implements ITransitionListener { @Override - public void transitioning(TransitionResults results, AbstractWorkflowArtifact sma, IStateToken fromState, IStateToken toState, Collection<? extends IAtsUser> toAssignees) { + public void transitioning(TransitionResults results, IAtsWorkItem workItem, IStateToken fromState, IStateToken toState, Collection<? extends IAtsUser> toAssignees) { // do nothing } @Override - public void transitioned(AbstractWorkflowArtifact awa, IStateToken fromState, IStateToken toState, Collection<? extends IAtsUser> toAssignees, SkynetTransaction transaction) throws OseeCoreException { + public void transitioned(IAtsWorkItem workItem, IStateToken fromState, IStateToken toState, Collection<? extends IAtsUser> toAssignees, IAtsChangeSet changes) throws OseeCoreException { - AtsNotificationManager.notify(awa, AtsNotifyType.Subscribed, AtsNotifyType.Completed, AtsNotifyType.Cancelled); + AtsNotificationManager.notify((AbstractWorkflowArtifact) AtsClientService.get().getArtifact(workItem), + AtsNotifyType.Subscribed, AtsNotifyType.Completed, AtsNotifyType.Cancelled); OseeNotificationManager.getInstance().sendNotifications(); } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/operation/CreateActionFromTaskBlam.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/operation/CreateActionFromTaskBlam.java index f7e72289ca0..05bbc3e2b2d 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/operation/CreateActionFromTaskBlam.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/operation/CreateActionFromTaskBlam.java @@ -25,6 +25,7 @@ import org.eclipse.osee.ats.core.client.action.ActionArtifact; import org.eclipse.osee.ats.core.client.action.ActionManager; import org.eclipse.osee.ats.core.client.task.TaskArtifact; import org.eclipse.osee.ats.core.client.team.TeamWorkFlowArtifact; +import org.eclipse.osee.ats.core.client.util.AtsChangeSet; import org.eclipse.osee.ats.core.client.util.AtsUtilCore; import org.eclipse.osee.ats.core.client.workflow.ChangeType; import org.eclipse.osee.ats.editor.SMAEditor; @@ -40,8 +41,6 @@ import org.eclipse.osee.framework.logging.OseeLevel; import org.eclipse.osee.framework.logging.OseeLog; import org.eclipse.osee.framework.skynet.core.artifact.Artifact; import org.eclipse.osee.framework.skynet.core.attribute.AttributeTypeManager; -import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction; -import org.eclipse.osee.framework.skynet.core.transaction.TransactionManager; import org.eclipse.osee.framework.ui.plugin.util.AWorkbench; import org.eclipse.osee.framework.ui.skynet.blam.AbstractBlam; import org.eclipse.osee.framework.ui.skynet.blam.VariableMap; @@ -123,8 +122,7 @@ public class CreateActionFromTaskBlam extends AbstractBlam { private void handleCreateActions(Collection<TaskArtifact> tasks, String title, Collection<IAtsActionableItem> aias, ChangeType changeType, String priority, IProgressMonitor monitor) throws OseeCoreException { Set<TeamWorkFlowArtifact> newTeamArts = new HashSet<TeamWorkFlowArtifact>(); - SkynetTransaction transaction = - TransactionManager.createTransaction(AtsUtil.getAtsBranch(), "Create Actions from Tasks"); + AtsChangeSet changes = new AtsChangeSet("Create Actions from Tasks"); for (TaskArtifact task : tasks) { String useTitle = title; if (!Strings.isValid(useTitle)) { @@ -132,15 +130,15 @@ public class CreateActionFromTaskBlam extends AbstractBlam { } ActionArtifact action = ActionManager.createAction(monitor, useTitle, getDescription(task), changeType, priority, false, null, - aias, new Date(), AtsClientService.get().getUserAdmin().getCurrentUser(), null, transaction); + aias, new Date(), AtsClientService.get().getUserAdmin().getCurrentUser(), null, changes); for (TeamWorkFlowArtifact teamArt : action.getTeams()) { newTeamArts.add(teamArt); teamArt.addRelation(CoreRelationTypes.SupportingInfo_SupportingInfo, task); - teamArt.persist(transaction); + changes.add(teamArt); } } - transaction.execute(); + changes.execute(); if (newTeamArts.size() == 1) { SMAEditor.editArtifact(newTeamArts.iterator().next()); } else { diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/operation/DuplicateWorkflowBlam.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/operation/DuplicateWorkflowBlam.java index 23240161bc6..343a813c53b 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/operation/DuplicateWorkflowBlam.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/operation/DuplicateWorkflowBlam.java @@ -29,6 +29,7 @@ import org.eclipse.osee.ats.core.client.task.AbstractTaskableArtifact; import org.eclipse.osee.ats.core.client.task.TaskArtifact; import org.eclipse.osee.ats.core.client.team.TeamWorkFlowArtifact; import org.eclipse.osee.ats.core.client.team.TeamWorkFlowManager; +import org.eclipse.osee.ats.core.client.util.AtsChangeSet; import org.eclipse.osee.ats.core.client.util.AtsUtilCore; import org.eclipse.osee.ats.core.client.workflow.ITeamWorkflowProvider; import org.eclipse.osee.ats.editor.SMAEditor; @@ -126,8 +127,7 @@ public class DuplicateWorkflowBlam extends AbstractBlam { private void handleCreateNewWorkflow(Collection<TeamWorkFlowArtifact> teamArts, String title) throws OseeCoreException { Set<TeamWorkFlowArtifact> newTeamArts = new HashSet<TeamWorkFlowArtifact>(); - SkynetTransaction transaction = - TransactionManager.createTransaction(AtsUtil.getAtsBranch(), "Duplicate Workflow"); + AtsChangeSet changes = new AtsChangeSet("Duplicate Workflow"); Date createdDate = new Date(); IAtsUser createdBy = AtsClientService.get().getUserAdmin().getCurrentUser(); for (TeamWorkFlowArtifact teamArt : teamArts) { @@ -138,15 +138,15 @@ public class DuplicateWorkflowBlam extends AbstractBlam { } TeamWorkFlowArtifact newTeamArt = ActionManager.createTeamWorkflow(teamArt.getParentActionArtifact(), teamArt.getTeamDefinition(), - teamArt.getActionableItemsDam().getActionableItems(), assignees, transaction, createdDate, createdBy, - null, CreateTeamOption.Duplicate_If_Exists); + teamArt.getActionableItemsDam().getActionableItems(), assignees, changes, createdDate, createdBy, null, + CreateTeamOption.Duplicate_If_Exists); if (Strings.isValid(title)) { newTeamArt.setName(title); } - newTeamArt.persist(transaction); + changes.add(newTeamArt); newTeamArts.add(newTeamArt); } - transaction.execute(); + changes.execute(); for (TeamWorkFlowArtifact newTeamArt : newTeamArts) { SMAEditor.editArtifact(newTeamArt); } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/operation/ImportTasksFromSimpleList.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/operation/ImportTasksFromSimpleList.java index 4a9111e6295..948ace05d56 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/operation/ImportTasksFromSimpleList.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/operation/ImportTasksFromSimpleList.java @@ -22,18 +22,16 @@ import org.eclipse.osee.ats.api.user.IAtsUser; import org.eclipse.osee.ats.column.RelatedToStateColumn; import org.eclipse.osee.ats.core.client.task.AbstractTaskableArtifact; import org.eclipse.osee.ats.core.client.team.TeamWorkFlowArtifact; +import org.eclipse.osee.ats.core.client.util.AtsChangeSet; import org.eclipse.osee.ats.editor.SMAEditor; import org.eclipse.osee.ats.internal.Activator; import org.eclipse.osee.ats.internal.AtsClientService; -import org.eclipse.osee.ats.util.AtsUtil; import org.eclipse.osee.framework.jdk.core.type.OseeCoreException; import org.eclipse.osee.framework.jdk.core.type.OseeStateException; 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.transaction.SkynetTransaction; -import org.eclipse.osee.framework.skynet.core.transaction.TransactionManager; import org.eclipse.osee.framework.ui.plugin.util.AWorkbench; import org.eclipse.osee.framework.ui.skynet.blam.AbstractBlam; import org.eclipse.osee.framework.ui.skynet.blam.VariableMap; @@ -102,13 +100,12 @@ public class ImportTasksFromSimpleList extends AbstractBlam { } try { final TeamWorkFlowArtifact teamArt = (TeamWorkFlowArtifact) artifact; - SkynetTransaction transaction = - TransactionManager.createTransaction(AtsUtil.getAtsBranch(), "Import Tasks from Simple List"); + AtsChangeSet changes = new AtsChangeSet("Import Tasks from Simple List"); Date createdDate = new Date(); IAtsUser createdBy = AtsClientService.get().getUserAdmin().getCurrentUser(); - teamArt.createTasks(titles, assignees, createdDate, createdBy, stateCombo.get(), transaction); - teamArt.persist(transaction); - transaction.execute(); + teamArt.createTasks(titles, assignees, createdDate, createdBy, stateCombo.get(), changes); + changes.add(teamArt); + changes.execute(); } catch (Exception ex) { OseeLog.log(Activator.class, OseeLevel.SEVERE_POPUP, ex); return; diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/operation/ImportTasksFromSpreadsheet.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/operation/ImportTasksFromSpreadsheet.java index e460f97b46e..bdbb5ba731f 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/operation/ImportTasksFromSpreadsheet.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/operation/ImportTasksFromSpreadsheet.java @@ -19,16 +19,14 @@ import org.eclipse.core.runtime.jobs.Job; import org.eclipse.osee.ats.api.data.AtsArtifactTypes; import org.eclipse.osee.ats.core.client.task.AbstractTaskableArtifact; import org.eclipse.osee.ats.core.client.team.TeamWorkFlowArtifact; +import org.eclipse.osee.ats.core.client.util.AtsChangeSet; import org.eclipse.osee.ats.editor.SMAEditor; -import org.eclipse.osee.ats.util.AtsUtil; import org.eclipse.osee.ats.util.Import.ExcelAtsTaskArtifactExtractor; import org.eclipse.osee.ats.util.Import.TaskImportJob; import org.eclipse.osee.framework.jdk.core.type.OseeCoreException; import org.eclipse.osee.framework.jdk.core.util.Strings; 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.transaction.SkynetTransaction; -import org.eclipse.osee.framework.skynet.core.transaction.TransactionManager; import org.eclipse.osee.framework.ui.plugin.util.AWorkbench; import org.eclipse.osee.framework.ui.skynet.blam.AbstractBlam; import org.eclipse.osee.framework.ui.skynet.blam.VariableMap; @@ -121,13 +119,12 @@ public class ImportTasksFromSpreadsheet extends AbstractBlam { } File file = new File(filename); try { - SkynetTransaction transaction = - TransactionManager.createTransaction(AtsUtil.getAtsBranch(), "Import Tasks from Spreadsheet"); + AtsChangeSet changes = new AtsChangeSet("Import Tasks from Spreadsheet"); Job job = Jobs.startJob(new TaskImportJob(file, new ExcelAtsTaskArtifactExtractor( - (TeamWorkFlowArtifact) artifact, emailPocs, transaction))); + (TeamWorkFlowArtifact) artifact, emailPocs, changes))); job.join(); - transaction.execute(); + changes.execute(); } catch (Exception ex) { log(ex); return; diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/operation/ModifyActionableItemsBlam.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/operation/ModifyActionableItemsBlam.java index 48fc32e8858..bc447f562ae 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/operation/ModifyActionableItemsBlam.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/operation/ModifyActionableItemsBlam.java @@ -37,6 +37,7 @@ import org.eclipse.osee.ats.api.workflow.IAtsTeamWorkflow; import org.eclipse.osee.ats.core.ai.ModifyActionableItems; import org.eclipse.osee.ats.core.client.action.ActionManager; import org.eclipse.osee.ats.core.client.team.TeamWorkFlowArtifact; +import org.eclipse.osee.ats.core.client.util.AtsChangeSet; import org.eclipse.osee.ats.core.config.ActionableItems; import org.eclipse.osee.ats.core.config.TeamDefinitionUtility; import org.eclipse.osee.ats.internal.Activator; @@ -54,8 +55,6 @@ import org.eclipse.osee.framework.jdk.core.type.OseeCoreException; import org.eclipse.osee.framework.logging.OseeLevel; import org.eclipse.osee.framework.logging.OseeLog; import org.eclipse.osee.framework.skynet.core.artifact.Artifact; -import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction; -import org.eclipse.osee.framework.skynet.core.transaction.TransactionManager; import org.eclipse.osee.framework.ui.plugin.util.AWorkbench; import org.eclipse.osee.framework.ui.plugin.util.ArrayTreeContentProvider; import org.eclipse.osee.framework.ui.skynet.FrameworkImage; @@ -342,28 +341,25 @@ public class ModifyActionableItemsBlam extends AbstractBlam { @Override protected void doWork(IProgressMonitor monitor) throws Exception { - SkynetTransaction transaction = TransactionManager.createTransaction(AtsUtil.getAtsBranchToken(), getName()); + AtsChangeSet changes = new AtsChangeSet(getName()); Date createdDate = new Date(); for (CreateTeamData data : job.getTeamDatas()) { TeamWorkFlowArtifact teamArt = ActionManager.createTeamWorkflow(teamWf.getParentActionArtifact(), data.getTeamDef(), - data.getActionableItems(), new LinkedList<IAtsUser>(data.getAssignees()), transaction, createdDate, + data.getActionableItems(), new LinkedList<IAtsUser>(data.getAssignees()), changes, createdDate, data.getCreatedBy(), null, data.getCreateTeamOption()); - teamArt.persist(transaction); newTeamWfs.add(teamArt); } for (IAtsActionableItem checkedAi : job.getAddAis()) { results.logWithFormat("Actionable Item [%s] will be added to this workflow\n", checkedAi); teamWf.getActionableItemsDam().addActionableItem(checkedAi); - teamWf.persist(transaction); } for (IAtsActionableItem currAi : job.getRemoveAis()) { results.logWithFormat("Actionable Item [%s] will be removed from this workflow\n", currAi); teamWf.getActionableItemsDam().removeActionableItem(currAi); - teamWf.persist(transaction); } - transaction.execute(); + changes.execute(); } public List<TeamWorkFlowArtifact> getNewTeamWfs() { diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/review/NewPeerToPeerReviewItem.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/review/NewPeerToPeerReviewItem.java index deb3a520e09..47b670b4f30 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/review/NewPeerToPeerReviewItem.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/review/NewPeerToPeerReviewItem.java @@ -17,6 +17,7 @@ import org.eclipse.osee.ats.AtsImage; import org.eclipse.osee.ats.AtsOpenOption; import org.eclipse.osee.ats.core.client.review.PeerToPeerReviewArtifact; import org.eclipse.osee.ats.core.client.review.PeerToPeerReviewManager; +import org.eclipse.osee.ats.core.client.util.AtsChangeSet; import org.eclipse.osee.ats.internal.Activator; import org.eclipse.osee.ats.internal.AtsClientService; import org.eclipse.osee.ats.util.AtsUtil; @@ -24,8 +25,6 @@ import org.eclipse.osee.ats.util.widgets.dialog.ActionableItemListDialog; import org.eclipse.osee.framework.core.enums.Active; import org.eclipse.osee.framework.logging.OseeLevel; import org.eclipse.osee.framework.logging.OseeLog; -import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction; -import org.eclipse.osee.framework.skynet.core.transaction.TransactionManager; 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; @@ -56,13 +55,13 @@ public class NewPeerToPeerReviewItem extends XNavigateItemAction { AWorkbench.popup("Must select at least one Actionable Item"); return; } - SkynetTransaction transaction = - TransactionManager.createTransaction(AtsUtil.getAtsBranch(), "New Stand-alone Peer To Peer Review"); + + AtsChangeSet changes = new AtsChangeSet("New Stand-alone Peer To Peer Review"); PeerToPeerReviewArtifact peerArt = PeerToPeerReviewManager.createNewPeerToPeerReview(ld.getSelected().iterator().next(), ed.getEntry(), - null, new Date(), AtsClientService.get().getUserAdmin().getCurrentUser(), transaction); - peerArt.persist(transaction); - transaction.execute(); + null, new Date(), AtsClientService.get().getUserAdmin().getCurrentUser(), changes); + changes.execute(); + AtsUtil.openATSAction(peerArt, AtsOpenOption.OpenAll); } catch (Exception ex) { OseeLog.log(Activator.class, OseeLevel.SEVERE_POPUP, ex); diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/review/NewPeerToPeerReviewJob.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/review/NewPeerToPeerReviewJob.java index e5943ede7e1..9d1fd832f26 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/review/NewPeerToPeerReviewJob.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/review/NewPeerToPeerReviewJob.java @@ -19,10 +19,9 @@ import org.eclipse.osee.ats.AtsOpenOption; import org.eclipse.osee.ats.core.client.review.PeerToPeerReviewArtifact; import org.eclipse.osee.ats.core.client.review.PeerToPeerReviewManager; import org.eclipse.osee.ats.core.client.team.TeamWorkFlowArtifact; +import org.eclipse.osee.ats.core.client.util.AtsChangeSet; import org.eclipse.osee.ats.internal.Activator; import org.eclipse.osee.ats.util.AtsUtil; -import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction; -import org.eclipse.osee.framework.skynet.core.transaction.TransactionManager; /** * @author Donald G. Dunne @@ -43,11 +42,10 @@ public class NewPeerToPeerReviewJob extends Job { @Override public IStatus run(final IProgressMonitor monitor) { try { - SkynetTransaction transaction = TransactionManager.createTransaction(AtsUtil.getAtsBranch(), "New Peer To Peer Review"); + AtsChangeSet changes = new AtsChangeSet("New Peer To Peer Review"); PeerToPeerReviewArtifact peerArt = - PeerToPeerReviewManager.createNewPeerToPeerReview(teamParent, reviewTitle, againstState, transaction); - peerArt.persist(transaction); - transaction.execute(); + PeerToPeerReviewManager.createNewPeerToPeerReview(teamParent, reviewTitle, againstState, changes); + changes.execute(); AtsUtil.openATSAction(peerArt, AtsOpenOption.OpenOneOrPopupSelect); } catch (Exception ex) { diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/AtsBranchCommitOperation.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/AtsBranchCommitOperation.java index 426bab4cbde..dee085574b8 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/AtsBranchCommitOperation.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/AtsBranchCommitOperation.java @@ -13,17 +13,20 @@ package org.eclipse.osee.ats.util; import java.util.Date; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.osee.ats.api.review.IAtsAbstractReview; import org.eclipse.osee.ats.api.workdef.ReviewBlockType; import org.eclipse.osee.ats.api.workdef.StateEventType; import org.eclipse.osee.ats.core.client.branch.AtsBranchManagerCore; import org.eclipse.osee.ats.core.client.review.AbstractReviewArtifact; import org.eclipse.osee.ats.core.client.review.ReviewManager; import org.eclipse.osee.ats.core.client.team.TeamWorkFlowArtifact; +import org.eclipse.osee.ats.core.client.util.AtsChangeSet; import org.eclipse.osee.ats.core.client.util.AtsUtilCore; import org.eclipse.osee.ats.core.users.AtsCoreUsers; import org.eclipse.osee.ats.editor.stateItem.AtsStateItemManager; import org.eclipse.osee.ats.editor.stateItem.IAtsStateItem; import org.eclipse.osee.ats.internal.Activator; +import org.eclipse.osee.ats.internal.AtsClientService; import org.eclipse.osee.framework.core.model.Branch; import org.eclipse.osee.framework.core.operation.AbstractOperation; import org.eclipse.osee.framework.core.util.Result; @@ -31,8 +34,6 @@ import org.eclipse.osee.framework.jdk.core.type.MutableBoolean; import org.eclipse.osee.framework.jdk.core.type.OseeStateException; import org.eclipse.osee.framework.skynet.core.artifact.BranchManager; import org.eclipse.osee.framework.skynet.core.conflict.ConflictManagerExternal; -import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction; -import org.eclipse.osee.framework.skynet.core.transaction.TransactionManager; import org.eclipse.osee.framework.ui.skynet.commandHandlers.branch.commit.CommitHandler; import org.eclipse.osee.framework.ui.swt.Displays; @@ -68,7 +69,8 @@ public class AtsBranchCommitOperation extends AbstractOperation { // Confirm that all blocking reviews are completed // Loop through this state's blocking reviews to confirm complete if (teamArt.isTeamWorkflow()) { - for (AbstractReviewArtifact reviewArt : ReviewManager.getReviewsFromCurrentState(teamArt)) { + for (IAtsAbstractReview review : ReviewManager.getReviewsFromCurrentState(teamArt)) { + AbstractReviewArtifact reviewArt = (AbstractReviewArtifact) AtsClientService.get().getArtifact(review); if (reviewArt.getReviewBlockType() == ReviewBlockType.Commit && !reviewArt.isCompletedOrCancelled()) { throw new OseeStateException("Blocking Review must be completed before commit."); } @@ -114,11 +116,13 @@ public class AtsBranchCommitOperation extends AbstractOperation { } if (branchCommitted) { // Create reviews as necessary - SkynetTransaction transaction = - TransactionManager.createTransaction(AtsUtil.getAtsBranch(), "Create Reviews upon Commit"); - AtsBranchManagerCore.createNecessaryBranchEventReviews(StateEventType.CommitBranch, teamArt, new Date(), - AtsCoreUsers.SYSTEM_USER, transaction); - transaction.execute(); + AtsChangeSet changes = new AtsChangeSet("Create Reviews upon Commit"); + boolean added = + AtsBranchManagerCore.createNecessaryBranchEventReviews(StateEventType.CommitBranch, teamArt, new Date(), + AtsCoreUsers.SYSTEM_USER, changes); + if (added) { + changes.execute(); + } } } finally { if (workflowWorkingBranch != null) { diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/CreateActionUsingAllActionableItems.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/CreateActionUsingAllActionableItems.java index e60ce99c227..b38e72d2328 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/CreateActionUsingAllActionableItems.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/CreateActionUsingAllActionableItems.java @@ -18,6 +18,7 @@ import org.eclipse.osee.ats.AtsOpenOption; import org.eclipse.osee.ats.api.ai.IAtsActionableItem; import org.eclipse.osee.ats.core.client.action.ActionArtifact; import org.eclipse.osee.ats.core.client.action.ActionManager; +import org.eclipse.osee.ats.core.client.util.AtsChangeSet; import org.eclipse.osee.ats.core.client.workflow.ChangeType; import org.eclipse.osee.ats.core.config.ActionableItems; import org.eclipse.osee.ats.internal.Activator; @@ -26,8 +27,6 @@ import org.eclipse.osee.framework.core.enums.Active; import org.eclipse.osee.framework.jdk.core.type.OseeCoreException; import org.eclipse.osee.framework.logging.OseeLevel; import org.eclipse.osee.framework.logging.OseeLog; -import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction; -import org.eclipse.osee.framework.skynet.core.transaction.TransactionManager; import org.eclipse.osee.framework.ui.plugin.PluginUiImage; import org.eclipse.osee.framework.ui.plugin.util.AWorkbench; import org.eclipse.osee.framework.ui.plugin.xnavigate.XNavigateComposite.TableLoadOption; @@ -72,12 +71,11 @@ public class CreateActionUsingAllActionableItems extends XNavigateItemAction { } } - SkynetTransaction transaction = - TransactionManager.createTransaction(AtsUtil.getAtsBranch(), "Create Action using all AIs"); + AtsChangeSet changes = new AtsChangeSet("Create Action using all AIs"); ActionArtifact action = ActionManager.createAction(null, "Big Action Test - Delete Me", "Description", ChangeType.Improvement, "1", - false, null, aias, new Date(), AtsClientService.get().getUserAdmin().getCurrentUser(), null, transaction); - transaction.execute(); + false, null, aias, new Date(), AtsClientService.get().getUserAdmin().getCurrentUser(), null, changes); + changes.execute(); return action; } } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/Import/ExcelAtsActionArtifactExtractor.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/Import/ExcelAtsActionArtifactExtractor.java index 2ba8095288d..b9b24aca1b1 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/Import/ExcelAtsActionArtifactExtractor.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/Import/ExcelAtsActionArtifactExtractor.java @@ -34,6 +34,7 @@ import org.eclipse.osee.ats.api.notify.AtsNotifyType; import org.eclipse.osee.ats.api.team.CreateTeamOption; import org.eclipse.osee.ats.api.team.IAtsTeamDefinition; import org.eclipse.osee.ats.api.user.IAtsUser; +import org.eclipse.osee.ats.api.util.IAtsChangeSet; import org.eclipse.osee.ats.api.version.IAtsVersion; import org.eclipse.osee.ats.api.workflow.IAtsGoal; import org.eclipse.osee.ats.core.client.action.ActionManager; @@ -59,7 +60,6 @@ import org.eclipse.osee.framework.logging.OseeLevel; import org.eclipse.osee.framework.logging.OseeLog; import org.eclipse.osee.framework.skynet.core.artifact.Artifact; import org.eclipse.osee.framework.skynet.core.artifact.search.ArtifactQuery; -import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction; import org.eclipse.osee.framework.ui.plugin.util.AWorkbench; import org.eclipse.osee.framework.ui.skynet.results.XResultDataUI; import org.xml.sax.InputSource; @@ -169,7 +169,7 @@ public class ExcelAtsActionArtifactExtractor { return rd; } - public void createArtifactsAndNotify(SkynetTransaction transaction) { + public void createArtifactsAndNotify(IAtsChangeSet changes) { AtsUtilCore.setEmailEnabled(false); Set<TeamWorkFlowArtifact> teamWfs = new HashSet<TeamWorkFlowArtifact>(); Date createdDate = new Date(); @@ -182,9 +182,9 @@ public class ExcelAtsActionArtifactExtractor { actionArt = ActionManager.createAction(null, aData.title, aData.desc, ChangeType.getChangeType(aData.changeType), aData.priorityStr, false, null, ActionableItems.getActionableItems(aData.actionableItems), - createdDate, createdBy, null, transaction); + createdDate, createdBy, null, changes); newTeamArts = ActionManager.getTeams(actionArt); - addToGoal(newTeamArts, transaction); + addToGoal(newTeamArts, changes); actionNameToAction.put(aData.title, actionArt); actionArts.add(actionArt); } else { @@ -194,14 +194,14 @@ public class ExcelAtsActionArtifactExtractor { TeamWorkFlowArtifact teamWorkflow = ActionManager.createTeamWorkflow(actionArt, entry.getKey(), entry.getValue(), aData.assignees, - transaction, createdDate, createdBy, null, CreateTeamOption.Duplicate_If_Exists); + changes, createdDate, createdBy, null, CreateTeamOption.Duplicate_If_Exists); teamWorkflow.setSoleAttributeValue(AtsAttributeTypes.Description, aData.desc); if (Strings.isValid(aData.priorityStr) && !aData.priorityStr.equals("<Select>")) { teamWorkflow.setSoleAttributeValue(AtsAttributeTypes.PriorityType, aData.priorityStr); } teamWorkflow.setSoleAttributeValue(AtsAttributeTypes.ChangeType, aData.changeType); newTeamArts.add(teamWorkflow); - addToGoal(Collections.singleton(teamWorkflow), transaction); + addToGoal(Collections.singleton(teamWorkflow), changes); } } if (!aData.version.equals("")) { @@ -226,7 +226,7 @@ public class ExcelAtsActionArtifactExtractor { } } for (TeamWorkFlowArtifact team : newTeamArts) { - team.persist(transaction); + changes.add(team); } teamWfs.addAll(newTeamArts); } @@ -243,7 +243,7 @@ public class ExcelAtsActionArtifactExtractor { } } - private void addToGoal(Collection<TeamWorkFlowArtifact> newTeamArts, SkynetTransaction transaction) throws OseeCoreException { + private void addToGoal(Collection<TeamWorkFlowArtifact> newTeamArts, IAtsChangeSet changes) throws OseeCoreException { if (toGoal != null) { GoalArtifact goal = (GoalArtifact) AtsClientService.get().getArtifact(toGoal); if (goal == null) { @@ -252,7 +252,7 @@ public class ExcelAtsActionArtifactExtractor { for (Artifact art : newTeamArts) { goal.addMember(art); } - goal.persist(transaction); + changes.add(goal); } } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/Import/ExcelAtsTaskArtifactExtractor.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/Import/ExcelAtsTaskArtifactExtractor.java index b4feb067c39..e83802ca532 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/Import/ExcelAtsTaskArtifactExtractor.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/Import/ExcelAtsTaskArtifactExtractor.java @@ -23,6 +23,7 @@ import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.osee.ats.api.data.AtsAttributeTypes; import org.eclipse.osee.ats.api.notify.AtsNotifyType; import org.eclipse.osee.ats.api.user.IAtsUser; +import org.eclipse.osee.ats.api.util.IAtsChangeSet; import org.eclipse.osee.ats.core.client.notify.AtsNotificationManager; import org.eclipse.osee.ats.core.client.task.AbstractTaskableArtifact; import org.eclipse.osee.ats.core.client.task.TaskArtifact; @@ -40,7 +41,6 @@ import org.eclipse.osee.framework.jdk.core.util.Strings; import org.eclipse.osee.framework.jdk.core.util.io.xml.ExcelSaxHandler; import org.eclipse.osee.framework.jdk.core.util.io.xml.RowProcessor; import org.eclipse.osee.framework.logging.OseeLog; -import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction; import org.eclipse.osee.framework.ui.plugin.util.AWorkbench; import org.xml.sax.InputSource; import org.xml.sax.XMLReader; @@ -53,13 +53,13 @@ public class ExcelAtsTaskArtifactExtractor { private final AbstractWorkflowArtifact sma; private final boolean emailPOCs; - private final SkynetTransaction transaction; + private final IAtsChangeSet changes; private IProgressMonitor monitor; - public ExcelAtsTaskArtifactExtractor(TeamWorkFlowArtifact artifact, boolean emailPOCs, SkynetTransaction transaction) { + public ExcelAtsTaskArtifactExtractor(TeamWorkFlowArtifact artifact, boolean emailPOCs, IAtsChangeSet changes) { this.emailPOCs = emailPOCs; - this.transaction = transaction; + this.changes = changes; this.sma = artifact; } @@ -70,8 +70,8 @@ public class ExcelAtsTaskArtifactExtractor { if (monitor == null) { monitor = new NullProgressMonitor(); } - xmlReader.setContentHandler(new ExcelSaxHandler( - new InternalRowProcessor(monitor, transaction, sma, emailPOCs), true)); + xmlReader.setContentHandler(new ExcelSaxHandler(new InternalRowProcessor(monitor, changes, sma, emailPOCs), + true)); xmlReader.parse(new InputSource(new InputStreamReader(source.toURL().openStream(), "UTF-8"))); } catch (Exception ex) { OseeExceptions.wrapAndThrow(ex); @@ -103,14 +103,14 @@ public class ExcelAtsTaskArtifactExtractor { private int rowNum; private final IProgressMonitor monitor; private final AbstractWorkflowArtifact sma; - private final SkynetTransaction transaction; + private final IAtsChangeSet changes; private final boolean emailPOCs; private final Date createdDate; private final IAtsUser createdBy; - protected InternalRowProcessor(IProgressMonitor monitor, SkynetTransaction transaction, AbstractWorkflowArtifact sma, boolean emailPOCs) throws OseeCoreException { + protected InternalRowProcessor(IProgressMonitor monitor, IAtsChangeSet changes, AbstractWorkflowArtifact sma, boolean emailPOCs) throws OseeCoreException { this.monitor = monitor; - this.transaction = transaction; + this.changes = changes; this.emailPOCs = emailPOCs; this.sma = sma; createdDate = new Date(); @@ -188,13 +188,13 @@ public class ExcelAtsTaskArtifactExtractor { } AtsUtilCore.setEmailEnabled(true); if (taskArt.isCompleted()) { - Result result = TaskManager.transitionToCompleted(taskArt, 0.0, 0, transaction); + Result result = TaskManager.transitionToCompleted(taskArt, 0.0, 0, changes); if (result.isFalse()) { AWorkbench.popup(result); } } // always persist - taskArt.persist(transaction); + changes.add(taskArt); if (emailPOCs && !taskArt.isCompleted() && !taskArt.isCancelled()) { AtsNotificationManager.notify(sma, AtsNotifyType.Assigned); } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/Import/ImportActionsViaSpreadsheetBlam.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/Import/ImportActionsViaSpreadsheetBlam.java index 42f4ff64641..b746d313c3f 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/Import/ImportActionsViaSpreadsheetBlam.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/Import/ImportActionsViaSpreadsheetBlam.java @@ -15,8 +15,8 @@ import java.util.Arrays; import java.util.Collection; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.osee.ats.api.workflow.IAtsGoal; +import org.eclipse.osee.ats.core.client.util.AtsChangeSet; import org.eclipse.osee.ats.internal.Activator; -import org.eclipse.osee.ats.util.AtsUtil; import org.eclipse.osee.ats.world.WorldEditor; import org.eclipse.osee.ats.world.WorldEditorSimpleProvider; import org.eclipse.osee.framework.core.util.XResultData; @@ -25,8 +25,6 @@ import org.eclipse.osee.framework.jdk.core.util.Collections; import org.eclipse.osee.framework.jdk.core.util.Strings; import org.eclipse.osee.framework.plugin.core.PluginUtil; import org.eclipse.osee.framework.skynet.core.artifact.Artifact; -import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction; -import org.eclipse.osee.framework.skynet.core.transaction.TransactionManager; import org.eclipse.osee.framework.ui.plugin.util.AWorkbench; import org.eclipse.osee.framework.ui.skynet.blam.AbstractBlam; import org.eclipse.osee.framework.ui.skynet.blam.VariableMap; @@ -102,11 +100,10 @@ public class ImportActionsViaSpreadsheetBlam extends AbstractBlam { XResultDataUI.report(rd, "Ats Action Import Errors"); } } else { - SkynetTransaction transaction = - TransactionManager.createTransaction(AtsUtil.getAtsBranch(), "Import Actions from Spreadsheet"); - extractor.createArtifactsAndNotify(transaction); + AtsChangeSet changes = new AtsChangeSet("Import Actions from Spreadsheet"); + extractor.createArtifactsAndNotify(changes); WorldEditor.open(new WorldEditorSimpleProvider("Imported Action Artifacts", extractor.getActionArts())); - transaction.execute(); + changes.execute(); } return rd; } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/dialog/TransitionStatusDialog.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/dialog/TransitionStatusDialog.java index 8b37bfd389a..e0357b8d0bc 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/dialog/TransitionStatusDialog.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/dialog/TransitionStatusDialog.java @@ -15,7 +15,7 @@ import org.eclipse.core.runtime.Status; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.osee.ats.api.data.AtsAttributeTypes; import org.eclipse.osee.ats.core.client.workflow.AbstractWorkflowArtifact; -import org.eclipse.osee.ats.core.client.workflow.transition.TransitionStatusData; +import org.eclipse.osee.ats.core.workflow.transition.TransitionStatusData; import org.eclipse.osee.ats.internal.Activator; import org.eclipse.osee.ats.internal.AtsClientService; import org.eclipse.osee.framework.core.util.Result; @@ -69,7 +69,7 @@ public class TransitionStatusDialog extends MessageDialog { statusLabel.setForeground(Displays.getSystemColor(SWT.COLOR_RED)); updateStatusLabel(); - if (data.getAwas().size() > 1) { + if (data.getWorkItems().size() > 1) { Label label = new Label(parent, SWT.NONE); label.setText("Mulitple objects being statused. All objects will be set to percent\ncomplete and hours spent will be split or added into each item."); } @@ -87,9 +87,10 @@ public class TransitionStatusDialog extends MessageDialog { data.setPercent(defaultPercent); percent.set(defaultPercent); percentSet = true; - } else if (data.getAwas().size() == 1) { + } else if (data.getWorkItems().size() == 1) { int currentPercent = 0; - AbstractWorkflowArtifact awa = data.getAwas().iterator().next(); + AbstractWorkflowArtifact awa = + (AbstractWorkflowArtifact) AtsClientService.get().getArtifact(data.getWorkItems().iterator().next()); if (!AtsClientService.get().getWorkDefinitionAdmin().isStateWeightingEnabled(awa.getWorkDefinition())) { currentPercent = awa.getSoleAttributeValue(AtsAttributeTypes.PercentComplete, 0); } else { @@ -146,7 +147,7 @@ public class TransitionStatusDialog extends MessageDialog { }; }); - if (data.getAwas().size() > 1) { + if (data.getWorkItems().size() > 1) { Composite comp = new Composite(parent, SWT.NONE); comp.setLayout(new GridLayout(2, false)); comp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); 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 77524fcbbda..510f7a9d3fc 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 @@ -23,6 +23,7 @@ import org.eclipse.nebula.widgets.xviewer.XViewerColumn; import org.eclipse.nebula.widgets.xviewer.util.EnumStringSingleSelectionDialog; import org.eclipse.osee.ats.core.client.review.role.Role; import org.eclipse.osee.ats.core.client.review.role.UserRole; +import org.eclipse.osee.ats.core.client.util.AtsChangeSet; import org.eclipse.osee.ats.internal.Activator; import org.eclipse.osee.framework.core.enums.Active; import org.eclipse.osee.framework.jdk.core.type.OseeCoreException; @@ -30,8 +31,6 @@ import org.eclipse.osee.framework.jdk.core.type.OseeStateException; 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.transaction.SkynetTransaction; -import org.eclipse.osee.framework.skynet.core.transaction.TransactionManager; import org.eclipse.osee.framework.ui.plugin.util.AWorkbench; import org.eclipse.osee.framework.ui.skynet.widgets.dialog.UserListDialog; import org.eclipse.osee.framework.ui.swt.Displays; @@ -261,15 +260,13 @@ public class UserRoleXViewer extends XViewer { } public boolean executeTransaction(Collection<UserRole> userRoles) throws OseeCoreException { - SkynetTransaction transaction = - TransactionManager.createTransaction(xUserRoleViewer.getReviewArt().getArtifact().getBranch(), - "Modify Review Roles"); + AtsChangeSet changes = new AtsChangeSet("Modify Review Roles"); for (UserRole userRole : userRoles) { xUserRoleViewer.getUserRoleMgr().addOrUpdateUserRole(userRole, xUserRoleViewer.getReviewArt()); update(userRole, null); } - xUserRoleViewer.getUserRoleMgr().saveToArtifact(transaction); - transaction.execute(); + xUserRoleViewer.getUserRoleMgr().saveToArtifact(changes); + changes.execute(); xUserRoleViewer.refresh(); xUserRoleViewer.notifyXModifiedListeners(); return true; 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 4ddfff2e29f..896a2342750 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 @@ -27,12 +27,14 @@ import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.jface.window.Window; import org.eclipse.osee.ats.api.user.IAtsUser; +import org.eclipse.osee.ats.api.util.IAtsChangeSet; import org.eclipse.osee.ats.core.client.review.PeerToPeerReviewArtifact; import org.eclipse.osee.ats.core.client.review.defect.ReviewDefectManager; import org.eclipse.osee.ats.core.client.review.role.UserRole; import org.eclipse.osee.ats.core.client.review.role.UserRoleError; import org.eclipse.osee.ats.core.client.review.role.UserRoleManager; import org.eclipse.osee.ats.core.client.review.role.UserRoleValidator; +import org.eclipse.osee.ats.core.client.util.AtsChangeSet; import org.eclipse.osee.ats.core.client.util.AtsUtilCore; import org.eclipse.osee.ats.internal.Activator; import org.eclipse.osee.framework.core.util.Result; @@ -47,8 +49,6 @@ import org.eclipse.osee.framework.skynet.core.event.filter.IEventFilter; import org.eclipse.osee.framework.skynet.core.event.listener.IArtifactEventListener; import org.eclipse.osee.framework.skynet.core.event.model.ArtifactEvent; import org.eclipse.osee.framework.skynet.core.event.model.Sender; -import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction; -import org.eclipse.osee.framework.skynet.core.transaction.TransactionManager; import org.eclipse.osee.framework.ui.plugin.PluginUiImage; import org.eclipse.osee.framework.ui.plugin.util.AWorkbench; import org.eclipse.osee.framework.ui.skynet.FrameworkImage; @@ -298,20 +298,19 @@ public class XUserRoleViewer extends GenericXWidget implements IArtifactWidget, "Are You Sure You Wish to Delete the Roles(s):\n\n" + builder.toString()); if (delete) { try { - SkynetTransaction transaction = - TransactionManager.createTransaction(reviewArt.getBranch(), "Delete Review Roles"); - removeUserRoleHelper(items, transaction); - transaction.execute(); + AtsChangeSet changes = new AtsChangeSet("Delete Review Roles"); + removeUserRoleHelper(items, changes); + changes.execute(); } catch (Exception ex) { OseeLog.log(Activator.class, OseeLevel.SEVERE_POPUP, ex); } } } - private void removeUserRoleHelper(List<UserRole> items, SkynetTransaction transaction) throws OseeCoreException { + private void removeUserRoleHelper(List<UserRole> items, IAtsChangeSet changes) throws OseeCoreException { for (UserRole userRole : items) { roleMgr.removeUserRole(userRole); - roleMgr.saveToArtifact(transaction); + roleMgr.saveToArtifact(changes); xViewer.remove(userRole); } loadTable(); @@ -336,15 +335,13 @@ public class XUserRoleViewer extends GenericXWidget implements IArtifactWidget, return; } try { - SkynetTransaction transaction = - TransactionManager.createTransaction(reviewArt.getArtifact().getBranch(), "Add Review Roles"); + AtsChangeSet changes = new AtsChangeSet("Add Review Roles"); for (IAtsUser user : dialog.getUsers()) { UserRole userRole = new UserRole(dialog.getRole(), user); roleMgr.addOrUpdateUserRole(userRole, reviewArt); - reviewArt.persist(transaction); + changes.add(reviewArt); } - roleMgr.saveToArtifact(transaction); - transaction.execute(); + changes.execute(); } catch (Exception ex) { OseeLog.log(Activator.class, OseeLevel.SEVERE_POPUP, ex); } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/version/CreateNewVersionItem.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/version/CreateNewVersionItem.java index 5a729737103..9d330def938 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/version/CreateNewVersionItem.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/version/CreateNewVersionItem.java @@ -18,12 +18,13 @@ import java.util.List; import java.util.Set; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.osee.ats.api.team.IAtsTeamDefinition; +import org.eclipse.osee.ats.api.util.IAtsChangeSet; import org.eclipse.osee.ats.api.version.IAtsVersion; +import org.eclipse.osee.ats.core.client.util.AtsChangeSet; import org.eclipse.osee.ats.core.config.AtsVersionService; import org.eclipse.osee.ats.core.config.TeamDefinitions; import org.eclipse.osee.ats.internal.Activator; import org.eclipse.osee.ats.internal.AtsClientService; -import org.eclipse.osee.ats.util.AtsUtil; import org.eclipse.osee.ats.util.widgets.dialog.TeamDefinitionDialog; import org.eclipse.osee.framework.core.enums.Active; import org.eclipse.osee.framework.core.util.XResultData; @@ -31,9 +32,6 @@ import org.eclipse.osee.framework.jdk.core.type.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.skynet.core.transaction.SkynetTransaction; -import org.eclipse.osee.framework.skynet.core.transaction.TransactionManager; 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; @@ -83,10 +81,9 @@ public class CreateNewVersionItem extends XNavigateItemAction { newVersionNames.add(str); } XResultData resultData = new XResultData(false); - SkynetTransaction transaction = - TransactionManager.createTransaction(AtsUtil.getAtsBranch(), "Create New Version(s)"); + AtsChangeSet changes = new AtsChangeSet("Create New Version(s)"); Collection<IAtsVersion> newVersions = - createVersions(resultData, transaction, teamDefHoldingVersions, newVersionNames); + createVersions(resultData, changes, teamDefHoldingVersions, newVersionNames); if (resultData.isErrors()) { resultData.log(String.format( "\nErrors found while creating version(s) for [%s].\nPlease resolve and try again.", @@ -94,7 +91,7 @@ public class CreateNewVersionItem extends XNavigateItemAction { XResultDataUI.report(resultData, "Create New Version Error"); return; } - transaction.execute(); + changes.execute(); if (newVersions.size() == 1) { RendererManager.open(AtsClientService.get().getConfigArtifact(newVersions.iterator().next()), PresentationType.DEFAULT_OPEN); @@ -106,7 +103,7 @@ public class CreateNewVersionItem extends XNavigateItemAction { } } - public static Collection<IAtsVersion> createVersions(XResultData resultData, SkynetTransaction transaction, IAtsTeamDefinition teamDefHoldingVersions, Collection<String> newVersionNames) { + public static Collection<IAtsVersion> createVersions(XResultData resultData, IAtsChangeSet changes, IAtsTeamDefinition teamDefHoldingVersions, Collection<String> newVersionNames) { List<IAtsVersion> versions = new ArrayList<IAtsVersion>(); for (String newVer : newVersionNames) { if (!Strings.isValid(newVer)) { @@ -123,9 +120,8 @@ public class CreateNewVersionItem extends XNavigateItemAction { for (String newVer : newVersionNames) { IAtsVersion version = AtsClientService.get().createVersion(newVer); versions.add(version); - Artifact verArt = AtsClientService.get().storeConfigObject(version, transaction); AtsVersionService.get().setTeamDefinition(version, teamDefHoldingVersions); - verArt.persist(transaction); + changes.add(version); } } catch (Exception ex) { OseeLog.log(Activator.class, OseeLevel.SEVERE_POPUP, ex); diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/version/ReleaseVersionItem.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/version/ReleaseVersionItem.java index 94288057e93..cf6649b9d5e 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/version/ReleaseVersionItem.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/version/ReleaseVersionItem.java @@ -18,20 +18,18 @@ import org.eclipse.osee.ats.api.version.IAtsVersion; import org.eclipse.osee.ats.api.version.VersionLockedType; import org.eclipse.osee.ats.api.version.VersionReleaseType; import org.eclipse.osee.ats.core.client.team.TeamWorkFlowArtifact; +import org.eclipse.osee.ats.core.client.util.AtsChangeSet; import org.eclipse.osee.ats.core.client.util.AtsUtilCore; import org.eclipse.osee.ats.core.config.AtsVersionService; import org.eclipse.osee.ats.core.config.TeamDefinitions; import org.eclipse.osee.ats.internal.Activator; import org.eclipse.osee.ats.internal.AtsClientService; -import org.eclipse.osee.ats.util.AtsUtil; import org.eclipse.osee.ats.util.widgets.dialog.TeamDefinitionDialog; import org.eclipse.osee.ats.util.widgets.dialog.VersionListDialog; import org.eclipse.osee.framework.core.enums.Active; import org.eclipse.osee.framework.jdk.core.type.OseeCoreException; import org.eclipse.osee.framework.logging.OseeLevel; import org.eclipse.osee.framework.logging.OseeLog; -import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction; -import org.eclipse.osee.framework.skynet.core.transaction.TransactionManager; 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; @@ -98,10 +96,9 @@ public class ReleaseVersionItem extends XNavigateItemAction { verArt.setReleased(true); verArt.setReleaseDate(new Date()); verArt.setNextVersion(false); - SkynetTransaction transaction = - TransactionManager.createTransaction(AtsUtil.getAtsBranchToken(), getClass().getSimpleName()); - AtsClientService.get().storeConfigObject(verArt, transaction); - transaction.execute(); + AtsChangeSet changes = new AtsChangeSet(getClass().getSimpleName()); + AtsClientService.get().storeConfigObject(verArt, changes); + changes.execute(); if (MessageDialog.openQuestion(Displays.getActiveShell(), "Select NEW Next Release Version", "Release Complete.\n\nSelect NEW Next Release Version?")) { @@ -112,10 +109,9 @@ public class ReleaseVersionItem extends XNavigateItemAction { if (result == 0) { verArt = (IAtsVersion) ld.getResult()[0]; verArt.setNextVersion(true); - transaction = - TransactionManager.createTransaction(AtsUtil.getAtsBranchToken(), getClass().getSimpleName()); - AtsClientService.get().storeConfigObject(verArt, transaction); - transaction.execute(); + changes.clear(); + AtsClientService.get().storeConfigObject(verArt, changes); + changes.execute(); } } } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/AtsWorkDefinitionSheetProviders.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/AtsWorkDefinitionSheetProviders.java index 417de113b71..6c495dd46b7 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/AtsWorkDefinitionSheetProviders.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/AtsWorkDefinitionSheetProviders.java @@ -23,9 +23,11 @@ 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.api.util.IAtsChangeSet; import org.eclipse.osee.ats.api.workdef.IAtsWorkDefinition; import org.eclipse.osee.ats.core.AtsCore; import org.eclipse.osee.ats.core.client.config.AtsArtifactToken; +import org.eclipse.osee.ats.core.client.util.AtsChangeSet; import org.eclipse.osee.ats.core.workdef.WorkDefinitionSheet; import org.eclipse.osee.ats.dsl.atsDsl.AtsDsl; import org.eclipse.osee.ats.internal.Activator; @@ -45,7 +47,6 @@ 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.transaction.SkynetTransaction; -import org.eclipse.osee.framework.skynet.core.transaction.TransactionManager; import org.osgi.framework.Bundle; /** @@ -62,19 +63,18 @@ public final class AtsWorkDefinitionSheetProviders { } public static void initializeDatabase(XResultData resultData) throws OseeCoreException { - SkynetTransaction transaction = - TransactionManager.createTransaction(AtsUtil.getAtsBranch(), "Import ATS Work Definitions, Teams and AIs"); + AtsChangeSet changes = new AtsChangeSet("Import ATS Work Definitions, Teams and AIs"); Artifact folder = OseeSystemArtifacts.getOrCreateArtifact(AtsArtifactToken.WorkDefinitionsFolder, AtsUtil.getAtsBranch()); if (folder.isDirty()) { - folder.persist(transaction); + changes.add(folder); } List<WorkDefinitionSheet> sheets = getWorkDefinitionSheets(); Set<String> stateNames = new HashSet<String>(); - importWorkDefinitionSheets(resultData, transaction, folder, sheets, stateNames); - createStateNameArtifact(stateNames, folder, transaction); - importTeamsAndAis(resultData, transaction, folder, sheets); - transaction.execute(); + importWorkDefinitionSheets(resultData, changes, folder, sheets, stateNames); + createStateNameArtifact(stateNames, folder, changes); + importTeamsAndAis(resultData, changes, folder, sheets); + changes.execute(); } /** @@ -137,51 +137,51 @@ public final class AtsWorkDefinitionSheetProviders { trans.addArtifact(stateNameArt); } - private static Artifact createStateNameArtifact(Set<String> stateNames, Artifact folder, SkynetTransaction transaction) throws OseeCoreException { + private static Artifact createStateNameArtifact(Set<String> stateNames, Artifact folder, IAtsChangeSet changes) throws OseeCoreException { Artifact stateNameArt = ArtifactTypeManager.addArtifact(org.eclipse.osee.ats.api.data.AtsArtifactToken.WorkDef_State_Names, AtsUtil.getAtsBranchToken()); stateNameArt.addAttribute(CoreAttributeTypes.GeneralStringData, org.eclipse.osee.framework.jdk.core.util.Collections.toString(",", stateNames)); - stateNameArt.persist(transaction); + changes.add(stateNameArt); folder.addChild(stateNameArt); - folder.persist(transaction); + changes.add(folder); return stateNameArt; } - public static void importWorkDefinitionSheets(XResultData resultData, SkynetTransaction transaction, Artifact folder, Collection<WorkDefinitionSheet> sheets, Set<String> stateNames) throws OseeCoreException { + public static void importWorkDefinitionSheets(XResultData resultData, IAtsChangeSet changes, Artifact folder, Collection<WorkDefinitionSheet> sheets, Set<String> stateNames) throws OseeCoreException { for (WorkDefinitionSheet sheet : sheets) { OseeLog.logf(Activator.class, Level.INFO, "Importing ATS Work Definitions [%s]", sheet.getName()); Artifact artifact = - AtsWorkDefinitionImporter.get().importWorkDefinitionSheetToDb(sheet, resultData, stateNames, transaction); + AtsWorkDefinitionImporter.get().importWorkDefinitionSheetToDb(sheet, resultData, stateNames, changes); if (artifact != null) { folder.addChild(artifact); - artifact.persist(transaction); + changes.add(artifact); } } } - public static void importTeamsAndAis(XResultData resultData, SkynetTransaction transaction, Artifact folder, Collection<WorkDefinitionSheet> sheets) throws OseeCoreException { + public static void importTeamsAndAis(XResultData resultData, IAtsChangeSet changes, Artifact folder, Collection<WorkDefinitionSheet> sheets) throws OseeCoreException { for (WorkDefinitionSheet sheet : sheets) { OseeLog.logf(Activator.class, Level.INFO, "Importing ATS Teams and AIs [%s]", sheet.getName()); - importAIsAndTeamsToDb(sheet, transaction); + importAIsAndTeamsToDb(sheet, changes); } } public static void importAIsAndTeamsToDatabase() throws OseeCoreException { - SkynetTransaction transaction = - TransactionManager.createTransaction(AtsUtil.getAtsBranch(), "Import ATS AIs and Team Definitions"); + + AtsChangeSet changes = new AtsChangeSet("Import ATS AIs and Team Definitions"); for (WorkDefinitionSheet sheet : getWorkDefinitionSheets()) { OseeLog.logf(Activator.class, Level.INFO, "Importing ATS AIs and Teams sheet [%s]", sheet.getName()); - importAIsAndTeamsToDb(sheet, transaction); + importAIsAndTeamsToDb(sheet, changes); } - transaction.execute(); + changes.execute(); } - public static void importAIsAndTeamsToDb(WorkDefinitionSheet sheet, SkynetTransaction transaction) throws OseeCoreException { + public static void importAIsAndTeamsToDb(WorkDefinitionSheet sheet, IAtsChangeSet changes) throws OseeCoreException { String modelName = sheet.getFile().getName(); AtsDsl atsDsl = AtsDslUtil.getFromSheet(modelName, sheet); - ImportAIsAndTeamDefinitionsToDb importer = new ImportAIsAndTeamDefinitionsToDb(modelName, atsDsl, transaction); + ImportAIsAndTeamDefinitionsToDb importer = new ImportAIsAndTeamDefinitionsToDb(modelName, atsDsl, changes); importer.execute(); } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/config/ImportAIsAndTeamDefinitionsToDb.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/config/ImportAIsAndTeamDefinitionsToDb.java index b3a71c79bb2..beeb3c981d7 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/config/ImportAIsAndTeamDefinitionsToDb.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/config/ImportAIsAndTeamDefinitionsToDb.java @@ -18,7 +18,9 @@ import org.eclipse.emf.common.util.EList; import org.eclipse.osee.ats.api.data.AtsArtifactTypes; import org.eclipse.osee.ats.api.data.AtsAttributeTypes; import org.eclipse.osee.ats.api.data.AtsRelationTypes; +import org.eclipse.osee.ats.api.util.IAtsChangeSet; import org.eclipse.osee.ats.core.client.IAtsUserAdmin; +import org.eclipse.osee.ats.core.client.util.AtsChangeSet; import org.eclipse.osee.ats.core.config.ActionableItems; import org.eclipse.osee.ats.core.config.TeamDefinitions; import org.eclipse.osee.ats.dsl.BooleanDefUtil; @@ -44,7 +46,6 @@ 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.transaction.SkynetTransaction; /** * @author Donald G. Dunne @@ -52,16 +53,16 @@ import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction; public class ImportAIsAndTeamDefinitionsToDb { private final AtsDsl atsDsl; - private final SkynetTransaction transaction; + private final IAtsChangeSet changes; private final Map<String, Artifact> newTeams = new HashMap<String, Artifact>(); private final Map<String, Artifact> newAIs = new HashMap<String, Artifact>(); private final Map<String, Artifact> newVersions = new HashMap<String, Artifact>(); private final String modelName; - public ImportAIsAndTeamDefinitionsToDb(String modelName, AtsDsl atsDsl, SkynetTransaction transaction) { + public ImportAIsAndTeamDefinitionsToDb(String modelName, AtsDsl atsDsl, IAtsChangeSet changes) { this.modelName = modelName; this.atsDsl = atsDsl; - this.transaction = transaction; + this.changes = changes; } public void execute() throws OseeCoreException { @@ -77,7 +78,8 @@ public class ImportAIsAndTeamDefinitionsToDb { String dslUserName = Strings.unquote(dslUserDef.getName()); Artifact userArt = null; if (dslUserDef.getUserDefOption().contains("GetOrCreate")) { - userArt = UserManager.createUser(getOseeUser(dslUserDef), transaction); + userArt = UserManager.createUser(getOseeUser(dslUserDef), null); + changes.add(userArt); } if (userArt == null) { userArt = ArtifactTypeManager.addArtifact(CoreArtifactTypes.User, AtsUtil.getAtsBranch(), dslUserName); @@ -145,7 +147,7 @@ public class ImportAIsAndTeamDefinitionsToDb { importVersionDefinitions(dslTeamDef.getVersion(), newTeam); // process children importTeamDefinitions(dslTeamDef.getChildren(), newTeam); - newTeam.persist(transaction); + changes.add(newTeam); } } @@ -259,19 +261,22 @@ public class ImportAIsAndTeamDefinitionsToDb { } importAccessContextIds(newAi, dslAIDef.getAccessContextId()); importActionableItems(dslAIDef.getChildren(), newAi); - newAi.persist(transaction); + changes.add(newAi); } } private Artifact getOrCreate(String artifactName, boolean isTeamDef, Artifact parentArtifact) throws OseeCoreException { Artifact parent = parentArtifact; + AtsChangeSet changes = new AtsChangeSet(getClass().getSimpleName()); if (parent == null) { if (isTeamDef) { - parent = AtsClientService.get().storeConfigObject(TeamDefinitions.getTopTeamDefinition(), transaction); + parent = AtsClientService.get().storeConfigObject(TeamDefinitions.getTopTeamDefinition(), changes); } else { - parent = AtsClientService.get().storeConfigObject(ActionableItems.getTopActionableItem(), transaction); + parent = AtsClientService.get().storeConfigObject(ActionableItems.getTopActionableItem(), changes); } + changes.execute(); } + if (parent.getName().equals(artifactName)) { return parent; } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/config/ImportWorkDefinitionsItem.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/config/ImportWorkDefinitionsItem.java index f305a57adc6..9167d9cf54a 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/config/ImportWorkDefinitionsItem.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/config/ImportWorkDefinitionsItem.java @@ -16,14 +16,13 @@ import java.util.List; import java.util.Set; import org.eclipse.osee.ats.AtsImage; import org.eclipse.osee.ats.core.client.config.AtsArtifactToken; +import org.eclipse.osee.ats.core.client.util.AtsChangeSet; import org.eclipse.osee.ats.core.workdef.WorkDefinitionSheet; import org.eclipse.osee.ats.util.AtsUtil; import org.eclipse.osee.ats.workdef.AtsWorkDefinitionSheetProviders; import org.eclipse.osee.framework.core.util.XResultData; import org.eclipse.osee.framework.skynet.core.OseeSystemArtifacts; import org.eclipse.osee.framework.skynet.core.artifact.Artifact; -import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction; -import org.eclipse.osee.framework.skynet.core.transaction.TransactionManager; 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; @@ -51,14 +50,14 @@ public class ImportWorkDefinitionsItem extends XNavigateItemAction { dialog.setMessage("Select Work Definition Sheet(s) to import"); if (dialog.open() == 0) { XResultData resultData = new XResultData(false); - SkynetTransaction transaction = TransactionManager.createTransaction(AtsUtil.getAtsBranch(), getName()); + AtsChangeSet changes = new AtsChangeSet(getName()); Artifact folder = OseeSystemArtifacts.getOrCreateArtifact(AtsArtifactToken.WorkDefinitionsFolder, AtsUtil.getAtsBranch()); Set<String> stateNames = new HashSet<String>(); - AtsWorkDefinitionSheetProviders.importWorkDefinitionSheets(resultData, transaction, folder, - dialog.getSelection(), stateNames); + AtsWorkDefinitionSheetProviders.importWorkDefinitionSheets(resultData, changes, folder, dialog.getSelection(), + stateNames); if (!resultData.isErrors()) { - transaction.execute(); + changes.execute(); } XResultDataUI.report(resultData, getName()); } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/provider/AtsWorkDefinitionImporter.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/provider/AtsWorkDefinitionImporter.java index 07c3d5421ee..b424ba8432e 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/provider/AtsWorkDefinitionImporter.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/provider/AtsWorkDefinitionImporter.java @@ -18,6 +18,7 @@ import org.eclipse.core.resources.IFile; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.osee.ats.api.data.AtsArtifactTypes; import org.eclipse.osee.ats.api.data.AtsAttributeTypes; +import org.eclipse.osee.ats.api.util.IAtsChangeSet; import org.eclipse.osee.ats.api.workdef.IAtsWorkDefinition; import org.eclipse.osee.ats.core.client.util.AtsUtilCore; import org.eclipse.osee.ats.core.workdef.WorkDefinitionSheet; @@ -40,7 +41,6 @@ import org.eclipse.osee.framework.plugin.core.util.OseeData; 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.transaction.SkynetTransaction; import org.eclipse.osee.framework.ui.plugin.util.AWorkbench; import org.eclipse.osee.framework.ui.swt.Displays; import org.eclipse.osee.framework.ui.ws.AWorkspace; @@ -58,19 +58,17 @@ public class AtsWorkDefinitionImporter { return provider; } - public void importAIsAndTeamsToDb(WorkDefinitionSheet sheet, SkynetTransaction transaction) throws OseeCoreException { + public void importAIsAndTeamsToDb(WorkDefinitionSheet sheet, IAtsChangeSet changes) throws OseeCoreException { String modelName = sheet.getFile().getName(); AtsDsl atsDsl = AtsDslUtil.getFromSheet(modelName, sheet); - ImportAIsAndTeamDefinitionsToDb importer = new ImportAIsAndTeamDefinitionsToDb(modelName, atsDsl, transaction); + ImportAIsAndTeamDefinitionsToDb importer = new ImportAIsAndTeamDefinitionsToDb(modelName, atsDsl, changes); importer.execute(); } /** * If sheet has WorkDef defined, create artifact and import string. Return artifact, else return null. - * - * @param stateNames */ - public Artifact importWorkDefinitionSheetToDb(WorkDefinitionSheet sheet, XResultData resultData, Set<String> stateNames, SkynetTransaction transaction) throws OseeCoreException { + public Artifact importWorkDefinitionSheetToDb(WorkDefinitionSheet sheet, XResultData resultData, Set<String> stateNames, IAtsChangeSet changes) throws OseeCoreException { String modelName = sheet.getFile().getName(); // Prove that can convert to atsDsl AtsDsl atsDsl = AtsDslUtil.getFromSheet(modelName, sheet); @@ -78,7 +76,7 @@ public class AtsWorkDefinitionImporter { // Use original xml to store in artifact so no conversion happens String workDefXml = AtsDslUtil.getString(sheet); Artifact artifact = - importWorkDefinitionToDb(workDefXml, sheet.getName(), sheet.getName(), resultData, transaction); + importWorkDefinitionToDb(workDefXml, sheet.getName(), sheet.getName(), resultData, changes); if (resultData.getNumErrors() > 0) { throw new OseeStateException("Error importing WorkDefinitionSheet [%s] into database [%s]", sheet.getName(), resultData.toString()); @@ -91,7 +89,7 @@ public class AtsWorkDefinitionImporter { return null; } - public Artifact importWorkDefinitionToDb(String workDefXml, String workDefName, String sheetName, XResultData resultData, SkynetTransaction transaction) throws OseeCoreException { + public Artifact importWorkDefinitionToDb(String workDefXml, String workDefName, String sheetName, XResultData resultData, IAtsChangeSet changes) throws OseeCoreException { Artifact artifact = null; try { artifact = @@ -116,8 +114,7 @@ public class AtsWorkDefinitionImporter { ArtifactTypeManager.addArtifact(AtsArtifactTypes.WorkDefinition, AtsUtilCore.getAtsBranch(), sheetName); } artifact.setSoleAttributeValue(AtsAttributeTypes.DslSheet, workDefXml); - artifact.persist(transaction); - + changes.add(artifact); return artifact; } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/TransitionToMenu.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/TransitionToMenu.java index 193e7ef56c7..501f20e2bcb 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/TransitionToMenu.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/TransitionToMenu.java @@ -22,23 +22,30 @@ import org.eclipse.jface.action.Action; import org.eclipse.jface.action.MenuManager; import org.eclipse.nebula.widgets.xviewer.XViewer; import org.eclipse.osee.ats.AtsImage; +import org.eclipse.osee.ats.api.IAtsWorkItem; import org.eclipse.osee.ats.api.user.IAtsUser; +import org.eclipse.osee.ats.api.util.IAtsChangeSet; import org.eclipse.osee.ats.api.workdef.IAtsStateDefinition; import org.eclipse.osee.ats.api.workdef.RuleDefinitionOption; +import org.eclipse.osee.ats.api.workflow.transition.ITransitionHelper; +import org.eclipse.osee.ats.api.workflow.transition.ITransitionListener; +import org.eclipse.osee.ats.api.workflow.transition.TransitionResults; +import org.eclipse.osee.ats.core.AtsCore; +import org.eclipse.osee.ats.core.client.util.AtsChangeSet; import org.eclipse.osee.ats.core.client.workflow.AbstractWorkflowArtifact; -import org.eclipse.osee.ats.core.client.workflow.transition.ITransitionHelper; -import org.eclipse.osee.ats.core.client.workflow.transition.TransitionHelperAdapter; -import org.eclipse.osee.ats.core.client.workflow.transition.TransitionResults; -import org.eclipse.osee.ats.core.client.workflow.transition.TransitionStatusData; import org.eclipse.osee.ats.core.client.workflow.transition.TransitionToOperation; import org.eclipse.osee.ats.core.workflow.state.TeamState; +import org.eclipse.osee.ats.core.workflow.transition.TransitionHelperAdapter; +import org.eclipse.osee.ats.core.workflow.transition.TransitionStatusData; import org.eclipse.osee.ats.editor.SMAPromptChangeStatus; import org.eclipse.osee.ats.internal.Activator; +import org.eclipse.osee.ats.internal.AtsClientService; import org.eclipse.osee.ats.util.widgets.dialog.TransitionStatusDialog; import org.eclipse.osee.framework.core.operation.Operations; import org.eclipse.osee.framework.core.util.Result; import org.eclipse.osee.framework.core.util.XResultData; import org.eclipse.osee.framework.jdk.core.type.OseeCoreException; +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.plugin.util.AWorkbench.MessageType; @@ -55,12 +62,12 @@ public class TransitionToMenu { public static MenuManager createTransitionToMenuManager(final XViewer xViewer, String name, final Collection<TreeItem> selectedTreeItems) { MenuManager editMenuManager = new MenuManager(name, ImageManager.getImageDescriptor(AtsImage.TRANSITION), "transition-to"); - final Set<AbstractWorkflowArtifact> awas = new HashSet<AbstractWorkflowArtifact>(); + final Set<IAtsWorkItem> workItems = new HashSet<IAtsWorkItem>(); Set<IAtsStateDefinition> toStateDefs = new HashSet<IAtsStateDefinition>(); for (TreeItem treeItem : selectedTreeItems) { if (treeItem.getData() instanceof AbstractWorkflowArtifact) { AbstractWorkflowArtifact awa = (AbstractWorkflowArtifact) treeItem.getData(); - awas.add(awa); + workItems.add(awa); try { toStateDefs.addAll(awa.getToStatesWithCompleteCancelReturnStates()); } catch (OseeCoreException ex) { @@ -93,7 +100,7 @@ public class TransitionToMenu { @Override public void run() { - handleTransitionToSelected(stateDef.getName(), awas); + handleTransitionToSelected(stateDef.getName(), workItems); } }); @@ -120,7 +127,7 @@ public class TransitionToMenu { TeamState.Cancelled.getName()) ? "" : " (" + stateDef.getStateType().name() + ")"; } - private static void handleTransitionToSelected(final String toStateName, final Set<AbstractWorkflowArtifact> awas) { + private static void handleTransitionToSelected(final String toStateName, final Set<IAtsWorkItem> workItems) { final ITransitionHelper helper = new TransitionHelperAdapter() { @Override @@ -130,45 +137,52 @@ public class TransitionToMenu { @Override public void run() { - IAtsStateDefinition toStateDef = - awas.iterator().next().getWorkDefinition().getStateByName(toStateName); - IAtsStateDefinition fromStateDefinition = awas.iterator().next().getStateDefinition(); - if (isRequireStateHoursSpentPrompt(fromStateDefinition) && !toStateDef.getStateType().isCancelledState()) { - - boolean showPercentCompleted = !toStateDef.getStateType().isCompletedOrCancelledState(); - TransitionStatusData data = new TransitionStatusData(getAwas(), showPercentCompleted); - if (toStateDef.getRecommendedPercentComplete() != null) { - data.setDefaultPercent(toStateDef.getRecommendedPercentComplete()); - data.setPercent(100); - } else if (toStateDef.getStateType().isCompletedOrCancelledState()) { - data.setDefaultPercent(100); - data.setPercent(100); - } - String title = null; - String message = null; - if (data.isPercentRequired()) { - title = "Enter Percent and Hours Spent"; - message = "Enter percent complete and additional hours spent in current state(s)"; - } else { - title = "Enter Hours Spent"; - message = "Enter additional hours spent in current state(s)"; - } - TransitionStatusDialog dialog = new TransitionStatusDialog(title, message, data); - - int dialogResult = dialog.open(); - if (dialogResult == 0) { - try { - SMAPromptChangeStatus.performChangeStatus(awas, null, data.getAdditionalHours(), - data.getPercent(), data.isSplitHoursBetweenItems(), true); - } catch (OseeCoreException ex) { - OseeLog.log(Activator.class, Level.SEVERE, ex); - result.set(false); - result.setTextWithFormat( - "Exception handling extra hours spent for transition to [%s] (see log)", getToStateName()); + try { + IAtsStateDefinition toStateDef = + AtsClientService.get().getWorkDefinitionAdmin().getStateDefinitionByName( + workItems.iterator().next(), toStateName); + + IAtsStateDefinition fromStateDefinition = workItems.iterator().next().getStateDefinition(); + if (isRequireStateHoursSpentPrompt(fromStateDefinition) && !toStateDef.getStateType().isCancelledState()) { + + boolean showPercentCompleted = !toStateDef.getStateType().isCompletedOrCancelledState(); + TransitionStatusData data = new TransitionStatusData(getWorkItems(), showPercentCompleted); + if (toStateDef.getRecommendedPercentComplete() != null) { + data.setDefaultPercent(toStateDef.getRecommendedPercentComplete()); + data.setPercent(100); + } else if (toStateDef.getStateType().isCompletedOrCancelledState()) { + data.setDefaultPercent(100); + data.setPercent(100); + } + String title = null; + String message = null; + if (data.isPercentRequired()) { + title = "Enter Percent and Hours Spent"; + message = "Enter percent complete and additional hours spent in current state(s)"; + } else { + title = "Enter Hours Spent"; + message = "Enter additional hours spent in current state(s)"; + } + TransitionStatusDialog dialog = new TransitionStatusDialog(title, message, data); + + int dialogResult = dialog.open(); + if (dialogResult == 0) { + try { + SMAPromptChangeStatus.performChangeStatus(workItems, null, data.getAdditionalHours(), + data.getPercent(), data.isSplitHoursBetweenItems(), true); + } catch (OseeCoreException ex) { + OseeLog.log(Activator.class, Level.SEVERE, ex); + result.set(false); + result.setTextWithFormat( + "Exception handling extra hours spent for transition to [%s] (see log)", + getToStateName()); + } + } else { + result.setCancelled(true); } - } else { - result.setCancelled(true); } + } catch (OseeCoreException ex1) { + OseeLog.log(Activator.class, OseeLevel.SEVERE_POPUP, ex1); } } }, true); @@ -181,8 +195,8 @@ public class TransitionToMenu { } @Override - public Collection<? extends IAtsUser> getToAssignees(AbstractWorkflowArtifact awa) throws OseeCoreException { - return awa.getAssignees(); + public Collection<? extends IAtsUser> getToAssignees(IAtsWorkItem workItem) throws OseeCoreException { + return workItem.getAssignees(); } @Override @@ -197,9 +211,16 @@ public class TransitionToMenu { @Override public void run() { - AbstractWorkflowArtifact awa = getAwas().iterator().next(); - IAtsStateDefinition stateDef = awa.getStateDefinitionByName(getToStateName()); - if (stateDef.getStateType().isCancelledState()) { + IAtsWorkItem workItem = getWorkItems().iterator().next(); + IAtsStateDefinition stateDef = null; + try { + stateDef = + AtsClientService.get().getWorkDefinitionAdmin().getStateDefinitionByName(workItem, + getToStateName()); + } catch (OseeCoreException ex) { + OseeLog.log(Activator.class, OseeLevel.SEVERE_POPUP, ex); + } + if (stateDef != null && stateDef.getStateType().isCancelledState()) { EntryDialog dialog = new EntryDialog("Enter Cancellation Reason", "Enter Cancellation Reason"); if (dialog.open() != 0) { result.setCancelled(true); @@ -215,9 +236,30 @@ public class TransitionToMenu { } @Override - public Collection<AbstractWorkflowArtifact> getAwas() { - return awas; + public Collection<IAtsWorkItem> getWorkItems() { + return workItems; } + + @Override + public void setInTransition(IAtsWorkItem workItem, boolean inTransition) throws OseeCoreException { + AtsClientService.get().getWorkflowArtifact(workItem).setInTransition(inTransition); + } + + @Override + public IAtsChangeSet getChangeSet() { + return new AtsChangeSet(getName()); + } + + @Override + public Collection<ITransitionListener> getTransitionListeners() { + try { + return AtsCore.getWorkItemService().getTransitionListeners(); + } catch (OseeCoreException ex) { + OseeLog.log(Activator.class, Level.SEVERE, ex); + } + return java.util.Collections.emptyList(); + } + }; final TransitionToOperation operation = new TransitionToOperation(helper); Operations.executeAsJob(operation, true, Job.SHORT, new JobChangeAdapter() { @@ -227,7 +269,7 @@ public class TransitionToMenu { TransitionResults results = operation.getResults(); if (!results.isEmpty()) { results.logExceptions(); - if (helper.getAwas().size() == 1) { + if (helper.getWorkItems().size() == 1) { String resultStr = results.getResultString(); AWorkbench.popup(MessageType.Error, "Transition Failed", resultStr); } else { diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/WorldXViewer.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/WorldXViewer.java index ceb995387d2..58ef96ff1c3 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/WorldXViewer.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/WorldXViewer.java @@ -210,8 +210,9 @@ public class WorldXViewer extends XViewer implements ISelectedAtsArtifacts, IPer try { transaction = TransactionManager.createTransaction(AtsUtil.getAtsBranch(), "Reset Action off Children"); for (ActionArtifact actionArt : getSelectedActionArtifacts()) { - ActionArtifactRollup rollup = new ActionArtifactRollup(actionArt, transaction); + ActionArtifactRollup rollup = new ActionArtifactRollup(actionArt); rollup.resetAttributesOffChildren(); + actionArt.persist(transaction); } transaction.execute(); } catch (OseeCoreException ex) { |