diff options
Diffstat (limited to 'plugins/org.eclipse.osee.ats/src/org')
222 files changed, 2620 insertions, 2914 deletions
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/AtsArtifactImageProvider.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/AtsArtifactImageProvider.java index fcc992df854..463e594374b 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/AtsArtifactImageProvider.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/AtsArtifactImageProvider.java @@ -10,10 +10,12 @@ *******************************************************************************/ package org.eclipse.osee.ats; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.artifact.AtsAttributeTypes; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; import org.eclipse.osee.ats.artifact.TeamWorkflowExtensions; import org.eclipse.osee.ats.util.AtsArtifactTypes; +import org.eclipse.osee.ats.util.FavoritesManager; +import org.eclipse.osee.ats.util.SubscribeManager; import org.eclipse.osee.framework.core.data.IArtifactType; import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.skynet.core.UserManager; @@ -44,7 +46,7 @@ public class AtsArtifactImageProvider extends ArtifactImageProvider { ArtifactImageManager.registerOverrideImageProvider(this, AtsArtifactTypes.Task.getName()); ArtifactImageManager.registerOverrideImageProvider(this, AtsArtifactTypes.PeerToPeerReview.getName()); ArtifactImageManager.registerOverrideImageProvider(this, AtsArtifactTypes.DecisionReview.getName()); - for (IArtifactType artifactType : TeamWorkflowExtensions.getInstance().getAllTeamWorkflowArtifactTypes()) { + for (IArtifactType artifactType : TeamWorkflowExtensions.getAllTeamWorkflowArtifactTypes()) { ArtifactImageManager.registerOverrideImageProvider(this, artifactType.getName()); } } @@ -64,13 +66,13 @@ public class AtsArtifactImageProvider extends ArtifactImageProvider { } } - if (artifact instanceof StateMachineArtifact) { - StateMachineArtifact stateMachine = (StateMachineArtifact) artifact; - if (stateMachine.isSubscribed(UserManager.getUser())) { + if (artifact instanceof AbstractWorkflowArtifact) { + AbstractWorkflowArtifact stateMachine = (AbstractWorkflowArtifact) artifact; + if (SubscribeManager.isSubscribed(stateMachine, UserManager.getUser())) { // was 8,6 return ArtifactImageManager.setupImage(artifact, AtsImage.SUBSCRIBED_OVERLAY, Location.BOT_RIGHT); } - if (stateMachine.isFavorite(UserManager.getUser())) { + if (FavoritesManager.isFavorite(stateMachine, UserManager.getUser())) { // was 7,0 return ArtifactImageManager.setupImage(artifact, AtsImage.FAVORITE_OVERLAY, Location.TOP_RIGHT); } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/access/AtsAccessContextIdFactory.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/access/AtsAccessContextIdFactory.java index b7df938f19f..1bfa1da83f8 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/access/AtsAccessContextIdFactory.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/access/AtsAccessContextIdFactory.java @@ -29,22 +29,22 @@ public final class AtsAccessContextIdFactory { // Static Factory Class } - public static AccessContextId createContextId(String guid, String name) { + public static AccessContextId createContextId(final String guid, final String name) { AccessContextId context = guidToIds.get(guid); - if (context != null) { + if (context == null) { + context = new AtsAccessContextId(guid, name); + guidToIds.put(guid, context); + } else { OseeLog.log( AtsPlugin.class, Level.SEVERE, String.format("Duplicate AtsAccessContextIds with guid [%s] named [%s] and [%s]", guid, name, context.getName())); - } else { - context = new AtsAccessContextId(guid, name); - guidToIds.put(guid, context); } return context; } - public static AccessContextId getOrCreate(String guid) { + public static AccessContextId getOrCreate(final String guid) { AccessContextId context = guidToIds.get(guid); if (context == null) { context = createContextId(guid, "name unknown"); @@ -54,7 +54,7 @@ public final class AtsAccessContextIdFactory { private final static class AtsAccessContextId extends NamedIdentity implements AccessContextId { - protected AtsAccessContextId(String guid, String name) { + protected AtsAccessContextId(final String guid, final String name) { super(guid, name); } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/access/AtsAccessContextIdResolver.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/access/AtsAccessContextIdResolver.java index 02e5bb7902d..ab93df6db23 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/access/AtsAccessContextIdResolver.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/access/AtsAccessContextIdResolver.java @@ -6,5 +6,5 @@ package org.eclipse.osee.ats.access; public interface AtsAccessContextIdResolver { - + // interface } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/access/AtsBranchObjectContextId.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/access/AtsBranchObjectContextId.java index 0f1b5618193..ba70e804ba3 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/access/AtsBranchObjectContextId.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/access/AtsBranchObjectContextId.java @@ -15,7 +15,7 @@ import org.eclipse.osee.framework.core.data.AccessContextId; /** * @author Donald G. Dunne */ -public class AtsBranchObjectContextId { +public final class AtsBranchObjectContextId { public static final AccessContextId DEFAULT_BRANCH_CONTEXT = AtsAccessContextIdFactory.createContextId( "AFRkIhi2m2cdanu3i2AA", "ats.branchobject.default.context"); diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/access/AtsBranchObjectManager.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/access/AtsBranchObjectManager.java index cb69908eb9b..428f90e963d 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/access/AtsBranchObjectManager.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/access/AtsBranchObjectManager.java @@ -59,27 +59,27 @@ public class AtsBranchObjectManager implements AtsAccessContextIdResolver { } public AccessContextId getContextId(Artifact artifact) { - AccessContextId id = null; + AccessContextId contextId = null; try { // If artifact has a context id on it, use that - id = getFromArtifact(artifact); - if (id == null) { + contextId = getFromArtifact(artifact); + if (contextId == null) { Artifact assocArtifact = ArtifactQuery.getArtifactFromId(artifact.getBranch().getAssociatedArtifactId(), atsBranch); ArtifactType assocArtType = assocArtifact.getArtifactType(); if (assocArtType.inheritsFrom(AtsArtifactTypes.TeamWorkflow)) { - id = getFromWorkflow((TeamWorkFlowArtifact) assocArtifact); + contextId = getFromWorkflow((TeamWorkFlowArtifact) assocArtifact); } else if (assocArtifact.isOfType(AtsArtifactTypes.AtsArtifact)) { - id = AtsBranchObjectContextId.DENY_CONTEXT; + contextId = AtsBranchObjectContextId.DENY_CONTEXT; } else { - id = AtsBranchObjectContextId.DEFAULT_BRANCH_CONTEXT; + contextId = AtsBranchObjectContextId.DEFAULT_BRANCH_CONTEXT; } } } catch (OseeCoreException ex) { OseeLog.log(AtsPlugin.class, Level.SEVERE, "Exception obtaining Branch Access Context Id; Deny returned", ex); - id = AtsBranchObjectContextId.DENY_CONTEXT; + contextId = AtsBranchObjectContextId.DENY_CONTEXT; } - return id; + return contextId; } private AccessContextId getFromWorkflow(TeamWorkFlowArtifact teamArt) { @@ -87,21 +87,21 @@ public class AtsBranchObjectManager implements AtsAccessContextIdResolver { if (atsAccessServices != null) { for (IAtsAccessControlService service : atsAccessServices) { IAtsAccessControlService accessService = service; - AccessContextId id = accessService.getBranchAccessContextIdFromWorkflow(teamArt); - if (id != null) { - return id; + AccessContextId contextId = accessService.getBranchAccessContextIdFromWorkflow(teamArt); + if (contextId != null) { + return contextId; } } } for (ActionableItemArtifact aia : teamArt.getActionableItemsDam().getActionableItems()) { - AccessContextId id = getFromArtifact(aia); - if (id != null) { - return id; + AccessContextId contextId = getFromArtifact(aia); + if (contextId != null) { + return contextId; } } - AccessContextId id = getFromArtifact(teamArt.getTeamDefinition()); - if (id != null) { - return id; + AccessContextId contextId = getFromArtifact(teamArt.getTeamDefinition()); + if (contextId != null) { + return contextId; } } catch (Exception ex) { OseeLog.log(AtsPlugin.class, Level.SEVERE, "Exception obtaining Branch Access Context Id; Deny returned", ex); diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/AccessControlAction.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/AccessControlAction.java index 686b971b7b8..29a54344328 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/AccessControlAction.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/AccessControlAction.java @@ -12,7 +12,7 @@ package org.eclipse.osee.ats.actions; import org.eclipse.jface.action.Action; import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.framework.ui.skynet.FrameworkImage; import org.eclipse.osee.framework.ui.skynet.access.PolicyDialog; import org.eclipse.osee.framework.ui.swt.Displays; @@ -23,9 +23,9 @@ import org.eclipse.osee.framework.ui.swt.ImageManager; */ public class AccessControlAction extends Action { - private final StateMachineArtifact sma; + private final AbstractWorkflowArtifact sma; - public AccessControlAction(StateMachineArtifact sma) { + public AccessControlAction(AbstractWorkflowArtifact sma) { super("Access Control"); setToolTipText(getText()); this.sma = sma; @@ -33,8 +33,8 @@ public class AccessControlAction extends Action { @Override public void run() { - PolicyDialog pd = new PolicyDialog(Displays.getActiveShell(), sma); - pd.open(); + PolicyDialog dialog = new PolicyDialog(Displays.getActiveShell(), sma); + dialog.open(); } @Override diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/AddNoteAction.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/AddNoteAction.java index f917e766768..057f8cf7b7f 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/AddNoteAction.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/AddNoteAction.java @@ -20,7 +20,7 @@ import org.eclipse.jface.wizard.WizardDialog; import org.eclipse.osee.ats.AtsImage; import org.eclipse.osee.ats.NoteType; import org.eclipse.osee.ats.actions.wizard.NewNoteWizard; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.logging.OseeLevel; @@ -35,9 +35,10 @@ import org.eclipse.ui.PlatformUI; */ public class AddNoteAction extends Action { - private final StateMachineArtifact sma; + private final AbstractWorkflowArtifact sma; - public AddNoteAction(StateMachineArtifact sma) { + public AddNoteAction(AbstractWorkflowArtifact sma) { + super(); this.sma = sma; setText("Add Note"); setToolTipText(getText()); 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 46a97b0e2b0..a19066c37f5 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 @@ -16,6 +16,7 @@ import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.osee.ats.AtsImage; import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact; import org.eclipse.osee.ats.internal.AtsPlugin; +import org.eclipse.osee.ats.util.ActionableItemManager; import org.eclipse.osee.framework.core.exception.OseeStateException; import org.eclipse.osee.framework.jdk.core.util.Collections; import org.eclipse.osee.framework.logging.OseeLevel; @@ -46,7 +47,7 @@ public class ConvertActionableItemsAction extends Action { } TeamWorkFlowArtifact teamArt = teamArts.iterator().next(); - Result result = teamArt.convertActionableItems(); + Result result = ActionableItemManager.convertActionableItems(teamArt); if (result.isFalse() && !result.getText().equals("")) { result.popup(); } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/CopyActionDetailsAction.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/CopyActionDetailsAction.java index eb4c11ae770..87a815bc4c8 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/CopyActionDetailsAction.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/CopyActionDetailsAction.java @@ -15,7 +15,7 @@ import org.eclipse.jface.action.Action; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.osee.ats.AtsImage; import org.eclipse.osee.ats.artifact.AtsAttributeTypes; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.artifact.TeamDefinitionArtifact; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.framework.core.exception.OseeCoreException; @@ -33,9 +33,10 @@ import org.eclipse.swt.dnd.Transfer; public class CopyActionDetailsAction extends Action { private Clipboard clipboard; - private final StateMachineArtifact sma; + private final AbstractWorkflowArtifact sma; - public CopyActionDetailsAction(StateMachineArtifact sma) { + public CopyActionDetailsAction(AbstractWorkflowArtifact sma) { + super(); this.sma = sma; String title = "Copy"; title = "Copy " + sma.getArtifactTypeName() + " details to clipboard"; diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/DeletePurgeAtsArtifactsAction.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/DeletePurgeAtsArtifactsAction.java index fc99184f6ff..9b3b9b8eb67 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/DeletePurgeAtsArtifactsAction.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/DeletePurgeAtsArtifactsAction.java @@ -29,6 +29,7 @@ public class DeletePurgeAtsArtifactsAction extends Action { private final ISelectedAtsArtifacts selectedAtsArtifacts; public DeletePurgeAtsArtifactsAction(ISelectedAtsArtifacts selectedAtsArtifacts) { + super(); this.selectedAtsArtifacts = selectedAtsArtifacts; setText("Delete/Purge Ats Artifact(s)"); setToolTipText(getText()); diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/DirtyReportAction.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/DirtyReportAction.java index 4d2549a30ec..a3ccbe7c2b6 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/DirtyReportAction.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/DirtyReportAction.java @@ -12,7 +12,7 @@ package org.eclipse.osee.ats.actions; import org.eclipse.jface.action.Action; import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.framework.ui.plugin.util.AWorkbench; import org.eclipse.osee.framework.ui.plugin.util.Result; import org.eclipse.osee.framework.ui.skynet.FrameworkImage; @@ -23,9 +23,9 @@ import org.eclipse.osee.framework.ui.swt.ImageManager; */ public class DirtyReportAction extends Action { - private final StateMachineArtifact sma; + private final AbstractWorkflowArtifact sma; - public DirtyReportAction(StateMachineArtifact sma) { + public DirtyReportAction(AbstractWorkflowArtifact sma) { super("Show Artifact Dirty Report"); this.sma = sma; setToolTipText("Show what attribute or relation making editor dirty."); diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/DuplicateWorkflowViaWorldEditorAction.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/DuplicateWorkflowViaWorldEditorAction.java index 08e14f7bafb..3378e85277a 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/DuplicateWorkflowViaWorldEditorAction.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/DuplicateWorkflowViaWorldEditorAction.java @@ -30,6 +30,7 @@ public class DuplicateWorkflowViaWorldEditorAction extends Action { private final WorldEditor worldEditor; public DuplicateWorkflowViaWorldEditorAction(WorldEditor worldEditor) { + super(); this.worldEditor = worldEditor; setText("Duplicate Team Workflow"); } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/EmailActionAction.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/EmailActionAction.java index 5f2f9d8fee8..675fe5b3ce7 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/EmailActionAction.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/EmailActionAction.java @@ -14,7 +14,7 @@ import java.util.logging.Level; import org.eclipse.jface.action.Action; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.wizard.WizardDialog; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.ats.util.ArtifactEmailWizard; import org.eclipse.osee.framework.core.exception.OseeCoreException; @@ -32,6 +32,7 @@ public class EmailActionAction extends Action { private final ISelectedAtsArtifacts selectedAtsArtifacts; public EmailActionAction(ISelectedAtsArtifacts selectedAtsArtifacts) { + super(); this.selectedAtsArtifacts = selectedAtsArtifacts; try { updateName(); @@ -42,10 +43,10 @@ public class EmailActionAction extends Action { } private void performEmail() throws OseeCoreException { - ArtifactEmailWizard ew = + ArtifactEmailWizard wizard = new ArtifactEmailWizard( - ((StateMachineArtifact) selectedAtsArtifacts.getSelectedSMAArtifacts().iterator().next())); - WizardDialog dialog = new WizardDialog(Displays.getActiveShell(), ew); + ((AbstractWorkflowArtifact) selectedAtsArtifacts.getSelectedSMAArtifacts().iterator().next())); + WizardDialog dialog = new WizardDialog(Displays.getActiveShell(), wizard); dialog.create(); dialog.open(); } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/ExportChangeReportsAction.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/ExportChangeReportsAction.java index 89e30f6ab17..3493f722dde 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/ExportChangeReportsAction.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/ExportChangeReportsAction.java @@ -11,10 +11,8 @@ package org.eclipse.osee.ats.actions; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collection; import java.util.Collections; -import java.util.Comparator; import java.util.Iterator; import java.util.List; import java.util.logging.Level; @@ -26,7 +24,6 @@ import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.ats.util.AtsBranchManager; import org.eclipse.osee.ats.world.WorldEditor; -import org.eclipse.osee.framework.core.enums.CoreBranches; import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.core.exception.OseeStateException; import org.eclipse.osee.framework.core.model.Branch; @@ -36,7 +33,6 @@ import org.eclipse.osee.framework.core.operation.IOperation; import org.eclipse.osee.framework.core.operation.Operations; import org.eclipse.osee.framework.logging.OseeLog; import org.eclipse.osee.framework.skynet.core.artifact.Artifact; -import org.eclipse.osee.framework.skynet.core.artifact.search.ArtifactQuery; import org.eclipse.osee.framework.skynet.core.change.ArtifactChange; import org.eclipse.osee.framework.skynet.core.change.Change; import org.eclipse.osee.framework.skynet.core.revision.ChangeManager; @@ -52,49 +48,51 @@ import org.eclipse.osee.framework.ui.swt.ImageManager; */ public class ExportChangeReportsAction extends Action { private final WorldEditor worldEditor; - private final boolean reverse; + + // private final boolean reverse; public ExportChangeReportsAction(WorldEditor worldEditor, boolean reverse) { - this.reverse = reverse; + super(); + // this.reverse = reverse; setText("Export Change Report(s)"); - setImageDescriptor(getImageDescriptor()); + setImageDescriptor(ImageManager.getImageDescriptor(FrameworkImage.EXPORT_DATA)); this.worldEditor = worldEditor; } @SuppressWarnings("unused") public Collection<TeamWorkFlowArtifact> getWorkflows() throws OseeCoreException { - if (true) { - Collection<String> dontCreate = Arrays.asList(new String[] {}); - Collection<String> legacyIds = Arrays.asList(new String[] {"12442"}); - - List<TeamWorkFlowArtifact> workflows = new ArrayList<TeamWorkFlowArtifact>(); - if (workflows.isEmpty()) { - List<Artifact> artifacts = - ArtifactQuery.getArtifactListFromAttributeValues(AtsAttributeTypes.LegacyPcrId, legacyIds, - CoreBranches.COMMON, legacyIds.size()); - for (Artifact artifact : artifacts) { - if (artifact.getArtifactType().getGuid().equals("AAMFDjZ1UVAQTXHk2GgA")) { - TeamWorkFlowArtifact teamWorkflow = (TeamWorkFlowArtifact) artifact; - String legacyId = teamWorkflow.getWorldViewLegacyPCR(); - if (!dontCreate.contains(legacyId)) { - workflows.add(teamWorkflow); - } - } - } - Collections.sort(workflows, new Comparator<TeamWorkFlowArtifact>() { - @Override - public int compare(TeamWorkFlowArtifact workflow1, TeamWorkFlowArtifact workflow2) { - try { - int compare = workflow1.getWorldViewLegacyPCR().compareTo(workflow2.getWorldViewLegacyPCR()); - return reverse ? -1 * compare : compare; - } catch (OseeCoreException ex) { - return -1; - } - } - }); - } - return workflows; - } + // if (true) { + // Collection<String> dontCreate = Arrays.asList(new String[] {}); + // Collection<String> legacyIds = Arrays.asList(new String[] {"12442"}); + // + // List<TeamWorkFlowArtifact> workflows = new ArrayList<TeamWorkFlowArtifact>(); + // if (workflows.isEmpty()) { + // List<Artifact> artifacts = + // ArtifactQuery.getArtifactListFromAttributeValues(AtsAttributeTypes.LegacyPcrId, legacyIds, + // CoreBranches.COMMON, legacyIds.size()); + // for (Artifact artifact : artifacts) { + // if (artifact.getArtifactType().getGuid().equals("AAMFDjZ1UVAQTXHk2GgA")) { + // TeamWorkFlowArtifact teamWorkflow = (TeamWorkFlowArtifact) artifact; + // String legacyId = teamWorkflow.getWorldViewLegacyPCR(); + // if (!dontCreate.contains(legacyId)) { + // workflows.add(teamWorkflow); + // } + // } + // } + // Collections.sort(workflows, new Comparator<TeamWorkFlowArtifact>() { + // @Override + // public int compare(TeamWorkFlowArtifact workflow1, TeamWorkFlowArtifact workflow2) { + // try { + // int compare = workflow1.getWorldViewLegacyPCR().compareTo(workflow2.getWorldViewLegacyPCR()); + // return reverse ? -1 * compare : compare; + // } catch (OseeCoreException ex) { + // return -1; + // } + // } + // }); + // } + // return workflows; + // } return worldEditor.getWorldComposite().getXViewer().getSelectedTeamWorkflowArtifacts(); } @@ -148,8 +146,7 @@ public class ExportChangeReportsAction extends Action { Collection<Change> changes = computeChanges(workflow, monitor); if (!changes.isEmpty() && changes.size() < 4000) { String folderName = workflow.getSoleAttributeValueAsString(AtsAttributeTypes.LegacyPcrId, null); - IOperation subOp = new WordChangeReportOperation(changes, folderName); - doSubWork(subOp, monitor, 0.50); + doSubWork(new WordChangeReportOperation(changes, folderName), monitor, 0.50); } else { monitor.worked(calculateWork(0.50)); } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/FavoriteAction.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/FavoriteAction.java index 2a6d4a52c22..006fd43f79d 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/FavoriteAction.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/FavoriteAction.java @@ -16,8 +16,7 @@ import java.util.List; import org.eclipse.jface.action.Action; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.osee.ats.AtsImage; -import org.eclipse.osee.ats.artifact.IFavoriteableArtifact; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.ats.util.FavoritesManager; import org.eclipse.osee.framework.core.exception.OseeCoreException; @@ -34,6 +33,7 @@ public class FavoriteAction extends Action { private final ISelectedAtsArtifacts selectedAtsArtifacts; public FavoriteAction(ISelectedAtsArtifacts selectedAtsArtifacts) { + super(); this.selectedAtsArtifacts = selectedAtsArtifacts; updateName(); } @@ -43,7 +43,7 @@ public class FavoriteAction extends Action { try { if (getSelectedFavoritableArts().size() == 1) { title = - getSelectedFavoritableArts().iterator().next().amIFavorite() ? "Remove Favorite" : "Add as Favorite"; + FavoritesManager.amIFavorite(getSelectedFavoritableArts().iterator().next()) ? "Remove Favorite" : "Add as Favorite"; } else { title = "Toggle Favorites"; } @@ -54,11 +54,11 @@ public class FavoriteAction extends Action { setToolTipText(title); } - public Collection<IFavoriteableArtifact> getSelectedFavoritableArts() throws OseeCoreException { - List<IFavoriteableArtifact> favoritableArts = new ArrayList<IFavoriteableArtifact>(); + public Collection<AbstractWorkflowArtifact> getSelectedFavoritableArts() throws OseeCoreException { + List<AbstractWorkflowArtifact> favoritableArts = new ArrayList<AbstractWorkflowArtifact>(); for (Artifact art : selectedAtsArtifacts.getSelectedSMAArtifacts()) { - if (art instanceof IFavoriteableArtifact) { - favoritableArts.add((IFavoriteableArtifact) art); + if (art instanceof AbstractWorkflowArtifact) { + favoritableArts.add((AbstractWorkflowArtifact) art); } } return favoritableArts; @@ -67,9 +67,7 @@ public class FavoriteAction extends Action { @Override public void run() { try { - for (IFavoriteableArtifact sma : getSelectedFavoritableArts()) { - new FavoritesManager((StateMachineArtifact) sma).toggleFavorite(); - } + new FavoritesManager(getSelectedFavoritableArts()).toggleFavorite(); } catch (OseeCoreException ex) { OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex); } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/ISelectedAtsArtifacts.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/ISelectedAtsArtifacts.java index 4f4b6d33848..0dcf0c0e1c7 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/ISelectedAtsArtifacts.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/ISelectedAtsArtifacts.java @@ -20,8 +20,8 @@ import org.eclipse.osee.framework.skynet.core.artifact.Artifact; */ public interface ISelectedAtsArtifacts { - public Set<? extends Artifact> getSelectedSMAArtifacts() throws OseeCoreException; + Set<? extends Artifact> getSelectedSMAArtifacts() throws OseeCoreException; - public List<Artifact> getSelectedAtsArtifacts() throws OseeCoreException; + List<Artifact> getSelectedAtsArtifacts() throws OseeCoreException; } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/ImportTasksViaSimpleList.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/ImportTasksViaSimpleList.java index b355162e34a..48e2eb499ea 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/ImportTasksViaSimpleList.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/ImportTasksViaSimpleList.java @@ -11,7 +11,7 @@ package org.eclipse.osee.ats.actions; import org.eclipse.jface.action.Action; -import org.eclipse.osee.ats.artifact.TaskableStateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractTaskableArtifact; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.ats.operation.ImportTasksFromSimpleList; import org.eclipse.osee.framework.logging.OseeLevel; @@ -26,10 +26,11 @@ import org.eclipse.swt.widgets.Listener; */ public class ImportTasksViaSimpleList extends Action { - private final TaskableStateMachineArtifact taskableArt; + private final AbstractTaskableArtifact taskableArt; private final Listener listener; - public ImportTasksViaSimpleList(TaskableStateMachineArtifact taskableArt, Listener listener) { + public ImportTasksViaSimpleList(AbstractTaskableArtifact taskableArt, Listener listener) { + super(); this.taskableArt = taskableArt; this.listener = listener; setText("Import Tasks via simple list"); @@ -43,7 +44,7 @@ public class ImportTasksViaSimpleList extends Action { blamOperation.setTaskableStateMachineArtifact(taskableArt); BlamEditor.edit(blamOperation); if (listener != null) { - listener.notify(); + listener.notifyAll(); } } catch (Exception ex) { OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex); diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/ImportTasksViaSpreadsheet.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/ImportTasksViaSpreadsheet.java index 24c2862443a..d5d4f09db27 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/ImportTasksViaSpreadsheet.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/ImportTasksViaSpreadsheet.java @@ -11,7 +11,7 @@ package org.eclipse.osee.ats.actions; import org.eclipse.jface.action.Action; -import org.eclipse.osee.ats.artifact.TaskableStateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractTaskableArtifact; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.ats.operation.ImportTasksFromSpreadsheet; import org.eclipse.osee.framework.logging.OseeLevel; @@ -26,10 +26,11 @@ import org.eclipse.swt.widgets.Listener; */ public class ImportTasksViaSpreadsheet extends Action { - private final TaskableStateMachineArtifact taskableArt; + private final AbstractTaskableArtifact taskableArt; private final Listener listener; - public ImportTasksViaSpreadsheet(TaskableStateMachineArtifact taskableArt, Listener listener) { + public ImportTasksViaSpreadsheet(AbstractTaskableArtifact taskableArt, Listener listener) { + super(); this.taskableArt = taskableArt; this.listener = listener; setText("Import Tasks via spreadsheet"); @@ -43,7 +44,7 @@ public class ImportTasksViaSpreadsheet extends Action { blamOperation.setTaskableStateMachineArtifact(taskableArt); BlamEditor.edit(blamOperation); if (listener != null) { - listener.notify(); + listener.notifyAll(); } } catch (Exception ex) { OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex); diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/NewDecisionReviewJob.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/NewDecisionReviewJob.java index 28b34bf074c..a2c0e8b404c 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/NewDecisionReviewJob.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/NewDecisionReviewJob.java @@ -18,7 +18,7 @@ import org.eclipse.core.runtime.Status; import org.eclipse.core.runtime.jobs.Job; import org.eclipse.osee.ats.AtsOpenOption; import org.eclipse.osee.ats.artifact.DecisionReviewArtifact; -import org.eclipse.osee.ats.artifact.ReviewSMArtifact.ReviewBlockType; +import org.eclipse.osee.ats.artifact.AbstractReviewArtifact.ReviewBlockType; import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.ats.util.AtsUtil; @@ -30,7 +30,6 @@ import org.eclipse.osee.framework.skynet.core.User; */ public class NewDecisionReviewJob extends Job { private final TeamWorkFlowArtifact teamParent; - private DecisionReviewArtifact decisionReviewArtifact; private final ReviewBlockType reviewBlockType; private final String reviewTitle; private final String againstState; @@ -52,11 +51,11 @@ public class NewDecisionReviewJob extends Job { @Override public IStatus run(final IProgressMonitor monitor) { try { - decisionReviewArtifact = + DecisionReviewArtifact decArt = ReviewManager.createNewDecisionReview(teamParent, reviewBlockType, reviewTitle, againstState, description, options, assignees); - decisionReviewArtifact.persist(); - AtsUtil.openATSAction(decisionReviewArtifact, AtsOpenOption.OpenOneOrPopupSelect); + decArt.persist(); + AtsUtil.openATSAction(decArt, AtsOpenOption.OpenOneOrPopupSelect); } catch (Exception ex) { monitor.done(); return new Status(IStatus.ERROR, AtsPlugin.PLUGIN_ID, -1, "Error creating Decision Review", ex); diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/NewGoal.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/NewGoal.java index 469cbbc9b81..91c029438cf 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 @@ -16,6 +16,7 @@ import org.eclipse.osee.ats.artifact.GoalArtifact; import org.eclipse.osee.ats.config.AtsBulkLoad; import org.eclipse.osee.ats.editor.SMAEditor; import org.eclipse.osee.ats.internal.AtsPlugin; +import org.eclipse.osee.ats.util.GoalManager; import org.eclipse.osee.framework.logging.OseeLevel; import org.eclipse.osee.framework.logging.OseeLog; import org.eclipse.osee.framework.ui.skynet.widgets.dialog.EntryDialog; @@ -37,10 +38,10 @@ public class NewGoal extends Action { super.run(); AtsBulkLoad.loadConfig(true); try { - EntryDialog ed = new EntryDialog("New Goal", "Enter Title"); - if (ed.open() == 0) { - String title = ed.getEntry(); - GoalArtifact goalArt = GoalArtifact.createGoal(title); + EntryDialog dialog = new EntryDialog("New Goal", "Enter Title"); + if (dialog.open() == 0) { + String title = dialog.getEntry(); + GoalArtifact goalArt = GoalManager.createGoal(title); goalArt.persist(); SMAEditor.editArtifact(goalArt); } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/NewPeerToPeerReviewJob.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/NewPeerToPeerReviewJob.java index 52294488d64..38d12df2e6f 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/NewPeerToPeerReviewJob.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/NewPeerToPeerReviewJob.java @@ -30,7 +30,6 @@ public class NewPeerToPeerReviewJob extends Job { private final TeamWorkFlowArtifact teamParent; private final String againstState; - private PeerToPeerReviewArtifact peerToPeerReviewArtifact; private final String reviewTitle; public NewPeerToPeerReviewJob(TeamWorkFlowArtifact teamParent, String reviewTitle, String againstState) { @@ -44,12 +43,12 @@ public class NewPeerToPeerReviewJob extends Job { public IStatus run(final IProgressMonitor monitor) { try { SkynetTransaction transaction = new SkynetTransaction(AtsUtil.getAtsBranch(), "New Peer To Peer Review"); - peerToPeerReviewArtifact = + PeerToPeerReviewArtifact peerArt = ReviewManager.createNewPeerToPeerReview(teamParent, reviewTitle, againstState, transaction); - peerToPeerReviewArtifact.persist(transaction); + peerArt.persist(transaction); transaction.execute(); - AtsUtil.openATSAction(peerToPeerReviewArtifact, AtsOpenOption.OpenOneOrPopupSelect); + AtsUtil.openATSAction(peerArt, AtsOpenOption.OpenOneOrPopupSelect); } catch (Exception ex) { monitor.done(); return new Status(IStatus.ERROR, AtsPlugin.PLUGIN_ID, -1, "Error creating PeerToPeer Review", ex); diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenInArtifactEditorAction.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenInArtifactEditorAction.java index f6d89cb148f..29f822d3fd3 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenInArtifactEditorAction.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenInArtifactEditorAction.java @@ -30,6 +30,7 @@ public class OpenInArtifactEditorAction extends Action { private final ISelectedAtsArtifacts selectedAtsArtifacts; public OpenInArtifactEditorAction(ISelectedAtsArtifacts selectedAtsArtifacts) { + super(); this.selectedAtsArtifacts = selectedAtsArtifacts; setText("Open Artifact Editor"); setToolTipText(getText()); diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenInAtsWorkflowEditor.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenInAtsWorkflowEditor.java index a1527c018a3..724b04f80c3 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenInAtsWorkflowEditor.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenInAtsWorkflowEditor.java @@ -30,6 +30,7 @@ public class OpenInAtsWorkflowEditor extends Action { private final ISelectedAtsArtifacts selectedAtsArtifacts; public OpenInAtsWorkflowEditor(String name, ISelectedAtsArtifacts selectedAtsArtifacts) { + super(); this.selectedAtsArtifacts = selectedAtsArtifacts; setText(name); } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenInAtsWorldAction.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenInAtsWorldAction.java index 112c451b2f7..2e779bf8880 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenInAtsWorldAction.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenInAtsWorldAction.java @@ -15,7 +15,7 @@ import org.eclipse.jface.action.Action; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.osee.ats.AtsImage; import org.eclipse.osee.ats.artifact.ActionArtifact; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.ats.world.WorldEditor; @@ -30,9 +30,10 @@ import org.eclipse.osee.framework.ui.swt.ImageManager; */ public class OpenInAtsWorldAction extends Action { - private final StateMachineArtifact sma; + private final AbstractWorkflowArtifact sma; - public OpenInAtsWorldAction(StateMachineArtifact sma) { + public OpenInAtsWorldAction(AbstractWorkflowArtifact sma) { + super(); this.sma = sma; setText("Open in ATS World Editor"); } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenInMassEditorAction.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenInMassEditorAction.java index a1cfa8de5bc..f9e61ded3a4 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenInMassEditorAction.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenInMassEditorAction.java @@ -28,6 +28,7 @@ public class OpenInMassEditorAction extends Action { private final ISelectedAtsArtifacts selectedAtsArtifacts; public OpenInMassEditorAction(ISelectedAtsArtifacts selectedAtsArtifacts) { + super(); this.selectedAtsArtifacts = selectedAtsArtifacts; setText("Open Mass Editor"); setToolTipText(getText()); diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenInSkyWalkerAction.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenInSkyWalkerAction.java index 24fa237d58e..77bd04464b3 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenInSkyWalkerAction.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenInSkyWalkerAction.java @@ -12,7 +12,7 @@ package org.eclipse.osee.ats.actions; import org.eclipse.jface.action.Action; import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.framework.ui.skynet.FrameworkImage; import org.eclipse.osee.framework.ui.skynet.skywalker.SkyWalkerView; import org.eclipse.osee.framework.ui.swt.ImageManager; @@ -22,9 +22,10 @@ import org.eclipse.osee.framework.ui.swt.ImageManager; */ public class OpenInSkyWalkerAction extends Action { - private final StateMachineArtifact sma; + private final AbstractWorkflowArtifact sma; - public OpenInSkyWalkerAction(StateMachineArtifact sma) { + public OpenInSkyWalkerAction(AbstractWorkflowArtifact sma) { + super(); this.sma = sma; setText("Open Sky Walker"); setToolTipText(getText()); diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenNewAtsTaskEditorAction.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenNewAtsTaskEditorAction.java index b1278fe6305..110d4424d6c 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenNewAtsTaskEditorAction.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenNewAtsTaskEditorAction.java @@ -30,15 +30,16 @@ public class OpenNewAtsTaskEditorAction extends Action { private final IOpenNewAtsTaskEditorHandler openNewAtsTaskEditorHandler; public OpenNewAtsTaskEditorAction(IOpenNewAtsTaskEditorHandler openNewAtsTaskEditorHandler) { + super(); this.openNewAtsTaskEditorHandler = openNewAtsTaskEditorHandler; setImageDescriptor(ImageManager.getImageDescriptor(AtsImage.TASK)); setToolTipText("Open New ATS Task Editor"); } public interface IOpenNewAtsTaskEditorHandler { - public ITaskEditorProvider getTaskEditorProviderCopy() throws OseeCoreException; + ITaskEditorProvider getTaskEditorProviderCopy() throws OseeCoreException; - public CustomizeData getCustomizeDataCopy() throws OseeCoreException; + CustomizeData getCustomizeDataCopy() throws OseeCoreException; } @Override diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenNewAtsTaskEditorSelected.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenNewAtsTaskEditorSelected.java index a760f912ac6..f6872d4921c 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenNewAtsTaskEditorSelected.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenNewAtsTaskEditorSelected.java @@ -10,7 +10,7 @@ *******************************************************************************/ package org.eclipse.osee.ats.actions; -import java.util.ArrayList; +import java.util.List; import org.eclipse.jface.action.Action; import org.eclipse.nebula.widgets.xviewer.customize.CustomizeData; import org.eclipse.osee.ats.AtsImage; @@ -32,16 +32,16 @@ public class OpenNewAtsTaskEditorSelected extends Action { private final IOpenNewAtsTaskEditorSelectedHandler openNewAtsTaskEditorSelectedHandler; public OpenNewAtsTaskEditorSelected(IOpenNewAtsTaskEditorSelectedHandler openNewAtsTaskEditorSelectedHandler) { + super(); this.openNewAtsTaskEditorSelectedHandler = openNewAtsTaskEditorSelectedHandler; setImageDescriptor(ImageManager.getImageDescriptor(AtsImage.TASK_SELECTED)); setToolTipText("Open Selected in ATS Task Editor"); } public interface IOpenNewAtsTaskEditorSelectedHandler { - public CustomizeData getCustomizeDataCopy() throws OseeCoreException; - - public ArrayList<? extends Artifact> getSelectedArtifacts() throws OseeCoreException; + CustomizeData getCustomizeDataCopy() throws OseeCoreException; + List<? extends Artifact> getSelectedArtifacts() throws OseeCoreException; } @Override diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenNewAtsWorldEditorAction.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenNewAtsWorldEditorAction.java index a396ed99e64..854fcfd5c55 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenNewAtsWorldEditorAction.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenNewAtsWorldEditorAction.java @@ -30,15 +30,16 @@ public class OpenNewAtsWorldEditorAction extends Action { private final IOpenNewAtsWorldEditorHandler openNewAtsWorldEditorHandler; public OpenNewAtsWorldEditorAction(IOpenNewAtsWorldEditorHandler openNewAtsWorldEditorHandler) { + super(); this.openNewAtsWorldEditorHandler = openNewAtsWorldEditorHandler; setImageDescriptor(ImageManager.getImageDescriptor(AtsImage.GLOBE)); setToolTipText("Open in ATS World Editor"); } public interface IOpenNewAtsWorldEditorHandler { - public IWorldEditorProvider getWorldEditorProviderCopy() throws OseeCoreException; + IWorldEditorProvider getWorldEditorProviderCopy() throws OseeCoreException; - public CustomizeData getCustomizeDataCopy() throws OseeCoreException; + CustomizeData getCustomizeDataCopy() throws OseeCoreException; } @Override diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenNewAtsWorldEditorSelectedAction.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenNewAtsWorldEditorSelectedAction.java index 3d157c9f258..1090d8ba12b 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenNewAtsWorldEditorSelectedAction.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenNewAtsWorldEditorSelectedAction.java @@ -33,16 +33,16 @@ public class OpenNewAtsWorldEditorSelectedAction extends Action { private final IOpenNewAtsWorldEditorSelectedHandler openNewAtsWorldEditorSelectedHandler; public OpenNewAtsWorldEditorSelectedAction(IOpenNewAtsWorldEditorSelectedHandler openNewAtsWorldEditorSelectedHandler) { + super(); this.openNewAtsWorldEditorSelectedHandler = openNewAtsWorldEditorSelectedHandler; setImageDescriptor(ImageManager.getImageDescriptor(AtsImage.GLOBE_SELECT)); setToolTipText("Open Selected in ATS World Editor"); } public interface IOpenNewAtsWorldEditorSelectedHandler { - public CustomizeData getCustomizeDataCopy() throws OseeCoreException; - - public ArrayList<Artifact> getSelectedArtifacts() throws OseeCoreException; + CustomizeData getCustomizeDataCopy() throws OseeCoreException; + ArrayList<Artifact> getSelectedArtifacts() throws OseeCoreException; } @Override diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenParentAction.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenParentAction.java index 1cfd0329d61..ffa94938801 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenParentAction.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenParentAction.java @@ -15,7 +15,7 @@ import org.eclipse.jface.action.Action; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.osee.ats.AtsImage; import org.eclipse.osee.ats.AtsOpenOption; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.ats.util.AtsUtil; import org.eclipse.osee.framework.core.exception.OseeCoreException; @@ -27,9 +27,10 @@ import org.eclipse.osee.framework.ui.swt.ImageManager; */ public class OpenParentAction extends Action { - private final StateMachineArtifact sma; + private final AbstractWorkflowArtifact sma; - public OpenParentAction(StateMachineArtifact sma) { + public OpenParentAction(AbstractWorkflowArtifact sma) { + super(); this.sma = sma; setText("Open Parent"); setToolTipText(getText()); diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenTeamDefinitionAction.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenTeamDefinitionAction.java index b8d8fcfff24..438e2c4fc54 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenTeamDefinitionAction.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenTeamDefinitionAction.java @@ -15,7 +15,7 @@ import org.eclipse.jface.action.Action; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.osee.ats.AtsImage; import org.eclipse.osee.ats.AtsOpenOption; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.ats.util.AtsUtil; @@ -28,9 +28,10 @@ import org.eclipse.osee.framework.ui.swt.ImageManager; */ public class OpenTeamDefinitionAction extends Action { - private final StateMachineArtifact sma; + private final AbstractWorkflowArtifact sma; - public OpenTeamDefinitionAction(StateMachineArtifact sma) { + public OpenTeamDefinitionAction(AbstractWorkflowArtifact sma) { + super(); this.sma = sma; setText("Open Team Definition"); setToolTipText(getText()); diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenVersionArtifactAction.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenVersionArtifactAction.java index 15aa0f6280d..b39096a7220 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenVersionArtifactAction.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/OpenVersionArtifactAction.java @@ -13,7 +13,7 @@ package org.eclipse.osee.ats.actions; import java.util.logging.Level; import org.eclipse.jface.action.Action; import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.logging.OseeLog; @@ -27,9 +27,10 @@ import org.eclipse.osee.framework.ui.swt.ImageManager; */ public class OpenVersionArtifactAction extends Action { - private final StateMachineArtifact sma; + private final AbstractWorkflowArtifact sma; - public OpenVersionArtifactAction(StateMachineArtifact sma) { + public OpenVersionArtifactAction(AbstractWorkflowArtifact sma) { + super(); this.sma = sma; setText("Open Targeted for Version"); setToolTipText(getText()); diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/PrivilegedEditAction.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/PrivilegedEditAction.java index 544162f9bd2..31bfc7cd9f4 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/PrivilegedEditAction.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/PrivilegedEditAction.java @@ -16,9 +16,10 @@ import org.eclipse.jface.action.Action; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.osee.ats.AtsImage; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.ats.util.AtsUtil; +import org.eclipse.osee.ats.util.PriviledgedUserManager; import org.eclipse.osee.ats.util.ReadOnlyHyperlinkListener; import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.logging.OseeLevel; @@ -33,9 +34,10 @@ import org.eclipse.osee.framework.ui.swt.ImageManager; */ public class PrivilegedEditAction extends Action { - private final StateMachineArtifact sma; + private final AbstractWorkflowArtifact sma; - public PrivilegedEditAction(StateMachineArtifact sma) { + public PrivilegedEditAction(AbstractWorkflowArtifact sma) { + super(); this.sma = sma; setText("Privileged Edit"); setToolTipText(getText()); @@ -57,13 +59,13 @@ public class PrivilegedEditAction extends Action { sma.getEditor().setPriviledgedEditMode(false); } } else { - Set<User> users = sma.getPrivilegedUsers(); + Set<User> users = PriviledgedUserManager.getPrivilegedUsers(sma); if (AtsUtil.isAtsAdmin()) { users.add(UserManager.getUser()); } - StringBuffer sb = new StringBuffer(); + StringBuffer stringBuffer = new StringBuffer(); for (User user : users) { - sb.append(user.getName() + "\n"); + stringBuffer.append(user.getName() + "\n"); } String buttons[]; boolean iAmPrivileged = users.contains(UserManager.getUser()); @@ -72,14 +74,14 @@ public class PrivilegedEditAction extends Action { } else { buttons = new String[] {"Cancel"}; } - MessageDialog ed = + MessageDialog dialog = new MessageDialog( Displays.getActiveShell(), "Privileged Edit", null, - "The following users have the ability to edit this " + sma.getArtifactTypeName() + " in case of emergency.\n\n" + sb.toString(), + "The following users have the ability to edit this " + sma.getArtifactTypeName() + " in case of emergency.\n\n" + stringBuffer.toString(), MessageDialog.QUESTION, buttons, 0); - int result = ed.open(); + int result = dialog.open(); if (iAmPrivileged && result == 0) { sma.getEditor().setPriviledgedEditMode(true); } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/RefreshDirtyAction.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/RefreshDirtyAction.java index cb251b7f4a2..c428fc01bf5 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/RefreshDirtyAction.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/RefreshDirtyAction.java @@ -12,7 +12,7 @@ package org.eclipse.osee.ats.actions; import org.eclipse.jface.action.Action; import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.framework.ui.skynet.FrameworkImage; import org.eclipse.osee.framework.ui.swt.ImageManager; @@ -21,9 +21,9 @@ import org.eclipse.osee.framework.ui.swt.ImageManager; */ public class RefreshDirtyAction extends Action { - private final StateMachineArtifact sma; + private final AbstractWorkflowArtifact sma; - public RefreshDirtyAction(StateMachineArtifact sma) { + public RefreshDirtyAction(AbstractWorkflowArtifact sma) { super("Refresh Editor Dirty"); this.sma = sma; setToolTipText(getText()); diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/ReloadAction.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/ReloadAction.java index de82f7e2ee1..0fd2fd36026 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/ReloadAction.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/ReloadAction.java @@ -14,8 +14,8 @@ import java.util.HashSet; import java.util.Set; import org.eclipse.jface.action.Action; import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; -import org.eclipse.osee.ats.artifact.TaskableStateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; +import org.eclipse.osee.ats.artifact.AbstractTaskableArtifact; import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.ats.util.widgets.ReviewManager; @@ -32,9 +32,10 @@ import org.eclipse.osee.framework.ui.swt.ImageManager; */ public class ReloadAction extends Action { - private final StateMachineArtifact sma; + private final AbstractWorkflowArtifact sma; - public ReloadAction(StateMachineArtifact sma) { + public ReloadAction(AbstractWorkflowArtifact sma) { + super(); String title = "Reload \"" + sma.getArtifactTypeName() + "\""; setText(title); setToolTipText(getText()); @@ -49,8 +50,8 @@ public class ReloadAction extends Action { if (sma.isTeamWorkflow()) { relatedArts.addAll(ReviewManager.getReviews((TeamWorkFlowArtifact) sma)); } - if (sma instanceof TaskableStateMachineArtifact) { - relatedArts.addAll(((TaskableStateMachineArtifact) sma).getTaskArtifacts()); + if (sma instanceof AbstractTaskableArtifact) { + relatedArts.addAll(((AbstractTaskableArtifact) sma).getTaskArtifacts()); } ArtifactQuery.reloadArtifacts(relatedArts); // Don't need to re-open editor cause event handler will do that diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/ResourceHistoryAction.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/ResourceHistoryAction.java index 8a52d42dcd2..336d3c06dfd 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/ResourceHistoryAction.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/ResourceHistoryAction.java @@ -12,7 +12,7 @@ package org.eclipse.osee.ats.actions; import org.eclipse.jface.action.Action; import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.logging.OseeLevel; @@ -26,9 +26,9 @@ import org.eclipse.osee.framework.ui.swt.ImageManager; */ public class ResourceHistoryAction extends Action { - private final StateMachineArtifact sma; + private final AbstractWorkflowArtifact sma; - public ResourceHistoryAction(StateMachineArtifact sma) { + public ResourceHistoryAction(AbstractWorkflowArtifact sma) { super("Resource History"); setToolTipText(getText()); this.sma = sma; diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/ShowBranchChangeDataAction.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/ShowBranchChangeDataAction.java index aae9ac7c5bc..6c72a554a61 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/ShowBranchChangeDataAction.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/ShowBranchChangeDataAction.java @@ -13,7 +13,7 @@ package org.eclipse.osee.ats.actions; import org.eclipse.jface.action.Action; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.osee.ats.AtsImage; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.framework.core.exception.OseeCoreException; @@ -30,9 +30,9 @@ import org.eclipse.osee.framework.ui.swt.ImageManager; */ public class ShowBranchChangeDataAction extends Action { - private final StateMachineArtifact sma; + private final AbstractWorkflowArtifact sma; - public ShowBranchChangeDataAction(StateMachineArtifact sma) { + public ShowBranchChangeDataAction(AbstractWorkflowArtifact sma) { super("Show Branch Change Data Report"); this.sma = sma; setToolTipText("Show computed change data from Branch; should be same as what's shown in change report"); @@ -50,13 +50,13 @@ public class ShowBranchChangeDataAction extends Action { AWorkbench.popup("Working branch never created or committed."); return; } - XResultData rd = new XResultData(); + XResultData result = new XResultData(); ChangeData changeData = teamArt.getBranchMgr().getChangeDataFromEarliestTransactionId(); - rd.log("Number of changes " + changeData.getChanges().size() + "\n"); + result.log("Number of changes " + changeData.getChanges().size() + "\n"); for (Change change : changeData.getChanges()) { - rd.log(String.format("Change [%s]", change)); + result.log(String.format("Change [%s]", change)); } - rd.report(String.format("Branch Change Data Report [%s]", sma)); + result.report(String.format("Branch Change Data Report [%s]", sma)); } catch (OseeCoreException ex) { OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex); } @@ -67,7 +67,7 @@ public class ShowBranchChangeDataAction extends Action { return ImageManager.getImageDescriptor(AtsImage.WORKFLOW_CONFIG); } - public static boolean isApplicable(StateMachineArtifact sma) { + public static boolean isApplicable(AbstractWorkflowArtifact sma) { return sma instanceof TeamWorkFlowArtifact; } } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/ShowChangeReportAction.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/ShowChangeReportAction.java index 4c2f71bc7b4..9f55a7baf8f 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/ShowChangeReportAction.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/ShowChangeReportAction.java @@ -13,6 +13,9 @@ package org.eclipse.osee.ats.actions; import org.eclipse.jface.action.Action; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact; +import org.eclipse.osee.ats.internal.AtsPlugin; +import org.eclipse.osee.framework.logging.OseeLevel; +import org.eclipse.osee.framework.logging.OseeLog; import org.eclipse.osee.framework.ui.skynet.FrameworkImage; import org.eclipse.osee.framework.ui.swt.ImageManager; @@ -26,6 +29,7 @@ public class ShowChangeReportAction extends Action { // Since this service is only going to be added for the Implement state, Location.AllState will // work public ShowChangeReportAction(TeamWorkFlowArtifact teamArt) { + super(); this.teamArt = teamArt; setText("Show Change Report"); setToolTipText(getText()); @@ -37,7 +41,7 @@ public class ShowChangeReportAction extends Action { enabled = teamArt.getBranchMgr().isCommittedBranchExists(); } } catch (Exception ex) { - // do nothing + OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex); } setEnabled(enabled); } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/ShowMergeManagerAction.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/ShowMergeManagerAction.java index 517c16efe0b..9c5e9fc47be 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/ShowMergeManagerAction.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/ShowMergeManagerAction.java @@ -30,6 +30,7 @@ public class ShowMergeManagerAction extends Action { // Since this service is only going to be added for the Implement state, Location.AllState will // work public ShowMergeManagerAction(TeamWorkFlowArtifact teamArt) { + super(); this.teamArt = teamArt; setText("Show Merge Manager"); setToolTipText(getText()); diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/SubscribedAction.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/SubscribedAction.java index 337f646c84c..18d5d0cd36c 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/SubscribedAction.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/SubscribedAction.java @@ -16,8 +16,7 @@ import java.util.List; import org.eclipse.jface.action.Action; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.osee.ats.AtsImage; -import org.eclipse.osee.ats.artifact.ISubscribableArtifact; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.ats.util.SubscribeManager; import org.eclipse.osee.framework.core.exception.OseeCoreException; @@ -34,6 +33,7 @@ public class SubscribedAction extends Action { private final ISelectedAtsArtifacts selectedAtsArtifacts; public SubscribedAction(ISelectedAtsArtifacts selectedAtsArtifacts) { + super(); this.selectedAtsArtifacts = selectedAtsArtifacts; updateName(); } @@ -43,7 +43,7 @@ public class SubscribedAction extends Action { try { if (getSelectedSubscribableArts().size() == 1) { title = - getSelectedSubscribableArts().iterator().next().amISubscribed() ? "Remove Subscribed" : "Add as Subscribed"; + SubscribeManager.amISubscribed(getSelectedSubscribableArts().iterator().next()) ? "Remove Subscribed" : "Add as Subscribed"; } else { title = "Toggle Subscribed"; } @@ -54,11 +54,11 @@ public class SubscribedAction extends Action { setToolTipText(title); } - public Collection<ISubscribableArtifact> getSelectedSubscribableArts() throws OseeCoreException { - List<ISubscribableArtifact> favoritableArts = new ArrayList<ISubscribableArtifact>(); + public Collection<AbstractWorkflowArtifact> getSelectedSubscribableArts() throws OseeCoreException { + List<AbstractWorkflowArtifact> favoritableArts = new ArrayList<AbstractWorkflowArtifact>(); for (Artifact art : selectedAtsArtifacts.getSelectedSMAArtifacts()) { - if (art instanceof ISubscribableArtifact) { - favoritableArts.add((ISubscribableArtifact) art); + if (art instanceof AbstractWorkflowArtifact) { + favoritableArts.add((AbstractWorkflowArtifact) art); } } return favoritableArts; @@ -67,9 +67,7 @@ public class SubscribedAction extends Action { @Override public void run() { try { - for (ISubscribableArtifact sma : getSelectedSubscribableArts()) { - new SubscribeManager((StateMachineArtifact) sma).toggleSubscribe(); - } + new SubscribeManager(getSelectedSubscribableArts()).toggleSubscribe(); } catch (OseeCoreException ex) { OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex); } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/TaskAddAction.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/TaskAddAction.java index de3cbadba5e..b6850dd71fa 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/TaskAddAction.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/TaskAddAction.java @@ -29,7 +29,7 @@ public class TaskAddAction extends Action { } public static interface ITaskAddActionHandler { - public void taskAddActionHandler(); + void taskAddActionHandler(); } @Override diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/TaskDeleteAction.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/TaskDeleteAction.java index 336bb6ec143..37f8da28ed4 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/TaskDeleteAction.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/TaskDeleteAction.java @@ -29,7 +29,7 @@ public class TaskDeleteAction extends Action { } public static interface ITaskDeleteActionHandler { - public void taskDeleteActionHandler(); + void taskDeleteActionHandler(); } @Override diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/WorkflowDebugAction.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/WorkflowDebugAction.java index a241c9238a2..84782c72636 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/WorkflowDebugAction.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/WorkflowDebugAction.java @@ -13,7 +13,7 @@ package org.eclipse.osee.ats.actions; import org.eclipse.jface.action.Action; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.osee.ats.AtsImage; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.artifact.TeamDefinitionArtifact; import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact; import org.eclipse.osee.ats.internal.AtsPlugin; @@ -32,9 +32,9 @@ import org.eclipse.osee.framework.ui.swt.ImageManager; */ public class WorkflowDebugAction extends Action { - private final StateMachineArtifact sma; + private final AbstractWorkflowArtifact sma; - public WorkflowDebugAction(StateMachineArtifact sma) { + public WorkflowDebugAction(AbstractWorkflowArtifact sma) { super("Show Workflow Debug Report"); this.sma = sma; setToolTipText("Show workflow definition and all page, widgets and rules"); diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/ActionableItemFilter.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/ActionableItemFilter.java index 468e5f0e2bc..b76b5904ca7 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/ActionableItemFilter.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/ActionableItemFilter.java @@ -10,6 +10,7 @@ *******************************************************************************/ package org.eclipse.osee.ats.actions.wizard; +import java.util.Locale; import java.util.logging.Level; import org.eclipse.jface.viewers.Viewer; import org.eclipse.jface.viewers.ViewerFilter; @@ -25,6 +26,7 @@ public class ActionableItemFilter extends ViewerFilter { private final OSEEFilteredTree treeViewer; public ActionableItemFilter(OSEEFilteredTree treeViewer) { + super(); this.treeViewer = treeViewer; } @@ -38,7 +40,7 @@ public class ActionableItemFilter extends ViewerFilter { private boolean checkItemAndChildren(ActionableItemArtifact item) { try { - boolean show = item.getName().toLowerCase().contains(contains.toLowerCase()); + boolean show = item.getName().toLowerCase().contains(contains.toLowerCase(Locale.US)); if (show) { return true; } @@ -59,7 +61,7 @@ public class ActionableItemFilter extends ViewerFilter { */ public void setContains(String contains) { this.contains = contains; - if (contains.equals("")) { + if (contains.isEmpty()) { treeViewer.getViewer().collapseAll(); } else { treeViewer.getViewer().expandAll(); diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/ArtifactSelectWizardPage.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/ArtifactSelectWizardPage.java index e9e3e69f336..a4be633489f 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/ArtifactSelectWizardPage.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/ArtifactSelectWizardPage.java @@ -40,7 +40,6 @@ import org.eclipse.swt.widgets.Listener; public class ArtifactSelectWizardPage extends WizardPage { - private ListViewer artTypeList; private ListViewer artList; private Artifact selectedArtifact; private boolean showArtData = false; @@ -54,29 +53,29 @@ public class ArtifactSelectWizardPage extends WizardPage { setTitle("Select an Artifact"); Composite composite = new Composite(parent, SWT.NONE); - GridLayout gl = new GridLayout(); - gl.numColumns = 2; - composite.setLayout(gl); - GridData gd = new GridData(GridData.FILL, GridData.FILL, true, true); - composite.setLayoutData(gd); + GridLayout gridLayout = new GridLayout(); + gridLayout.numColumns = 2; + composite.setLayout(gridLayout); + GridData gridData1 = new GridData(GridData.FILL, GridData.FILL, true, true); + composite.setLayoutData(gridData1); Composite leftComp = new Composite(composite, SWT.NONE); leftComp.setLayout(new GridLayout()); - gd = new GridData(GridData.FILL, GridData.FILL, true, true); - leftComp.setLayoutData(gd); + gridData1 = new GridData(GridData.FILL, GridData.FILL, true, true); + leftComp.setLayoutData(gridData1); new Label(leftComp, SWT.NONE).setText("Artifact Type"); try { - artTypeList = new ListViewer(leftComp, SWT.BORDER | SWT.SINGLE | SWT.V_SCROLL | SWT.H_SCROLL); + ListViewer artTypeList = new ListViewer(leftComp, SWT.BORDER | SWT.SINGLE | SWT.V_SCROLL | SWT.H_SCROLL); artTypeList.setContentProvider(new ArrayContentProvider()); artTypeList.setLabelProvider(new ArtTypeLabelProvider()); - gd = new GridData(GridData.FILL, GridData.FILL, true, true); - gd.heightHint = 300; - gd.widthHint = 200; - artTypeList.getControl().setLayoutData(gd); + gridData1 = new GridData(GridData.FILL, GridData.FILL, true, true); + gridData1.heightHint = 300; + gridData1.widthHint = 200; + artTypeList.getControl().setLayoutData(gridData1); artTypeList.setInput(ArtifactTypeManager.getValidArtifactTypes(AtsUtil.getAtsBranch())); artTypeList.addSelectionChangedListener(new ISelectionChangedListener() { @Override @@ -101,8 +100,8 @@ public class ArtifactSelectWizardPage extends WizardPage { Composite rightComp = new Composite(composite, SWT.NONE); rightComp.setLayout(new GridLayout()); - gd = new GridData(GridData.FILL, GridData.FILL, true, true); - rightComp.setLayoutData(gd); + gridData1 = new GridData(GridData.FILL, GridData.FILL, true, true); + rightComp.setLayoutData(gridData1); Label lab = new Label(rightComp, SWT.NONE); lab.setText("Artifact (click here for artifact data)"); @@ -110,7 +109,7 @@ public class ArtifactSelectWizardPage extends WizardPage { lab.addListener(SWT.MouseUp, new Listener() { @Override public void handleEvent(Event event) { - showArtData = !showArtData; + showArtData ^= true; artList.refresh(); } }); @@ -126,10 +125,10 @@ public class ArtifactSelectWizardPage extends WizardPage { return getComparator().compare(((Artifact) e1).getName(), ((Artifact) e2).getName()); } }); - gd = new GridData(GridData.FILL, GridData.FILL, true, true); - gd.heightHint = 300; - gd.widthHint = 200; - artList.getControl().setLayoutData(gd); + gridData1 = new GridData(GridData.FILL, GridData.FILL, true, true); + gridData1.heightHint = 300; + gridData1.widthHint = 200; + artList.getControl().setLayoutData(gridData1); artList.addSelectionChangedListener(new ISelectionChangedListener() { @Override public void selectionChanged(SelectionChangedEvent event) { diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/IAtsTeamWorkflow.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/IAtsTeamWorkflow.java index 8aa5e54208c..263e20568f9 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/IAtsTeamWorkflow.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/IAtsTeamWorkflow.java @@ -30,7 +30,7 @@ public interface IAtsTeamWorkflow { * @param actionableItems that were selected for the creation * @return true if responsible, false if not */ - public boolean isResponsibleForTeamWorkflowCreation(TeamDefinitionArtifact teamDef, Collection<ActionableItemArtifact> actionableItems) throws OseeCoreException; + boolean isResponsibleForTeamWorkflowCreation(TeamDefinitionArtifact teamDef, Collection<ActionableItemArtifact> actionableItems) throws OseeCoreException; /** * Return the artifact type name for the given parameters. This method will only be called if @@ -40,19 +40,19 @@ public interface IAtsTeamWorkflow { * @param actionableItems that were selected for the creation * @return string artifact type name */ - public String getTeamWorkflowArtifactName(TeamDefinitionArtifact teamDef, Collection<ActionableItemArtifact> actionableItems) throws OseeCoreException; + String getTeamWorkflowArtifactName(TeamDefinitionArtifact teamDef, Collection<ActionableItemArtifact> actionableItems) throws OseeCoreException; /** * Notification that a teamWorkflow is being duplicated. This allows the extension to do necessary changes to * duplicated workflow. */ - public void teamWorkflowDuplicating(TeamWorkFlowArtifact teamArt, TeamWorkFlowArtifact dupTeamArt) throws OseeCoreException; + void teamWorkflowDuplicating(TeamWorkFlowArtifact teamArt, TeamWorkFlowArtifact dupTeamArt) throws OseeCoreException; /** * Notification that a teamWorkflow was created. This allows the extension to do necessary initial tasks after the * team workflow artifact is created. All changes made to dupTeamArt will be persisted after this call. */ - public void teamWorkflowCreated(TeamWorkFlowArtifact teamArt); + void teamWorkflowCreated(TeamWorkFlowArtifact teamArt); /** * Return a collection of all team workflow artifact type names. These are used by ATS when searching is performed @@ -60,5 +60,5 @@ public interface IAtsTeamWorkflow { * * @return collection of all team workflow artifact type names */ - public Collection<? extends IArtifactType> getTeamWorkflowArtifactNames() throws OseeCoreException; + Collection<? extends IArtifactType> getTeamWorkflowArtifactNames() throws OseeCoreException; } 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 bf6aa5a154b..733b16797b2 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/IAtsWizardItem.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/IAtsWizardItem.java @@ -28,12 +28,12 @@ public interface IAtsWizardItem { * determine what (if any) widgets should be added. eg. <XWidget displayName=\"Description\" height=\"80\" * required=\"true\" xwidgetType=\"XText\" fill=\"Vertically\" \"/>"); */ - public void getWizardXWidgetExtensions(Collection<ActionableItemArtifact> aias, StringBuffer sb) throws Exception; + void getWizardXWidgetExtensions(Collection<ActionableItemArtifact> aias, StringBuffer stringBuffer) throws Exception; /** * @return true if widgets will be added based on selected aias */ - public boolean hasWizardXWidgetExtensions(Collection<ActionableItemArtifact> aias) throws Exception; + boolean hasWizardXWidgetExtensions(Collection<ActionableItemArtifact> aias) throws Exception; /** * Determine if Action is valid to create based on wizard data entered. hasWizardXWidgetExtenstions will be called to @@ -42,13 +42,13 @@ public interface IAtsWizardItem { * @return result of validation. if true, action will be created; if not, error will popup and action will not be * created */ - public Result isActionValidToCreate(Collection<ActionableItemArtifact> aias, NewActionWizard wizard); + Result isActionValidToCreate(Collection<ActionableItemArtifact> aias, NewActionWizard wizard); /** * 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. */ - public void wizardCompleted(ActionArtifact actionArt, NewActionWizard wizard, SkynetTransaction transaction) throws Exception; + void wizardCompleted(ActionArtifact actionArt, NewActionWizard wizard, SkynetTransaction transaction) throws Exception; /** * Validation that the data entered is valid and the wizard can be finished. This will be called after every @@ -58,6 +58,6 @@ public interface IAtsWizardItem { * * @return true if widget data entered is valid */ - public Result isWizardXWidgetsComplete(NewActionWizard wizard); + Result isWizardXWidgetsComplete(NewActionWizard wizard); } 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 b87d93ab856..2872eefc8e2 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 @@ -62,7 +62,7 @@ public class NewActionJob extends Job { public IStatus run(final IProgressMonitor monitor) { try { SkynetTransaction transaction = new SkynetTransaction(AtsUtil.getAtsBranch(), "Create New Action"); - if (title.equals("tt")) { + if ("tt".equals(title)) { title += " " + AtsUtil.getAtsDeveloperIncrementingNum(); } actionArt = diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/NewActionPage1.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/NewActionPage1.java index 9b1524b7fba..e35f9c08330 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/NewActionPage1.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/NewActionPage1.java @@ -109,15 +109,15 @@ public class NewActionPage1 extends WizardPage { getContainer().updateButtons(); } }); - GridData gd = new GridData(GridData.FILL_BOTH); - gd.heightHint = 400; - treeViewer.setLayoutData(gd); + GridData gridData1 = new GridData(GridData.FILL_BOTH); + gridData1.heightHint = 400; + treeViewer.setLayoutData(gridData1); new Label(aiComp, SWT.NONE).setText("Description of highlighted Actionable Item (if any):"); descriptionLabel = new Text(aiComp, SWT.BORDER | SWT.WRAP); - gd = new GridData(GridData.FILL_BOTH); - gd.heightHint = 15; - descriptionLabel.setLayoutData(gd); + gridData1 = new GridData(GridData.FILL_BOTH); + gridData1.heightHint = 15; + descriptionLabel.setLayoutData(gridData1); descriptionLabel.setEnabled(false); treeViewer.getViewer().addSelectionChangedListener(new SelectionChangedListener()); diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/NewActionPage2.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/NewActionPage2.java index b99a4e04488..1553ed66c5f 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/NewActionPage2.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/NewActionPage2.java @@ -39,6 +39,7 @@ public class NewActionPage2 extends WizardPage { private WorkPage page; private final NewActionWizard wizard; private boolean debugPopulated = false; + private static String DESCRIPTION = "Description"; protected NewActionPage2(NewActionWizard wizard) { super("Create new ATS Action", "Create ATS Action", null); @@ -50,14 +51,14 @@ public class NewActionPage2 extends WizardPage { public void setVisible(boolean visible) { super.setVisible(visible); try { - if (wizard.getInitialDescription() != null && ((XText) getXWidget("Description")).get().equals("")) { - ((XText) getXWidget("Description")).set(wizard.getInitialDescription()); + if (wizard.getInitialDescription() != null && ((XText) getXWidget(DESCRIPTION)).get().equals("")) { + ((XText) getXWidget(DESCRIPTION)).set(wizard.getInitialDescription()); } if (wizard.isTTAction()) { handlePopulateWithDebugInfo(); } wizard.createPage3IfNecessary(); - ((XText) getXWidget("Description")).getStyledText().setFocus(); + ((XText) getXWidget(DESCRIPTION)).getStyledText().setFocus(); } catch (Exception ex) { OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex); } @@ -74,22 +75,23 @@ public class NewActionPage2 extends WizardPage { public void createControl(Composite parent) { try { - StringBuffer sb = new StringBuffer("<WorkPage>"); - sb.append("<XWidget displayName=\"Description\" height=\"80\" required=\"true\" xwidgetType=\"XText\" fill=\"Vertically\" toolTip=\"" + AtsAttributeTypes.Description.getDescription() + "\"/>"); - sb.append("<XWidget displayName=\"Change Type\" storageName=\"ats.Change Type\" xwidgetType=\"XCombo(" + ATSXWidgetOptionResolver.OPTIONS_FROM_ATTRIBUTE_VALIDITY + ")\" required=\"true\" horizontalLabel=\"true\" toolTip=\"" + AtsAttributeTypes.ChangeType.getDescription() + "\"/>"); - sb.append("<XWidget displayName=\"Priority\" storageName=\"ats.Priority\" xwidgetType=\"XCombo(" + ATSXWidgetOptionResolver.OPTIONS_FROM_ATTRIBUTE_VALIDITY + ")\" required=\"true\" horizontalLabel=\"true\"/>"); - sb.append("<XWidget displayName=\"Deadline\" xwidgetType=\"XDate\" horizontalLabel=\"true\" toolTip=\"" + AtsAttributeTypes.NeedBy.getDescription() + "\"/>"); - sb.append("<XWidget displayName=\"Validation Required\" xwidgetType=\"XCheckBox\" horizontalLabel=\"true\" labelAfter=\"true\" toolTip=\"" + AtsAttributeTypes.ValidationRequired.getDescription() + "\"/>"); - sb.append("</WorkPage>"); + StringBuffer stringBuffer = new StringBuffer(800); + stringBuffer.append("<WorkPage>"); + stringBuffer.append("<XWidget displayName=\"Description\" height=\"80\" required=\"true\" xwidgetType=\"XText\" fill=\"Vertically\" toolTip=\"" + AtsAttributeTypes.Description.getDescription() + "\"/>"); + stringBuffer.append("<XWidget displayName=\"Change Type\" storageName=\"ats.Change Type\" xwidgetType=\"XCombo(" + ATSXWidgetOptionResolver.OPTIONS_FROM_ATTRIBUTE_VALIDITY + ")\" required=\"true\" horizontalLabel=\"true\" toolTip=\"" + AtsAttributeTypes.ChangeType.getDescription() + "\"/>"); + stringBuffer.append("<XWidget displayName=\"Priority\" storageName=\"ats.Priority\" xwidgetType=\"XCombo(" + ATSXWidgetOptionResolver.OPTIONS_FROM_ATTRIBUTE_VALIDITY + ")\" required=\"true\" horizontalLabel=\"true\"/>"); + stringBuffer.append("<XWidget displayName=\"Deadline\" xwidgetType=\"XDate\" horizontalLabel=\"true\" toolTip=\"" + AtsAttributeTypes.NeedBy.getDescription() + "\"/>"); + stringBuffer.append("<XWidget displayName=\"Validation Required\" xwidgetType=\"XCheckBox\" horizontalLabel=\"true\" labelAfter=\"true\" toolTip=\"" + AtsAttributeTypes.ValidationRequired.getDescription() + "\"/>"); + stringBuffer.append("</WorkPage>"); Composite comp = new Composite(parent, SWT.NONE); comp.setLayout(new GridLayout(2, false)); comp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - page = new WorkPage(sb.toString(), ATSXWidgetOptionResolver.getInstance()); + page = new WorkPage(stringBuffer.toString(), ATSXWidgetOptionResolver.getInstance()); page.createBody(null, comp, null, xModListener, true); - ((XText) getXWidget("Description")).getLabelWidget().addListener(SWT.MouseUp, new Listener() { + ((XText) getXWidget(DESCRIPTION)).getLabelWidget().addListener(SWT.MouseUp, new Listener() { @Override public void handleEvent(Event event) { if (event.button == 3) { @@ -114,7 +116,7 @@ public class NewActionPage2 extends WizardPage { return; } try { - ((XText) getXWidget("Description")).set("See title"); + ((XText) getXWidget(DESCRIPTION)).set("See title"); // Must use skynet attribute name cause these widget uses the OPTIONS_FROM_ATTRIBUTE_VALIDITY ((XCombo) getXWidget("ats.Priority")).set("4"); ((XCombo) getXWidget("ats.Change Type")).set("Improvement"); 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 31449c18116..8881fc29b82 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 @@ -84,23 +84,23 @@ public class NewActionPage3 extends WizardPage { public void createPage(Composite comp) { try { if (page == null) { - StringBuffer sb = new StringBuffer(); - sb.append("<WorkPage>"); + StringBuffer stringBuffer = new StringBuffer(500); + stringBuffer.append("<WorkPage>"); // sb.append("<XWidget displayName=\"Description\" height=\"80\" required=\"true\" // xwidgetType=\"XText\" fill=\"Vertically\" toolTip=\"" // + ATSAttributes.DESCRIPTION_ATTRIBUTE.getDescription() + "\"/>"); for (IAtsWizardItem item : wizardExtensionItems) { try { if (item.hasWizardXWidgetExtensions(wizard.getSelectedActionableItemArtifacts())) { - item.getWizardXWidgetExtensions(wizard.getSelectedActionableItemArtifacts(), sb); + item.getWizardXWidgetExtensions(wizard.getSelectedActionableItemArtifacts(), stringBuffer); } } catch (Exception ex) { OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex); } } - sb.append("</WorkPage>"); + stringBuffer.append("</WorkPage>"); - page = new WorkPage(sb.toString(), ATSXWidgetOptionResolver.getInstance()); + page = new WorkPage(stringBuffer.toString(), ATSXWidgetOptionResolver.getInstance()); page.createBody(null, comp, null, xModListener, true); comp.layout(); @@ -153,7 +153,7 @@ public class NewActionPage3 extends WizardPage { } private static void getWizardXWidgetExtensions() { - if (wizardExtensionItems.size() > 0) { + if (wizardExtensionItems.isEmpty()) { return; } @@ -195,7 +195,7 @@ public class NewActionPage3 extends WizardPage { return true; } } catch (Exception ex) { - // DO NOTHING + OseeLog.log(AtsPlugin.class, Level.SEVERE, ex); } } return false; @@ -212,7 +212,7 @@ public class NewActionPage3 extends WizardPage { } } } catch (Exception ex) { - // DO NOTHING + OseeLog.log(AtsPlugin.class, Level.SEVERE, ex); } } return Result.TrueResult; 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 7795e9a5875..cbdd518c825 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 @@ -44,10 +44,6 @@ public class NewActionWizard extends Wizard implements INewWizard { private Collection<ActionableItemArtifact> initialAias; private String initialDescription; - public NewActionWizard() { - super(); - } - @Override public boolean performFinish() { try { @@ -122,7 +118,7 @@ public class NewActionWizard extends Wizard implements INewWizard { } public boolean getValidation() throws OseeCoreException { - return ((XCheckBox) page2.getXWidget("Validation Required")).get(); + return ((XCheckBox) page2.getXWidget("Validation Required")).isChecked(); } public Date getNeedBy() throws OseeCoreException { diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/NewNotePage.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/NewNotePage.java index 7ce4497e383..b8fb8caded6 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/NewNotePage.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/NewNotePage.java @@ -62,49 +62,49 @@ public class NewNotePage extends WizardPage { Composite topC = new Composite(composite, SWT.NONE); topC.setLayout(ALayout.getZeroMarginLayout(2, false)); - GridData gd = new GridData(GridData.FILL_HORIZONTAL); - topC.setLayoutData(gd); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + topC.setLayoutData(gridData); Composite topCLeft = new Composite(topC, SWT.NONE); topCLeft.setLayout(new GridLayout()); - gd = new GridData(GridData.FILL_HORIZONTAL); - topCLeft.setLayoutData(gd); + gridData = new GridData(GridData.FILL_HORIZONTAL); + topCLeft.setLayoutData(gridData); typeList.createWidgets(topCLeft, 2); typeList.addSelectionListener(new SelectionAdapter() { @Override - public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) { + public void widgetSelected(org.eclipse.swt.events.SelectionEvent event) { update(); }; }); Composite topCRight = new Composite(topC, SWT.NONE); topCRight.setLayout(new GridLayout()); - gd = new GridData(GridData.FILL_HORIZONTAL); - topCRight.setLayoutData(gd); + gridData = new GridData(GridData.FILL_HORIZONTAL); + topCRight.setLayoutData(gridData); artifactList.createWidgets(topCRight, 2); artifactList.addSelectionListener(new SelectionAdapter() { @Override - public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) { + public void widgetSelected(org.eclipse.swt.events.SelectionEvent event) { update(); }; }); - gd = new GridData(GridData.FILL_HORIZONTAL); - gd.widthHint = 300; - artifactList.getList().setLayoutData(gd); + gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.widthHint = 300; + artifactList.getList().setLayoutData(gridData); Composite bottomC = new Composite(composite, SWT.NONE); bottomC.setLayout(new GridLayout()); - gd = new GridData(GridData.FILL_BOTH); - bottomC.setLayoutData(gd); + gridData = new GridData(GridData.FILL_BOTH); + bottomC.setLayoutData(gridData); noteText.createWidgets(bottomC, 2); noteText.addModifyListener(new ModifyListener() { @Override - public void modifyText(org.eclipse.swt.events.ModifyEvent e) { + public void modifyText(org.eclipse.swt.events.ModifyEvent event) { update(); }; }); diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/ATSLog.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/ATSLog.java index 3f04067ac1f..39fe737405a 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/ATSLog.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/ATSLog.java @@ -13,21 +13,18 @@ package org.eclipse.osee.ats.artifact; import java.lang.ref.WeakReference; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collections; import java.util.Date; import java.util.List; import java.util.logging.Level; -import java.util.regex.Matcher; -import java.util.regex.Pattern; -import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact.DefaultTeamState; import org.eclipse.osee.ats.internal.AtsPlugin; +import org.eclipse.osee.ats.util.DefaultTeamState; import org.eclipse.osee.framework.core.exception.OseeArgumentException; import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.core.exception.OseeStateException; import org.eclipse.osee.framework.jdk.core.util.AHTML; -import org.eclipse.osee.framework.jdk.core.util.AXml; import org.eclipse.osee.framework.jdk.core.util.DateUtil; -import org.eclipse.osee.framework.jdk.core.util.Strings; import org.eclipse.osee.framework.jdk.core.util.xml.Jaxp; import org.eclipse.osee.framework.logging.OseeLevel; import org.eclipse.osee.framework.logging.OseeLog; @@ -44,8 +41,8 @@ public class ATSLog { private final WeakReference<Artifact> artifactRef; private boolean enabled = true; - private static String ATS_LOG_TAG = "AtsLog"; - private static String LOG_ITEM_TAG = "Item"; + private final static String ATS_LOG_TAG = "AtsLog"; + private final static String LOG_ITEM_TAG = "Item"; private LogItem cancelledLogItem; private LogItem completedLogItem; public static enum LogType { @@ -110,36 +107,9 @@ public class ATSLog { return artifactRef.get(); } - private static Pattern LOG_ITEM_PATTERN = - Pattern.compile("<Item date=\"(.*?)\" msg=\"(.*?)\" state=\"(.*?)\" type=\"(.*?)\" userId=\"(.*?)\"/>"); - - private static Pattern LOG_ITEM_TAG_PATTERN = Pattern.compile("<Item "); - public List<LogItem> getLogItems() throws OseeCoreException { - // System.out.println("getLogItems " + artifact.getHumanReadableId()); - List<LogItem> logItems = new ArrayList<LogItem>(); String xml = getArtifact().getSoleAttributeValue(AtsAttributeTypes.Log, ""); - if (!xml.equals("")) { - Matcher m = LOG_ITEM_PATTERN.matcher(xml); - while (m.find()) { - LogItem item = - new LogItem(m.group(4), m.group(1), Strings.intern(m.group(5)), Strings.intern(m.group(3)), - AXml.xmlToText(m.group(2)), getArtifact().getHumanReadableId()); - logItems.add(item); - } - - Matcher m2 = LOG_ITEM_TAG_PATTERN.matcher(xml); - int openTagsFound = 0; - while (m2.find()) { - openTagsFound++; - } - if (logItems.size() != openTagsFound) { - OseeLog.log(AtsPlugin.class, Level.SEVERE, String.format( - "ATS Log: open tags found %d doesn't match log items parsed %d for %s", openTagsFound, logItems.size(), - getArtifact().getHumanReadableId())); - } - } - return logItems; + return LogItem.getLogItems(xml, getArtifact().getHumanReadableId()); } public Date getLastStatusedDate() throws OseeCoreException { @@ -158,7 +128,7 @@ public class ATSLog { for (LogItem item : items) { Element element = doc.createElement(LOG_ITEM_TAG); element.setAttribute("type", item.getType().name()); - element.setAttribute("date", item.getDate().getTime() + ""); + element.setAttribute("date", String.valueOf(item.getDate().getTime())); element.setAttribute("userId", item.getUser().getUserId()); element.setAttribute("state", item.getState()); element.setAttribute("msg", item.getMsg()); @@ -327,24 +297,21 @@ public class ATSLog { public String getTable() throws OseeCoreException { StringBuilder builder = new StringBuilder(); List<LogItem> logItems = getLogItems(); - builder.append("<TABLE BORDER=\"1\" cellspacing=\"1\" cellpadding=\"3%\" width=\"100%\"><THEAD><TR><TH>Event</TH>" + "<TH>State</TH><TH>Message</TH><TH>User</TH><TH>Date</TH></THEAD></TR>"); + builder.append(AHTML.beginMultiColumnTable(100, 1)); + builder.append(AHTML.addHeaderRowMultiColumnTable(Arrays.asList("Event", "State", "Message", "User", "Date"))); for (LogItem item : logItems) { User user = item.getUser(); - if (user != null) { - builder.append("<TR>"); - builder.append("<TD>" + item.getType() + "</TD>"); - builder.append("<TD>" + (item.getState().equals("") ? "." : item.getState()) + "</TD>"); - builder.append("<TD>" + (item.getMsg().equals("") ? "." : item.getMsg()) + "</TD>"); - if (user.equals(UserManager.getUser())) { - builder.append("<TD bgcolor=\"#CCCCCC\">" + user.getName() + "</TD>"); - } else { - builder.append("<TD>" + user.getName() + "</TD>"); - } - builder.append("<TD>" + item.getDate(DateUtil.MMDDYYHHMM) + "</TD>"); - builder.append("</TR>"); + String userStr = null; + if (user == null) { + userStr = item.getUserId(); + } else { + userStr = user.getName(); } + builder.append(AHTML.addRowMultiColumnTable(String.valueOf(item.getType()), + (item.getState().equals("") ? "." : item.getState()), (item.getMsg().equals("") ? "." : item.getMsg()), + userStr, item.getDate(DateUtil.MMDDYYHHMM))); } - builder.append("</TABLE>"); + builder.append(AHTML.endMultiColumnTable()); return builder.toString(); } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/ATSNote.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/ATSNote.java index 1cc976c3017..df55dda6fab 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/ATSNote.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/ATSNote.java @@ -11,29 +11,25 @@ package org.eclipse.osee.ats.artifact; import java.lang.ref.WeakReference; +import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.Date; import java.util.List; +import java.util.Locale; import java.util.logging.Level; import org.eclipse.osee.ats.NoteType; import org.eclipse.osee.ats.internal.AtsPlugin; -import org.eclipse.osee.framework.core.data.SystemUser; import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.core.exception.OseeStateException; -import org.eclipse.osee.framework.core.exception.UserNotInDatabase; +import org.eclipse.osee.framework.jdk.core.util.AHTML; import org.eclipse.osee.framework.jdk.core.util.Strings; -import org.eclipse.osee.framework.jdk.core.util.xml.Jaxp; import org.eclipse.osee.framework.logging.OseeLevel; import org.eclipse.osee.framework.logging.OseeLog; import org.eclipse.osee.framework.skynet.core.User; -import org.eclipse.osee.framework.skynet.core.UserManager; import org.eclipse.osee.framework.skynet.core.artifact.Artifact; -import org.w3c.dom.Document; -import org.w3c.dom.Element; -import org.w3c.dom.NodeList; /** * @author Donald G. Dunne @@ -41,8 +37,6 @@ import org.w3c.dom.NodeList; public class ATSNote { private final WeakReference<Artifact> artifactRef; private boolean enabled = true; - private static String ATS_NOTE_TAG = "AtsNote"; - private static String LOG_ITEM_TAG = "Item"; public ATSNote(Artifact artifact) { this.artifactRef = new WeakReference<Artifact>(artifact); @@ -67,7 +61,7 @@ public class ATSNote { if (!enabled) { return; } - NoteItem logItem = new NoteItem(type, state, date.getTime() + "", user, msg); + NoteItem logItem = new NoteItem(type, state, String.valueOf(date.getTime()), user, msg); List<NoteItem> logItems = getNoteItems(); if (logItems.isEmpty()) { logItems = Arrays.asList(logItem); @@ -77,40 +71,11 @@ public class ATSNote { saveNoteItems(logItems); } - public static List<NoteItem> getNoteItems(String str, String hrid) { - List<NoteItem> logItems = new ArrayList<NoteItem>(); - try { - if (Strings.isValid(str)) { - NodeList nodes = Jaxp.readXmlDocument(str).getElementsByTagName(LOG_ITEM_TAG); - for (int i = 0; i < nodes.getLength(); i++) { - Element element = (Element) nodes.item(i); - try { - User user = UserManager.getUserByUserId(element.getAttribute("userId")); - NoteItem item = - new NoteItem(element.getAttribute("type"), element.getAttribute("state"), - element.getAttribute("date"), user, element.getAttribute("msg")); - logItems.add(item); - } catch (UserNotInDatabase ex) { - OseeLog.log(AtsPlugin.class, Level.SEVERE, String.format("Error parsing notes for [%s]", hrid), ex); - NoteItem item = - new NoteItem(element.getAttribute("type"), element.getAttribute("state"), - element.getAttribute("date"), UserManager.getUser(SystemUser.Guest), - element.getAttribute("msg")); - logItems.add(item); - } - } - } - } catch (Exception ex) { - OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex); - } - return logItems; - } - public List<NoteItem> getNoteItems() { try { String xml = getArtifact().getSoleAttributeValue(AtsAttributeTypes.StateNotes, ""); if (Strings.isValid(xml)) { - return getNoteItems(xml, getArtifact().getHumanReadableId()); + return NoteItem.fromXml(xml, getArtifact().getHumanReadableId()); } } catch (Exception ex) { OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex); @@ -120,54 +85,54 @@ public class ATSNote { public void saveNoteItems(List<NoteItem> items) { try { - Document doc = Jaxp.newDocumentNamespaceAware(); - Element rootElement = doc.createElement(ATS_NOTE_TAG); - doc.appendChild(rootElement); - for (NoteItem item : items) { - Element element = doc.createElement(LOG_ITEM_TAG); - element.setAttribute("type", item.getType().name()); - element.setAttribute("state", item.getState()); - element.setAttribute("date", item.getDate().getTime() + ""); - element.setAttribute("userId", item.getUser().getUserId()); - element.setAttribute("msg", item.getMsg()); - rootElement.appendChild(element); - } - getArtifact().setSoleAttributeValue(AtsAttributeTypes.StateNotes, Jaxp.getDocumentXml(doc)); + String xml = NoteItem.toXml(items); + getArtifact().setSoleAttributeValue(AtsAttributeTypes.StateNotes, xml); } catch (Exception ex) { OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, "Can't create ats note document", ex); } } + private boolean hasStateNotesAttribute() { + try { + if (getArtifact().getAttributes(AtsAttributeTypes.StateNotes).isEmpty()) { + return false; + } + } catch (OseeCoreException ex) { + OseeLog.log(AtsPlugin.class, Level.SEVERE, ex); + return false; + } + return true; + } + /** * Display Note Table; If state == null, only display non-state notes Otherwise, show only notes associated with * state */ public String getTable(String state) { - ArrayList<NoteItem> showNotes = new ArrayList<NoteItem>(); - List<NoteItem> noteItems = getNoteItems(); - try { - if (!getArtifact().isAttributeTypeValid(AtsAttributeTypes.StateNotes)) { - return ""; - } - } catch (OseeCoreException ex) { - OseeLog.log(AtsPlugin.class, Level.SEVERE, ex); + if (!hasStateNotesAttribute()) { return ""; } + ArrayList<NoteItem> showNotes = new ArrayList<NoteItem>(); + List<NoteItem> noteItems = getNoteItems(); for (NoteItem li : noteItems) { - if (state == null) { - if (li.getState().equals("")) { - showNotes.add(li); - } - } else if (state.equals("ALL") || li.getState().equals(state)) { + if (state == null && li.getState().equals("")) { + showNotes.add(li); + } else if (state != null && ("ALL".equals(state) || li.getState().equals(state))) { showNotes.add(li); } } if (showNotes.isEmpty()) { return ""; } + return buildTable(showNotes); + } + + private String buildTable(List<NoteItem> showNotes) { StringBuilder builder = new StringBuilder(); - builder.append("<TABLE BORDER=\"1\" cellspacing=\"1\" cellpadding=\"3%\" width=\"100%\"><THEAD><TR><TH>Type</TH><TH>State</TH>" + "<TH>Message</TH><TH>User</TH><TH>Date</TH></THEAD></TR>"); + builder.append(AHTML.beginMultiColumnTable(100, 1)); + builder.append(AHTML.addHeaderRowMultiColumnTable(Arrays.asList("Type", "State", "Message", "User", "Date"))); + DateFormat dateFormat = getDateFormat(); for (NoteItem note : showNotes) { User user = note.getUser(); String name = ""; @@ -177,24 +142,18 @@ public class ATSNote { name = user.getName(); } } - builder.append("<TR>"); - builder.append("<TD>" + note.getType() + "</TD>"); - builder.append("<TD>" + (note.getState().equals("") ? "," : note.getState()) + "</TD>"); - builder.append("<TD>" + (note.getMsg().equals("") ? "," : note.getMsg()) + "</TD>"); - - if (user != null && user.isMe()) { - builder.append("<TD bgcolor=\"#CCCCCC\">" + name + "</TD>"); - } else { - builder.append("<TD>" + name + "</TD>"); - } - - builder.append("<TD>" + new SimpleDateFormat("MM/dd/yyyy h:mm a").format(note.getDate()) + "</TD>"); - builder.append("</TR>"); + builder.append(AHTML.addRowMultiColumnTable(String.valueOf(note.getType()), + (note.getState().isEmpty() ? "," : note.getState()), (note.getMsg().equals("") ? "," : note.getMsg()), + name, dateFormat.format(note.getDate()))); } - builder.append("</TABLE>"); + builder.append(AHTML.endMultiColumnTable()); return builder.toString(); } + public DateFormat getDateFormat() { + return new SimpleDateFormat("MM/dd/yyyy h:mm a", Locale.US); + } + public boolean isEnabled() { return enabled; } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/ATSArtifact.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/AbstractAtsArtifact.java index 5e20bbea5ec..d7c3060e981 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/ATSArtifact.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/AbstractAtsArtifact.java @@ -14,7 +14,6 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Set; -import org.eclipse.osee.ats.hyper.IHyperArtifact; import org.eclipse.osee.ats.util.Overview; import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.core.model.Branch; @@ -24,9 +23,9 @@ import org.eclipse.osee.framework.skynet.core.artifact.ArtifactFactory; import org.eclipse.osee.framework.skynet.core.artifact.IATSArtifact; import org.eclipse.osee.framework.skynet.core.relation.RelationLink; -public abstract class ATSArtifact extends Artifact implements IHyperArtifact, IATSArtifact { +public abstract class AbstractAtsArtifact extends Artifact implements IATSArtifact { - public ATSArtifact(ArtifactFactory parentFactory, String guid, String humanReadableId, Branch branch, ArtifactType artifactType) throws OseeCoreException { + public AbstractAtsArtifact(ArtifactFactory parentFactory, String guid, String humanReadableId, Branch branch, ArtifactType artifactType) throws OseeCoreException { super(parentFactory, guid, humanReadableId, branch, artifactType); } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/ReviewSMArtifact.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/AbstractReviewArtifact.java index db437b400c4..e623abffc3e 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/ReviewSMArtifact.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/AbstractReviewArtifact.java @@ -21,7 +21,6 @@ import org.eclipse.core.runtime.Status; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.ats.util.AtsNotifyUsers; import org.eclipse.osee.ats.util.AtsRelationTypes; -import org.eclipse.osee.ats.util.AtsUtil; import org.eclipse.osee.ats.util.widgets.XActionableItemsDam; import org.eclipse.osee.ats.util.widgets.defect.DefectManager; import org.eclipse.osee.ats.util.widgets.role.UserRole; @@ -31,8 +30,6 @@ import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.core.model.Branch; import org.eclipse.osee.framework.core.model.type.ArtifactType; import org.eclipse.osee.framework.logging.OseeLog; -import org.eclipse.osee.framework.skynet.core.User; -import org.eclipse.osee.framework.skynet.core.UserManager; import org.eclipse.osee.framework.skynet.core.artifact.Artifact; import org.eclipse.osee.framework.skynet.core.artifact.ArtifactFactory; import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction; @@ -40,20 +37,20 @@ import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction; /** * @author Donald G. Dunne */ -public abstract class ReviewSMArtifact extends TaskableStateMachineArtifact { +public abstract class AbstractReviewArtifact extends AbstractTaskableArtifact { protected DefectManager defectManager; protected UserRoleManager userRoleManager; private XActionableItemsDam actionableItemsDam; private Collection<UserRole> preSaveReviewRoleComplete; - Boolean standAlone = null; + private Boolean standAlone = null; public static enum ReviewBlockType { None, Transition, Commit }; - public ReviewSMArtifact(ArtifactFactory parentFactory, String guid, String humanReadableId, Branch branch, ArtifactType artifactType) throws OseeCoreException { + public AbstractReviewArtifact(ArtifactFactory parentFactory, String guid, String humanReadableId, Branch branch, ArtifactType artifactType) throws OseeCoreException { super(parentFactory, guid, humanReadableId, branch, artifactType); } @@ -64,23 +61,6 @@ public abstract class ReviewSMArtifact extends TaskableStateMachineArtifact { }; @Override - public Set<User> getPrivilegedUsers() throws OseeCoreException { - Set<User> users = new HashSet<User>(); - if (getParentTeamWorkflow() != null) { - users.addAll(getParentTeamWorkflow().getPrivilegedUsers()); - } - for (ActionableItemArtifact aia : getActionableItemsDam().getActionableItems()) { - for (TeamDefinitionArtifact teamDef : aia.getImpactedTeamDefs()) { - addPriviledgedUsersUpTeamDefinitionTree(teamDef, users); - } - } - if (AtsUtil.isAtsAdmin()) { - users.add(UserManager.getUser()); - } - return users; - } - - @Override public void onAttributePersist(SkynetTransaction transaction) { super.onAttributePersist(transaction); // Since multiple ways exist to change the assignees, notification is performed on the persist @@ -110,11 +90,10 @@ public abstract class ReviewSMArtifact extends TaskableStateMachineArtifact { public void notifyReviewersComplete() throws OseeCoreException { UserRoleManager userRoleManager = this.getUserRoleManager(); - if (!preSaveReviewRoleComplete.equals(userRoleManager.getRoleUsersReviewComplete())) { - //all reviewers are complete; send notification to author/moderator - if (userRoleManager.getUserRoles(Role.Reviewer).equals(userRoleManager.getRoleUsersReviewComplete())) { - AtsNotifyUsers.getInstance().notify(this, AtsNotifyUsers.NotifyType.Reviewed); - } + //all reviewers are complete; send notification to author/moderator + if (!preSaveReviewRoleComplete.equals(userRoleManager.getRoleUsersReviewComplete()) && userRoleManager.getUserRoles( + Role.Reviewer).equals(userRoleManager.getRoleUsersReviewComplete())) { + AtsNotifyUsers.getInstance().notify(this, AtsNotifyUsers.NotifyType.Reviewed); } preSaveReviewRoleComplete = userRoleManager.getRoleUsersReviewComplete(); } @@ -122,7 +101,7 @@ public abstract class ReviewSMArtifact extends TaskableStateMachineArtifact { /** * Reset managers for case where artifact is re-loaded/initialized * - * @see org.eclipse.osee.ats.artifact.StateMachineArtifact#initialize() + * @see org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact#initialize() */ @Override protected void initializeSMA() throws OseeCoreException { @@ -145,7 +124,7 @@ public abstract class ReviewSMArtifact extends TaskableStateMachineArtifact { String typeStr = getSoleAttributeValue(AtsAttributeTypes.ReviewBlocks, null); if (typeStr == null) { // Check old attribute value - if (getSoleAttributeValue(AtsAttributeTypes.BlockingReview, false) == true) { + if (getSoleAttributeValue(AtsAttributeTypes.BlockingReview, false)) { return ReviewBlockType.Transition; } return ReviewBlockType.None; @@ -160,11 +139,6 @@ public abstract class ReviewSMArtifact extends TaskableStateMachineArtifact { return defectManager; } - @Override - public String getHyperTargetVersion() { - return null; - } - public UserRoleManager getUserRoleManager() { if (userRoleManager == null) { return userRoleManager = new UserRoleManager(this); @@ -172,7 +146,7 @@ public abstract class ReviewSMArtifact extends TaskableStateMachineArtifact { return userRoleManager; } - @SuppressWarnings("unused") + @SuppressWarnings("unused") // NOPMD by b0727536 on 9/29/10 8:50 AM public IStatus isUserRoleValid(String namespace) throws OseeCoreException { // Need this cause it removes all error items of this namespace return new Status(IStatus.OK, namespace, ""); @@ -200,7 +174,7 @@ public abstract class ReviewSMArtifact extends TaskableStateMachineArtifact { } @Override - public StateMachineArtifact getParentSMA() throws OseeCoreException { + public AbstractWorkflowArtifact getParentSMA() throws OseeCoreException { if (isStandAloneReview()) { return null; } @@ -243,7 +217,7 @@ public abstract class ReviewSMArtifact extends TaskableStateMachineArtifact { OseeLog.log(AtsPlugin.class, Level.SEVERE, getArtifactTypeName() + " " + getHumanReadableId() + " has no parent workflow"); } - if (teams.size() > 0) { + if (!teams.isEmpty()) { parentTeamArt = teams.iterator().next(); } return parentTeamArt; diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/TaskableStateMachineArtifact.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/AbstractTaskableArtifact.java index ee765188bf0..bbd8fb133b2 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/TaskableStateMachineArtifact.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/AbstractTaskableArtifact.java @@ -43,21 +43,15 @@ import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkPageDefinition; /** * @author Donald G. Dunne */ -public abstract class TaskableStateMachineArtifact extends StateMachineArtifact { +public abstract class AbstractTaskableArtifact extends AbstractWorkflowArtifact { - public TaskableStateMachineArtifact(ArtifactFactory parentFactory, String guid, String humanReadableId, Branch branch, ArtifactType artifactType) throws OseeCoreException { + public AbstractTaskableArtifact(ArtifactFactory parentFactory, String guid, String humanReadableId, Branch branch, ArtifactType artifactType) throws OseeCoreException { super(parentFactory, guid, humanReadableId, branch, artifactType); registerAtsWorldRelation(AtsRelationTypes.SmaToTask_Task); } - @SuppressWarnings("unused") - @Override - public Set<User> getPrivilegedUsers() throws OseeCoreException { - return null; - } - @Override - public void getSmaArtifactsOneLevel(StateMachineArtifact smaArtifact, Set<Artifact> artifacts) throws OseeCoreException { + public void getSmaArtifactsOneLevel(AbstractWorkflowArtifact smaArtifact, Set<Artifact> artifacts) throws OseeCoreException { super.getSmaArtifactsOneLevel(smaArtifact, artifacts); artifacts.addAll(getTaskArtifacts()); } @@ -68,11 +62,6 @@ public abstract class TaskableStateMachineArtifact extends StateMachineArtifact return null; } - @Override - public String getHyperTargetVersion() { - return null; - } - @SuppressWarnings("unused") @Override public String getWorldViewParentID() throws OseeCoreException { @@ -89,11 +78,6 @@ public abstract class TaskableStateMachineArtifact extends StateMachineArtifact } @Override - public boolean showTaskTab() throws OseeCoreException { - return isTaskable() || isCompleted() || isCancelled(); - } - - @Override public void atsDelete(Set<Artifact> deleteArts, Map<Artifact, Object> allRelated) throws OseeCoreException { super.atsDelete(deleteArts, allRelated); for (TaskArtifact taskArt : getTaskArtifacts()) { @@ -117,21 +101,6 @@ public abstract class TaskableStateMachineArtifact extends StateMachineArtifact return String.valueOf(getNumTasksInWork()); } - public String getStatus(String stateName) throws OseeCoreException { - int completed = 0, cancelled = 0, inWork = 0; - for (TaskArtifact taskArt : getTaskArtifacts(stateName)) { - if (taskArt.isCompleted()) { - completed++; - } else if (taskArt.isCancelled()) { - cancelled++; - } else { - inWork++; - } - } - return String.format("Total: %d - InWork: %d - Completed: %d - Cancelled: %d", - getTaskArtifacts(stateName).size(), inWork, completed, cancelled); - } - public Collection<TaskArtifact> getTaskArtifacts() throws OseeCoreException { return AtsCacheManager.getTaskArtifacts(this); } @@ -320,8 +289,8 @@ public abstract class TaskableStateMachineArtifact extends StateMachineArtifact List<TaskArtifact> tasks = new ArrayList<TaskArtifact>(); for (String title : titles) { TaskArtifact taskArt = createNewTask(title); - if (assignees != null && assignees.size() > 0) { - Set<User> users = new HashSet<User>(); + if (assignees != null && !assignees.isEmpty()) { + Set<User> users = new HashSet<User>(); // NOPMD by b0727536 on 9/29/10 8:51 AM for (User art : assignees) { users.add(art); } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/StateMachineArtifact.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/AbstractWorkflowArtifact.java index 694bbc9bb10..cfd25c5e6c8 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/StateMachineArtifact.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/AbstractWorkflowArtifact.java @@ -23,19 +23,20 @@ import java.util.Set; import java.util.logging.Level; import org.eclipse.nebula.widgets.xviewer.XViewerCells; import org.eclipse.osee.ats.artifact.ATSLog.LogType; -import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact.DefaultTeamState; import org.eclipse.osee.ats.editor.SMAEditor; -import org.eclipse.osee.ats.editor.stateItem.AtsStateItems; +import org.eclipse.osee.ats.editor.stateItem.AtsStateItemManager; import org.eclipse.osee.ats.editor.stateItem.IAtsStateItem; import org.eclipse.osee.ats.internal.AtsPlugin; +import org.eclipse.osee.ats.notify.AtsNotification; import org.eclipse.osee.ats.util.AtsArtifactTypes; import org.eclipse.osee.ats.util.AtsNotifyUsers; import org.eclipse.osee.ats.util.AtsRelationTypes; import org.eclipse.osee.ats.util.AtsUtil; import org.eclipse.osee.ats.util.DeadlineManager; -import org.eclipse.osee.ats.util.Overview; -import org.eclipse.osee.ats.util.Overview.PreviewStyle; +import org.eclipse.osee.ats.util.DefaultTeamState; +import org.eclipse.osee.ats.util.GoalManager; import org.eclipse.osee.ats.util.StateManager; +import org.eclipse.osee.ats.util.TransitionOption; import org.eclipse.osee.ats.util.widgets.ReviewManager; import org.eclipse.osee.ats.workflow.ATSXWidgetOptionResolver; import org.eclipse.osee.ats.workflow.AtsWorkPage; @@ -43,7 +44,6 @@ import org.eclipse.osee.ats.workflow.item.AtsStatePercentCompleteWeightRule; import org.eclipse.osee.ats.workflow.item.AtsWorkDefinitions; import org.eclipse.osee.ats.world.IWorldViewArtifact; import org.eclipse.osee.framework.access.AccessControlManager; -import org.eclipse.osee.framework.core.data.AccessContextId; import org.eclipse.osee.framework.core.data.IArtifactType; import org.eclipse.osee.framework.core.data.SystemUser; import org.eclipse.osee.framework.core.enums.CoreRelationTypes; @@ -72,7 +72,6 @@ import org.eclipse.osee.framework.ui.skynet.FrameworkArtifactImageProvider; import org.eclipse.osee.framework.ui.skynet.group.IGroupExplorerProvider; import org.eclipse.osee.framework.ui.skynet.notify.OseeNotificationManager; import org.eclipse.osee.framework.ui.skynet.util.ChangeType; -import org.eclipse.osee.framework.ui.skynet.util.email.EmailGroup; import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkFlowDefinition; import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkFlowDefinitionFactory; import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkItemDefinition; @@ -83,36 +82,22 @@ import org.eclipse.swt.graphics.Image; /** * @author Donald G. Dunne */ -public abstract class StateMachineArtifact extends ATSArtifact implements HasCmAccessControl, IGroupExplorerProvider, IWorldViewArtifact, ISubscribableArtifact, IFavoriteableArtifact { +public abstract class AbstractWorkflowArtifact extends AbstractAtsArtifact implements HasCmAccessControl, IGroupExplorerProvider, IWorldViewArtifact { private final Set<IRelationEnumeration> atsWorldRelations = new HashSet<IRelationEnumeration>(); - private Collection<User> preSaveStateAssignees; - private User preSaveOriginator; - public static double DEFAULT_HOURS_PER_WORK_DAY = 8; + private Collection<User> transitionAssignees; protected WorkFlowDefinition workFlowDefinition; - protected Artifact parent; - protected StateMachineArtifact parentSma; + protected AbstractWorkflowArtifact parentSma; protected TeamWorkFlowArtifact parentTeamArt; protected ActionArtifact parentAction; - private Collection<User> transitionAssignees; - private static String SEPERATOR = "; "; private StateManager stateMgr; private DeadlineManager deadlineMgr; private SMAEditor editor; private ATSLog atsLog; private ATSNote atsNote; - private static final AtsStateItems stateItems = new AtsStateItems(); private boolean inTransition = false; - public static enum TransitionOption { - None, - Persist, - // Override check whether workflow allows transition to state - OverrideTransitionValidityCheck, - // Allows transition to occur with UnAssigned, OseeSystem or Guest - OverrideAssigneeCheck - }; - - public StateMachineArtifact(ArtifactFactory parentFactory, String guid, String humanReadableId, Branch branch, ArtifactType artifactType) throws OseeCoreException { + + public AbstractWorkflowArtifact(ArtifactFactory parentFactory, String guid, String humanReadableId, Branch branch, ArtifactType artifactType) throws OseeCoreException { super(parentFactory, guid, humanReadableId, branch, artifactType); } @@ -145,26 +130,13 @@ public abstract class StateMachineArtifact extends ATSArtifact implements HasCmA stateMgr = new StateManager(this); atsLog = new ATSLog(this); atsNote = new ATSNote(this); - preSaveStateAssignees = getStateMgr().getAssignees(); - if (getOriginator() == null) { - preSaveOriginator = UserManager.getUser(); - } else { - preSaveOriginator = getOriginator(); - } + AtsNotification.notifyNewAssigneesAndReset(this, true); + AtsNotification.notifyOriginatorAndReset(this, true); } catch (Exception ex) { OseeLog.log(AtsPlugin.class, Level.SEVERE, ex); } } - public boolean hasAtsWorldChildren() throws OseeCoreException { - for (IRelationEnumeration iRelationEnumeration : atsWorldRelations) { - if (getRelatedArtifactsCount(iRelationEnumeration) > 0) { - return true; - } - } - return false; - } - public String getHelpContext() { return "atsWorkflowEditorWorkflowTab"; } @@ -196,18 +168,6 @@ public abstract class StateMachineArtifact extends ATSArtifact implements HasCmA return Artifacts.toString("; ", getImplementers()); } - public Collection<User> getImplementersByState(String stateName) throws OseeCoreException { - if (isCancelled()) { - return Arrays.asList(getLog().getCancelledLogItem().getUser()); - } - Collection<User> users = new HashSet<User>(getStateMgr().getAssignees(stateName)); - LogItem item = getLog().getCompletedLogItem(); - if (item != null) { - users.add(item.getUser()); - } - return users; - } - @SuppressWarnings("unused") public Collection<User> getImplementers() throws OseeCoreException { return Collections.emptyList(); @@ -242,81 +202,25 @@ public abstract class StateMachineArtifact extends ATSArtifact implements HasCmA return; } try { - notifyNewAssigneesAndReset(); - notifyOriginatorAndReset(); + AtsNotification.notifyNewAssigneesAndReset(this, false); + AtsNotification.notifyOriginatorAndReset(this, false); } catch (Exception ex) { OseeLog.log(AtsPlugin.class, Level.SEVERE, ex); } } - /** - * Override to apply different algorithm to current section expansion. - * - * @return true if section should be expanded - */ - public boolean isCurrentSectionExpanded(String stateName) throws OseeCoreException { - return getStateMgr().getCurrentStateName().equals(stateName); - } - - public void notifyNewAssigneesAndReset() throws OseeCoreException { - if (preSaveStateAssignees == null) { - preSaveStateAssignees = getStateMgr().getAssignees(); - return; - } - Set<User> newAssignees = new HashSet<User>(); - for (User user : getStateMgr().getAssignees()) { - if (!preSaveStateAssignees.contains(user)) { - newAssignees.add(user); - } - } - preSaveStateAssignees = getStateMgr().getAssignees(); - if (newAssignees.isEmpty()) { - return; - } - try { - // These will be processed upon save - AtsNotifyUsers.getInstance().notify(this, newAssignees, AtsNotifyUsers.NotifyType.Assigned); - } catch (OseeCoreException ex) { - OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex); - } - } - - public void notifyOriginatorAndReset() throws OseeCoreException { - if (preSaveOriginator != null && getOriginator() != null && !getOriginator().equals(preSaveOriginator)) { - AtsNotifyUsers.getInstance().notify(this, AtsNotifyUsers.NotifyType.Originator); - } - preSaveOriginator = getOriginator(); - } - @SuppressWarnings("unused") public boolean isValidationRequired() throws OseeCoreException { return false; } - public abstract Set<User> getPrivilegedUsers() throws OseeCoreException; - @Override public String getDescription() { return ""; } - public ArrayList<EmailGroup> getEmailableGroups() throws OseeCoreException { - ArrayList<EmailGroup> groupNames = new ArrayList<EmailGroup>(); - ArrayList<String> emails = new ArrayList<String>(); - emails.add(getOriginator().getEmail()); - groupNames.add(new EmailGroup("Originator", emails)); - if (getStateMgr().getAssignees().size() > 0) { - emails = new ArrayList<String>(); - for (User u : getStateMgr().getAssignees()) { - emails.add(u.getEmail()); - } - groupNames.add(new EmailGroup("Assignees", emails)); - } - return groupNames; - } - @SuppressWarnings("unused") - public StateMachineArtifact getParentSMA() throws OseeCoreException { + public AbstractWorkflowArtifact getParentSMA() throws OseeCoreException { return parentSma; } @@ -330,45 +234,6 @@ public abstract class StateMachineArtifact extends ATSArtifact implements HasCmA return parentTeamArt; } - public String getPreviewHtml() throws OseeCoreException { - return getPreviewHtml(PreviewStyle.NONE); - } - - public String getPreviewHtml(PreviewStyle... styles) throws OseeCoreException { - Overview o = new Overview(); - o.addHeader(this, styles); - o.addFooter(this, styles); - return o.getPage(); - } - - public boolean isUnCancellable() { - try { - LogItem item = getLog().getStateEvent(LogType.StateCancelled); - if (item == null) { - throw new OseeArgumentException("No Cancelled Event"); - } - for (WorkPageDefinition toWorkPageDefinition : getWorkFlowDefinition().getToPages(getWorkPageDefinition())) { - if (toWorkPageDefinition.getPageName().equals(item.getState())) { - return true; - } - } - } catch (Exception ex) { - OseeLog.log(AtsPlugin.class, Level.SEVERE, ex); - } - return false; - } - - public boolean isTaskable() throws OseeCoreException { - if (isCompleted() || isCancelled()) { - return false; - } - return true; - } - - public boolean showTaskTab() throws OseeCoreException { - return isTaskable(); - } - public String getEditorTitle() throws OseeCoreException { return getWorldViewType() + ": " + getName(); } @@ -406,81 +271,6 @@ public abstract class StateMachineArtifact extends ATSArtifact implements HasCmA } @Override - public void addSubscribed(User user, SkynetTransaction transaction) throws OseeCoreException { - if (!getRelatedArtifacts(AtsRelationTypes.SubscribedUser_User).contains(user)) { - addRelation(AtsRelationTypes.SubscribedUser_User, user); - persist(transaction); - } - - } - - @Override - public void removeSubscribed(User user, SkynetTransaction transaction) throws OseeCoreException { - deleteRelation(AtsRelationTypes.SubscribedUser_User, user); - persist(transaction); - } - - @Override - public boolean isSubscribed(User user) throws OseeCoreException { - return getRelatedArtifacts(AtsRelationTypes.SubscribedUser_User).contains(user); - } - - @Override - public ArrayList<User> getSubscribed() throws OseeCoreException { - ArrayList<User> arts = new ArrayList<User>(); - for (Artifact art : getRelatedArtifacts(AtsRelationTypes.SubscribedUser_User)) { - arts.add((User) art); - } - return arts; - } - - @Override - public void addFavorite(User user, SkynetTransaction transaction) throws OseeCoreException { - if (!getRelatedArtifacts(AtsRelationTypes.FavoriteUser_User).contains(user)) { - addRelation(AtsRelationTypes.FavoriteUser_User, user); - persist(transaction); - } - } - - @Override - public void removeFavorite(User user, SkynetTransaction transaction) throws OseeCoreException { - deleteRelation(AtsRelationTypes.FavoriteUser_User, user); - persist(transaction); - } - - @Override - public boolean isFavorite(User user) throws OseeCoreException { - return getRelatedArtifacts(AtsRelationTypes.FavoriteUser_User).contains(user); - } - - @Override - public ArrayList<User> getFavorites() throws OseeCoreException { - ArrayList<User> arts = new ArrayList<User>(); - for (Artifact art : getRelatedArtifacts(AtsRelationTypes.FavoriteUser_User)) { - arts.add((User) art); - } - return arts; - } - - @Override - public boolean amISubscribed() { - try { - return isSubscribed(UserManager.getUser()); - } catch (OseeCoreException ex) { - return false; - } - } - - @Override - public boolean amIFavorite() { - try { - return isFavorite(UserManager.getUser()); - } catch (OseeCoreException ex) { - return false; - } - } - - @Override public void atsDelete(Set<Artifact> deleteArts, Map<Artifact, Object> allRelated) throws OseeCoreException { SMAEditor.close(Collections.singleton(this), true); super.atsDelete(deleteArts, allRelated); @@ -499,7 +289,7 @@ public abstract class StateMachineArtifact extends ATSArtifact implements HasCmA } @Override - public String getWorldViewState() throws OseeCoreException { + public String getWorldViewState() { return getStateMgr().getCurrentStateName(); } @@ -508,10 +298,8 @@ public abstract class StateMachineArtifact extends ATSArtifact implements HasCmA @Override public String getWorldViewActivePoc() throws OseeCoreException { if (isCancelledOrCompleted()) { - if (implementersStr == null) { - if (getImplementers().size() > 0) { - implementersStr = "(" + Artifacts.toString("; ", getImplementers()) + ")"; - } + if (implementersStr == null && !getImplementers().isEmpty()) { + implementersStr = "(" + Artifacts.toString("; ", getImplementers()) + ")"; } return implementersStr; } @@ -618,17 +406,17 @@ public abstract class StateMachineArtifact extends ATSArtifact implements HasCmA } public double getEstimatedHoursFromTasks(String relatedToState) throws OseeCoreException { - if (!(this instanceof TaskableStateMachineArtifact)) { + if (!(this instanceof AbstractTaskableArtifact)) { return 0; } - return ((TaskableStateMachineArtifact) this).getEstimatedHoursFromTasks(relatedToState); + return ((AbstractTaskableArtifact) this).getEstimatedHoursFromTasks(relatedToState); } public double getEstimatedHoursFromTasks() throws OseeCoreException { - if (!(this instanceof TaskableStateMachineArtifact)) { + if (!(this instanceof AbstractTaskableArtifact)) { return 0; } - return ((TaskableStateMachineArtifact) this).getEstimatedHoursFromTasks(); + return ((AbstractTaskableArtifact) this).getEstimatedHoursFromTasks(); } public double getEstimatedHoursFromReviews() throws OseeCoreException { @@ -683,8 +471,7 @@ public abstract class StateMachineArtifact extends ATSArtifact implements HasCmA if (est == 0) { return getEstimatedHoursFromArtifact(); } - double remain = est - est * getPercentCompleteSMATotal() / 100.0; - return remain; + return est - est * getPercentCompleteSMATotal() / 100.0; } public double getRemainHoursTotal() throws OseeCoreException { @@ -692,10 +479,10 @@ public abstract class StateMachineArtifact extends ATSArtifact implements HasCmA } public double getRemainFromTasks() throws OseeCoreException { - if (!(this instanceof TaskableStateMachineArtifact)) { + if (!(this instanceof AbstractTaskableArtifact)) { return 0; } - return ((TaskableStateMachineArtifact) this).getRemainHoursFromTasks(); + return ((AbstractTaskableArtifact) this).getRemainHoursFromTasks(); } public double getRemainFromReviews() throws OseeCoreException { @@ -755,7 +542,7 @@ public abstract class StateMachineArtifact extends ATSArtifact implements HasCmA @SuppressWarnings("unused") public double getManHrsPerDayPreference() throws OseeCoreException { - return DEFAULT_HOURS_PER_WORK_DAY; + return AtsUtil.DEFAULT_HOURS_PER_WORK_DAY; } @SuppressWarnings("unused") @@ -844,10 +631,10 @@ public abstract class StateMachineArtifact extends ATSArtifact implements HasCmA @Override public String getWorldViewNumberOfTasks() throws OseeCoreException { - if (!(this instanceof TaskableStateMachineArtifact)) { + if (!(this instanceof AbstractTaskableArtifact)) { return ""; } - int num = ((TaskableStateMachineArtifact) this).getTaskArtifacts().size(); + int num = ((AbstractTaskableArtifact) this).getTaskArtifacts().size(); if (num == 0) { return ""; } @@ -914,7 +701,7 @@ public abstract class StateMachineArtifact extends ATSArtifact implements HasCmA } @SuppressWarnings("unused") - public void getSmaArtifactsOneLevel(StateMachineArtifact smaArtifact, Set<Artifact> artifacts) throws OseeCoreException { + public void getSmaArtifactsOneLevel(AbstractWorkflowArtifact smaArtifact, Set<Artifact> artifacts) throws OseeCoreException { artifacts.add(smaArtifact); } @@ -986,50 +773,6 @@ public abstract class StateMachineArtifact extends ATSArtifact implements HasCmA // provided for subclass implementation } - @Override - public String getHyperName() { - return getName(); - } - - @Override - public String getHyperType() { - try { - return getArtifactTypeName(); - } catch (Exception ex) { - return ex.getLocalizedMessage(); - } - } - - @Override - public String getHyperState() { - try { - return getStateMgr().getCurrentStateName(); - } catch (OseeCoreException ex) { - OseeLog.log(AtsPlugin.class, Level.SEVERE, ex); - } - return ""; - } - - @Override - public String getHyperAssignee() { - try { - return Artifacts.toString("; ", getStateMgr().getAssignees()); - } catch (OseeCoreException ex) { - OseeLog.log(AtsPlugin.class, Level.SEVERE, ex); - } - return ""; - } - - @Override - public Image getHyperAssigneeImage() throws OseeCoreException { - return getAssigneeImage(); - } - - @Override - public Artifact getHyperArtifact() { - return this; - } - @SuppressWarnings("unused") @Override public String getWorldViewDecision() throws OseeCoreException { @@ -1071,7 +814,7 @@ public abstract class StateMachineArtifact extends ATSArtifact implements HasCmA } public static Set<IArtifactType> getAllSMAType() throws OseeCoreException { - Set<IArtifactType> artTypeNames = TeamWorkflowExtensions.getInstance().getAllTeamWorkflowArtifactTypes(); + Set<IArtifactType> artTypeNames = TeamWorkflowExtensions.getAllTeamWorkflowArtifactTypes(); artTypeNames.add(AtsArtifactTypes.Task); artTypeNames.add(AtsArtifactTypes.DecisionReview); artTypeNames.add(AtsArtifactTypes.PeerToPeerReview); @@ -1088,7 +831,7 @@ public abstract class StateMachineArtifact extends ATSArtifact implements HasCmA public static List<TeamWorkFlowArtifact> getAllTeamWorkflowArtifacts() throws OseeCoreException { List<TeamWorkFlowArtifact> result = new ArrayList<TeamWorkFlowArtifact>(); - for (IArtifactType artType : TeamWorkflowExtensions.getInstance().getAllTeamWorkflowArtifactTypes()) { + for (IArtifactType artType : TeamWorkflowExtensions.getAllTeamWorkflowArtifactTypes()) { List<TeamWorkFlowArtifact> teamArts = org.eclipse.osee.framework.jdk.core.util.Collections.castAll(ArtifactQuery.getArtifactListFromType(artType, AtsUtil.getAtsBranch())); @@ -1138,10 +881,10 @@ public abstract class StateMachineArtifact extends ATSArtifact implements HasCmA * Return hours spent working ONLY on tasks related to stateName */ public double getHoursSpentSMAStateTasks(String stateName) throws OseeCoreException { - if (!(this instanceof TaskableStateMachineArtifact)) { + if (!(this instanceof AbstractTaskableArtifact)) { return 0; } - return ((TaskableStateMachineArtifact) this).getHoursSpentFromTasks(stateName); + return ((AbstractTaskableArtifact) this).getHoursSpentFromTasks(stateName); } /** @@ -1188,10 +931,10 @@ public abstract class StateMachineArtifact extends ATSArtifact implements HasCmA * Return Percent Complete ONLY on tasks related to stateName. Total Percent / # Tasks */ public int getPercentCompleteSMAStateTasks(String stateName) throws OseeCoreException { - if (!(this instanceof TaskableStateMachineArtifact)) { + if (!(this instanceof AbstractTaskableArtifact)) { return 0; } - return ((TaskableStateMachineArtifact) this).getPercentCompleteFromTasks(stateName); + return ((AbstractTaskableArtifact) this).getPercentCompleteFromTasks(stateName); } /** @@ -1222,7 +965,7 @@ public abstract class StateMachineArtifact extends ATSArtifact implements HasCmA return 100; } Map<String, Double> stateToWeightMap = getStatePercentCompleteWeight(); - if (stateToWeightMap.size() > 0) { + if (!stateToWeightMap.isEmpty()) { // Calculate total percent using configured weighting int percent = 0; for (String stateName : getWorkFlowDefinition().getPageNames()) { @@ -1278,8 +1021,8 @@ public abstract class StateMachineArtifact extends ATSArtifact implements HasCmA int numObjects = 1; // the state itself is one object // Add percent for each task and bump objects for each task - if (this instanceof TaskableStateMachineArtifact) { - Collection<TaskArtifact> tasks = ((TaskableStateMachineArtifact) this).getTaskArtifacts(stateName); + if (this instanceof AbstractTaskableArtifact) { + Collection<TaskArtifact> tasks = ((AbstractTaskableArtifact) this).getTaskArtifacts(stateName); for (TaskArtifact taskArt : tasks) { percent += taskArt.getPercentCompleteSMATotal(); } @@ -1288,8 +1031,8 @@ public abstract class StateMachineArtifact extends ATSArtifact implements HasCmA // Add percent for each review and bump objects for each review if (isTeamWorkflow()) { - Collection<ReviewSMArtifact> reviews = ReviewManager.getReviews((TeamWorkFlowArtifact) this, stateName); - for (ReviewSMArtifact reviewArt : reviews) { + Collection<AbstractReviewArtifact> reviews = ReviewManager.getReviews((TeamWorkFlowArtifact) this, stateName); + for (AbstractReviewArtifact reviewArt : reviews) { percent += reviewArt.getPercentCompleteSMATotal(); } numObjects += reviews.size(); @@ -1416,7 +1159,7 @@ public abstract class StateMachineArtifact extends ATSArtifact implements HasCmA } @Override - public String getGroupExplorerName() throws OseeCoreException { + public String getGroupExplorerName() { return String.format("[%s] %s", getStateMgr().getCurrentStateName(), getName()); } @@ -1519,8 +1262,8 @@ public abstract class StateMachineArtifact extends ATSArtifact implements HasCmA if (isTeamWorkflow()) { teamArt = (TeamWorkFlowArtifact) this; } - if (this instanceof ReviewSMArtifact) { - teamArt = ((ReviewSMArtifact) this).getParentTeamWorkflow(); + if (this instanceof AbstractReviewArtifact) { + teamArt = ((AbstractReviewArtifact) this).getParentTeamWorkflow(); } if (teamArt == null) { return false; @@ -1571,7 +1314,7 @@ public abstract class StateMachineArtifact extends ATSArtifact implements HasCmA return verArt.isReleased(); } } catch (Exception ex) { - // Do Nothing + OseeLog.log(AtsPlugin.class, Level.SEVERE, ex); } return false; } @@ -1583,7 +1326,7 @@ public abstract class StateMachineArtifact extends ATSArtifact implements HasCmA return verArt.isVersionLocked(); } } catch (Exception ex) { - // Do Nothing + OseeLog.log(AtsPlugin.class, Level.SEVERE, ex); } return false; } @@ -1592,19 +1335,19 @@ public abstract class StateMachineArtifact extends ATSArtifact implements HasCmA return getWorldViewTargetedVersion(); } - public boolean isCompleted() throws OseeCoreException { + public boolean isCompleted() { return stateMgr.getCurrentStateName().equals(DefaultTeamState.Completed.name()); } - public boolean isCancelled() throws OseeCoreException { + public boolean isCancelled() { return stateMgr.getCurrentStateName().equals(DefaultTeamState.Cancelled.name()); } - public boolean isCancelledOrCompleted() throws OseeCoreException { + public boolean isCancelledOrCompleted() { return isCompleted() || isCancelled(); } - public boolean isCurrentState(String stateName) throws OseeCoreException { + public boolean isCurrentState(String stateName) { return stateName.equals(stateMgr.getCurrentStateName()); } @@ -1624,10 +1367,10 @@ public abstract class StateMachineArtifact extends ATSArtifact implements HasCmA public Collection<User> getTransitionAssignees() throws OseeCoreException { if (transitionAssignees != null) { - if (transitionAssignees.size() > 0 && transitionAssignees.contains(UserManager.getUser(SystemUser.UnAssigned))) { + if (!transitionAssignees.isEmpty() && transitionAssignees.contains(UserManager.getUser(SystemUser.UnAssigned))) { transitionAssignees.remove(UserManager.getUser(SystemUser.UnAssigned)); } - if (transitionAssignees.size() > 0) { + if (!transitionAssignees.isEmpty()) { return transitionAssignees; } } @@ -1635,11 +1378,7 @@ public abstract class StateMachineArtifact extends ATSArtifact implements HasCmA } public String getTransitionAssigneesStr() throws OseeCoreException { - StringBuffer sb = new StringBuffer(); - for (User u : getTransitionAssignees()) { - sb.append(u.getName() + SEPERATOR); - } - return sb.toString().replaceFirst(SEPERATOR + "$", ""); + return org.eclipse.osee.framework.jdk.core.util.Collections.toString(";", getTransitionAssignees()); } public Result transitionToCancelled(String reason, SkynetTransaction transaction, TransitionOption... transitionOption) { @@ -1696,7 +1435,7 @@ public abstract class StateMachineArtifact extends ATSArtifact implements HasCmA } // Check extension points for valid transition - List<IAtsStateItem> atsStateItems = stateItems.getStateItems(fromWorkPageDefinition.getId()); + List<IAtsStateItem> atsStateItems = AtsStateItemManager.getStateItems(fromWorkPageDefinition.getId()); for (IAtsStateItem item : atsStateItems) { Result result = item.transitioning(this, fromWorkPageDefinition.getPageName(), toStateName, toAssignees); if (result.isFalse()) { @@ -1763,7 +1502,7 @@ public abstract class StateMachineArtifact extends ATSArtifact implements HasCmA atsLog.addLog(LogType.StateCancelled, stateMgr.getCurrentStateName(), completeOrCancelReason); } else { atsLog.addLog(LogType.StateComplete, stateMgr.getCurrentStateName(), - (completeOrCancelReason != null ? completeOrCancelReason : "")); + (completeOrCancelReason == null ? "" : completeOrCancelReason)); } atsLog.addLog(LogType.StateEntered, toStateName, ""); @@ -1784,10 +1523,10 @@ public abstract class StateMachineArtifact extends ATSArtifact implements HasCmA transitioned(fromPage, toPage, toAssignees, true, transaction); // Notify extension points of transition - for (IAtsStateItem item : stateItems.getStateItems(fromPage.getId())) { + for (IAtsStateItem item : AtsStateItemManager.getStateItems(fromPage.getId())) { item.transitioned(this, fromPage.getPageName(), toStateName, toAssignees, transaction); } - for (IAtsStateItem item : stateItems.getStateItems(toPage.getId())) { + for (IAtsStateItem item : AtsStateItemManager.getStateItems(toPage.getId())) { item.transitioned(this, fromPage.getPageName(), toStateName, toAssignees, transaction); } } @@ -1800,10 +1539,6 @@ public abstract class StateMachineArtifact extends ATSArtifact implements HasCmA this.editor = editor; } - public AtsStateItems getStateItems() { - return stateItems; - } - public boolean isInTransition() { return inTransition; } @@ -1830,7 +1565,7 @@ public abstract class StateMachineArtifact extends ATSArtifact implements HasCmA @Override public String getWorldViewGoalOrder() throws OseeCoreException { - return GoalArtifact.getGoalOrder(this); + return GoalManager.getGoalOrder(this); } public AtsWorkPage getCurrentAtsWorkPage() throws OseeCoreException { @@ -1868,39 +1603,6 @@ public abstract class StateMachineArtifact extends ATSArtifact implements HasCmA return ""; } - public Map<String, String> getSMADetails() throws OseeCoreException { - Map<String, String> details = Artifacts.getDetailsKeyValues(this); - details.put("Workflow Definition", getWorkFlowDefinition().getName()); - if (getParentActionArtifact() != null) { - details.put("Action Id", getParentActionArtifact().getHumanReadableId()); - } - if (!(this instanceof TeamWorkFlowArtifact) && getParentTeamWorkflow() != null) { - details.put("Parent Team Workflow Id", getParentTeamWorkflow().getHumanReadableId()); - } - if (this.isOfType(AtsArtifactTypes.TeamWorkflow)) { - String message = null; - CmAccessControl accessControl = getAccessControl(); - if (accessControl != null) { - Collection<? extends AccessContextId> ids = accessControl.getContextId(UserManager.getUser(), this); - message = ids.toString(); - } else { - message = "AtsCmAccessControlService not started"; - } - details.put("Access Context Id", message); - } - return details; - } - - protected void addPriviledgedUsersUpTeamDefinitionTree(TeamDefinitionArtifact tda, Set<User> users) throws OseeCoreException { - users.addAll(tda.getLeads()); - users.addAll(tda.getPrivilegedMembers()); - - // Walk up tree to get other editors - if (tda.getParent() != null && tda.getParent() instanceof TeamDefinitionArtifact) { - addPriviledgedUsersUpTeamDefinitionTree((TeamDefinitionArtifact) tda.getParent(), users); - } - } - @Override public CmAccessControl getAccessControl() { return AtsPlugin.getInstance().getCmService(); diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/ActionArtifact.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/ActionArtifact.java index 91bf4460df0..151f145c413 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/ActionArtifact.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/ActionArtifact.java @@ -8,48 +8,35 @@ * Contributors: * Boeing - initial API and implementation *******************************************************************************/ - package org.eclipse.osee.ats.artifact; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collection; import java.util.Date; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; -import java.util.concurrent.CopyOnWriteArrayList; import java.util.logging.Level; import org.eclipse.nebula.widgets.xviewer.XViewerCells; -import org.eclipse.osee.ats.actions.wizard.IAtsTeamWorkflow; -import org.eclipse.osee.ats.artifact.ATSLog.LogType; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.ats.util.AtsArtifactTypes; import org.eclipse.osee.ats.util.AtsPriority.PriorityType; import org.eclipse.osee.ats.util.AtsRelationTypes; -import org.eclipse.osee.ats.util.AtsUtil; -import org.eclipse.osee.ats.util.widgets.dialog.AICheckTreeDialog; +import org.eclipse.osee.ats.util.GoalManager; import org.eclipse.osee.ats.world.IWorldViewArtifact; -import org.eclipse.osee.framework.core.data.IArtifactType; -import org.eclipse.osee.framework.core.enums.Active; import org.eclipse.osee.framework.core.enums.CoreRelationTypes; -import org.eclipse.osee.framework.core.exception.OseeArgumentException; import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.core.model.Branch; import org.eclipse.osee.framework.core.model.type.ArtifactType; import org.eclipse.osee.framework.jdk.core.util.Collections; import org.eclipse.osee.framework.jdk.core.util.DateUtil; -import org.eclipse.osee.framework.jdk.core.util.Strings; import org.eclipse.osee.framework.logging.OseeLog; import org.eclipse.osee.framework.skynet.core.User; -import org.eclipse.osee.framework.skynet.core.UserManager; import org.eclipse.osee.framework.skynet.core.artifact.Artifact; import org.eclipse.osee.framework.skynet.core.artifact.ArtifactFactory; -import org.eclipse.osee.framework.skynet.core.artifact.ArtifactTypeManager; import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction; import org.eclipse.osee.framework.skynet.core.utility.Artifacts; -import org.eclipse.osee.framework.ui.plugin.util.AWorkbench; import org.eclipse.osee.framework.ui.plugin.util.Result; import org.eclipse.osee.framework.ui.skynet.util.ChangeType; import org.eclipse.swt.graphics.Image; @@ -57,7 +44,7 @@ import org.eclipse.swt.graphics.Image; /** * @author Donald G. Dunne */ -public class ActionArtifact extends ATSArtifact implements IWorldViewArtifact { +public class ActionArtifact extends AbstractAtsArtifact implements IWorldViewArtifact { public static enum CreateTeamOption { Duplicate_If_Exists; // If option exists, then duplication of workflow of same team definition is allowed @@ -95,7 +82,7 @@ public class ActionArtifact extends ATSArtifact implements IWorldViewArtifact { private void resetTitleOffChildren() throws OseeCoreException { String title = ""; for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) { - if (title.equals("")) { + if (title.isEmpty()) { title = team.getName(); } else if (!title.equals(team.getName())) { return; @@ -125,7 +112,7 @@ public class ActionArtifact extends ATSArtifact implements IWorldViewArtifact { private void resetDescriptionOffChildren() throws OseeCoreException { String desc = ""; for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) { - if (desc.equals("")) { + if (desc.isEmpty()) { desc = team.getSoleAttributeValue(AtsAttributeTypes.Description, ""); } else if (!desc.equals(team.getSoleAttributeValue(AtsAttributeTypes.Description, ""))) { return; @@ -134,7 +121,7 @@ public class ActionArtifact extends ATSArtifact implements IWorldViewArtifact { if (!desc.equals(getSoleAttributeValue(AtsAttributeTypes.Description, ""))) { setSoleAttributeValue(AtsAttributeTypes.Description, desc); } - if (desc.equals("")) { + if (desc.isEmpty()) { deleteSoleAttribute(AtsAttributeTypes.Description); } } @@ -158,7 +145,6 @@ public class ActionArtifact extends ATSArtifact implements IWorldViewArtifact { if (changeType != null && getChangeType() != changeType) { setChangeType(changeType); } - return; } private void resetPriorityOffChildren() throws OseeCoreException { @@ -180,7 +166,6 @@ public class ActionArtifact extends ATSArtifact implements IWorldViewArtifact { if (priorityType != null && getPriority() != priorityType) { setPriority(priorityType); } - return; } private void resetUserCommunityOffChildren() throws OseeCoreException { @@ -230,46 +215,46 @@ public class ActionArtifact extends ATSArtifact implements IWorldViewArtifact { @Override public String getWorldViewBranchStatus() throws OseeCoreException { - StringBuffer sb = new StringBuffer(); + Set<String> strs = new HashSet<String>(); for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) { if (!team.getWorldViewBranchStatus().equals("")) { - sb.append(team.getWorldViewBranchStatus() + ", "); + strs.add(team.getWorldViewBranchStatus()); } } - return sb.toString().replaceFirst(", $", ""); + return Collections.toString(", ", strs); } @Override public String getWorldViewPoint() throws OseeCoreException { - StringBuffer sb = new StringBuffer(); + Set<String> strs = new HashSet<String>(); for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) { if (!team.getWorldViewPoint().equals("")) { - sb.append(team.getWorldViewPoint() + ", "); + strs.add(team.getWorldViewPoint()); } } - return sb.toString().replaceFirst(", $", ""); + return Collections.toString(", ", strs); } @Override public String getWorldViewNumberOfTasks() throws OseeCoreException { - StringBuffer sb = new StringBuffer(); + Set<String> strs = new HashSet<String>(); for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) { if (!team.getWorldViewNumberOfTasks().equals("")) { - sb.append(team.getWorldViewNumberOfTasks() + ", "); + strs.add(team.getWorldViewNumberOfTasks()); } } - return sb.toString().replaceFirst(", $", ""); + return Collections.toString(", ", strs); } @Override public String getWorldViewNumberOfTasksRemaining() throws OseeCoreException { - StringBuffer sb = new StringBuffer(); + Set<String> strs = new HashSet<String>(); for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) { if (!team.getWorldViewNumberOfTasksRemaining().equals("")) { - sb.append(team.getWorldViewNumberOfTasksRemaining() + ", "); + strs.add(team.getWorldViewNumberOfTasksRemaining()); } } - return sb.toString().replaceFirst(", $", ""); + return Collections.toString(", ", strs); } @Override @@ -301,7 +286,8 @@ public class ActionArtifact extends ATSArtifact implements IWorldViewArtifact { pocs.addAll(team.getStateMgr().getAssignees()); } } - return Artifacts.toString("; ", pocs) + (implementers.size() > 0 ? "(" + Artifacts.toString("; ", implementers) + ")" : ""); + return Artifacts.toString("; ", pocs) + (implementers.isEmpty() ? "" : "(" + Artifacts.toString("; ", + implementers) + ")"); } @Override @@ -574,268 +560,6 @@ public class ActionArtifact extends ATSArtifact implements IWorldViewArtifact { } @Override - public String getHyperName() { - return getName(); - } - - @Override - public String getHyperType() { - try { - return getArtifactTypeName(); - } catch (Exception ex) { - return ex.getLocalizedMessage(); - } - } - - @Override - public String getHyperState() { - try { - if (getTeamWorkFlowArtifacts().size() == 1) { - return getTeamWorkFlowArtifacts().iterator().next().getHyperState(); - } - } catch (Exception ex) { - return XViewerCells.getCellExceptionString(ex); - } - return ""; - } - - @Override - public String getHyperTargetVersion() { - return null; - } - - @Override - public String getHyperAssignee() { - try { - if (getTeamWorkFlowArtifacts().size() == 1) { - return getTeamWorkFlowArtifacts().iterator().next().getHyperAssignee(); - } - } catch (Exception ex) { - return XViewerCells.getCellExceptionString(ex); - } - return ""; - } - - @Override - public Image getHyperAssigneeImage() throws OseeCoreException { - if (getTeamWorkFlowArtifacts().size() == 1) { - return getTeamWorkFlowArtifacts().iterator().next().getHyperAssigneeImage(); - } - return null; - } - - @Override - public Artifact getHyperArtifact() { - return this; - } - - public Result editActionableItems() throws OseeCoreException { - final AICheckTreeDialog diag = - new AICheckTreeDialog( - "Add Impacted Actionable Items", - "Select New Impacted Actionable Items\n\n" + "Note: Un-selecting existing items will NOT remove the impact.\n" + "Team Workflow with no impact should be transitioned to Cancelled.", - Active.Active); - - diag.setInitialAias(getActionableItems()); - if (diag.open() != 0) { - return Result.FalseResult; - } - - // ensure that at least one actionable item exists for each team after aias added/removed - for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) { - Set<ActionableItemArtifact> currentAias = team.getActionableItemsDam().getActionableItems(); - Collection<ActionableItemArtifact> checkedAias = diag.getChecked(); - for (ActionableItemArtifact aia : new CopyOnWriteArrayList<ActionableItemArtifact>(currentAias)) { - if (!checkedAias.contains(aia)) { - currentAias.remove(aia); - } - } - if (currentAias.isEmpty()) { - return new Result("Can not remove all actionable items for a team.\n\nActionable Items will go to 0 for [" + - // - team.getTeamName() + "][" + team.getHumanReadableId() + "]\n\nCancel team workflow instead."); - } - } - - final StringBuffer sb = new StringBuffer(); - SkynetTransaction transaction = new SkynetTransaction(AtsUtil.getAtsBranch(), "Edit Actionable Items"); - - // Add new aias - for (ActionableItemArtifact aia : diag.getChecked()) { - Result result = addActionableItemToTeamsOrAddTeams(aia, UserManager.getUser(), transaction); - sb.append(result.getText()); - } - // Remove unchecked aias - for (TeamWorkFlowArtifact team : getTeamWorkFlowArtifacts()) { - for (ActionableItemArtifact aia : team.getActionableItemsDam().getActionableItems()) { - if (!diag.getChecked().contains(aia)) { - team.getActionableItemsDam().removeActionableItem(aia); - } - } - team.persist(transaction); - } - - transaction.execute(); - return new Result(true, sb.toString()); - } - - public Result addActionableItemToTeamsOrAddTeams(ActionableItemArtifact aia, User originator, SkynetTransaction transaction) throws OseeCoreException { - StringBuffer sb = new StringBuffer(); - for (TeamDefinitionArtifact tda : TeamDefinitionArtifact.getImpactedTeamDefs(Arrays.asList(aia))) { - boolean teamExists = false; - // Look for team workflow that is associated with this tda - for (TeamWorkFlowArtifact teamArt : getTeamWorkFlowArtifacts()) { - // If found - if (teamArt.getTeamDefinition().equals(tda)) { - // And workflow doesn't already have this actionable item, - // ADD it - if (!teamArt.getActionableItemsDam().getActionableItems().contains(aia)) { - teamArt.getActionableItemsDam().addActionableItem(aia); - teamArt.saveSMA(transaction); - sb.append(aia.getName() + " => added to existing team workflow \"" + tda.getName() + "\"\n"); - teamExists = true; - } else { - sb.append(aia.getName() + " => already exists in team workflow \"" + tda.getName() + "\"\n"); - teamExists = true; - } - } - } - if (!teamExists) { - TeamWorkFlowArtifact teamArt = createTeamWorkflow(tda, Arrays.asList(aia), tda.getLeads(), transaction); - if (originator != null) { - teamArt.getLog().setOriginator(originator); - } - teamArt.persist(transaction); - sb.append(aia.getName() + " => added team workflow \"" + tda.getName() + "\"\n"); - } - } - return new Result(true, sb.toString()); - } - - public TeamWorkFlowArtifact createTeamWorkflow(TeamDefinitionArtifact teamDef, Collection<ActionableItemArtifact> actionableItems, Collection<User> assignees, SkynetTransaction transaction, CreateTeamOption... createTeamOption) throws OseeCoreException { - String teamWorkflowArtifactName = AtsArtifactTypes.TeamWorkflow.getName(); - IAtsTeamWorkflow teamExt = null; - - // Check if any plugins want to create the team workflow themselves - for (IAtsTeamWorkflow teamExtension : TeamWorkflowExtensions.getInstance().getAtsTeamWorkflowExtensions()) { - boolean isResponsible = false; - try { - isResponsible = teamExtension.isResponsibleForTeamWorkflowCreation(teamDef, actionableItems); - } catch (Exception ex) { - OseeLog.log(AtsPlugin.class, Level.WARNING, ex); - } - if (isResponsible) { - teamWorkflowArtifactName = teamExtension.getTeamWorkflowArtifactName(teamDef, actionableItems); - teamExt = teamExtension; - } - } - - // NOTE: The persist of the workflow will auto-email the assignees - TeamWorkFlowArtifact teamArt = - createTeamWorkflow(teamDef, actionableItems, assignees, ArtifactTypeManager.getType(teamWorkflowArtifactName), - transaction, createTeamOption); - // Notify extension that workflow was created - if (teamExt != null) { - teamExt.teamWorkflowCreated(teamArt); - } - return teamArt; - } - - public TeamWorkFlowArtifact createTeamWorkflow(TeamDefinitionArtifact teamDef, Collection<ActionableItemArtifact> actionableItems, Collection<User> assignees, IArtifactType artifactType, SkynetTransaction transaction, CreateTeamOption... createTeamOption) throws OseeCoreException { - return createTeamWorkflow(teamDef, actionableItems, assignees, null, null, artifactType, transaction, - createTeamOption); - } - - public TeamWorkFlowArtifact createTeamWorkflow(TeamDefinitionArtifact teamDef, Collection<ActionableItemArtifact> actionableItems, Collection<User> assignees, String guid, String hrid, IArtifactType artifactType, SkynetTransaction transaction, CreateTeamOption... createTeamOption) throws OseeCoreException { - - if (!Collections.getAggregate(createTeamOption).contains(CreateTeamOption.Duplicate_If_Exists)) { - // Make sure team doesn't already exist - for (TeamWorkFlowArtifact teamArt : getTeamWorkFlowArtifacts()) { - if (teamArt.getTeamDefinition().equals(teamDef)) { - AWorkbench.popup("ERROR", "Team already exist"); - throw new OseeArgumentException("Team [%s] already exists for Action [%s]", teamDef, - getHumanReadableId()); - } - } - } - - TeamWorkFlowArtifact teamArt = null; - if (guid == null) { - teamArt = (TeamWorkFlowArtifact) ArtifactTypeManager.addArtifact(artifactType, AtsUtil.getAtsBranch()); - } else { - teamArt = - (TeamWorkFlowArtifact) ArtifactTypeManager.addArtifact(artifactType, AtsUtil.getAtsBranch(), guid, hrid); - } - setArtifactIdentifyData(this, teamArt); - - teamArt.getLog().addLog(LogType.Originated, "", ""); - - // Relate Workflow to ActionableItems (by guid) if team is responsible - // for that AI - for (ActionableItemArtifact aia : actionableItems) { - if (aia.getImpactedTeamDefs().contains(teamDef)) { - teamArt.getActionableItemsDam().addActionableItem(aia); - } - } - - // Relate WorkFlow to Team Definition (by guid due to relation loading - // issues) - teamArt.setTeamDefinition(teamDef); - - // Initialize state machine - String startState = teamArt.getWorkFlowDefinition().getStartPage().getPageName(); - teamArt.getStateMgr().initializeStateMachine(startState, assignees); - teamArt.getLog().addLog(LogType.StateEntered, startState, ""); - - // Relate Action to WorkFlow - addRelation(AtsRelationTypes.ActionToWorkflow_WorkFlow, teamArt); - - teamArt.persist(transaction); - - return teamArt; - } - - /** - * Set Team Workflow attributes off given action artifact - */ - public static void setArtifactIdentifyData(ActionArtifact fromAction, TeamWorkFlowArtifact toTeam) throws OseeCoreException { - String priorityStr = fromAction.getSoleAttributeValue(AtsAttributeTypes.PriorityType, ""); - PriorityType priType = null; - if (Strings.isValid(priorityStr)) { - priType = PriorityType.getPriority(priorityStr); - } else { - throw new OseeArgumentException("Invalid priority [%s]", priorityStr); - } - setArtifactIdentifyData(toTeam, fromAction.getName(), - fromAction.getSoleAttributeValue(AtsAttributeTypes.Description, ""), - ChangeType.getChangeType(fromAction.getSoleAttributeValue(AtsAttributeTypes.ChangeType, "")), priType, - // fromAction.getAttributesToStringList(AtsAttributeTypes.ATS_USER_COMMUNITY), - fromAction.getSoleAttributeValue(AtsAttributeTypes.ValidationRequired, false), - fromAction.getSoleAttributeValue(AtsAttributeTypes.NeedBy, (Date) null)); - } - - /** - * Since there is no shared attribute yet, action and workflow arts are all populate with identify data - */ - public static void setArtifactIdentifyData(Artifact art, String title, String desc, ChangeType changeType, PriorityType priority, Boolean validationRequired, Date needByDate) throws OseeCoreException { - art.setName(title); - if (!desc.equals("")) { - art.setSoleAttributeValue(AtsAttributeTypes.Description, desc); - } - art.setSoleAttributeValue(AtsAttributeTypes.ChangeType, changeType.name()); - // art.setAttributeValues(ATSAttributes.USER_COMMUNITY_ATTRIBUTE.getStoreName(), userComms); - if (priority != null && priority != PriorityType.None) { - art.setSoleAttributeValue(AtsAttributeTypes.PriorityType, priority.getShortName()); - } - if (needByDate != null) { - art.setSoleAttributeValue(AtsAttributeTypes.NeedBy, needByDate); - } - if (validationRequired) { - art.setSoleAttributeValue(AtsAttributeTypes.ValidationRequired, true); - } - } - - @Override public String getWorldViewDecision() { return ""; } @@ -924,7 +648,7 @@ public class ActionArtifact extends ATSArtifact implements IWorldViewArtifact { } } } catch (OseeCoreException ex) { - // Do nothing + OseeLog.log(AtsPlugin.class, Level.SEVERE, ex); } return Result.TrueResult; } @@ -1254,7 +978,7 @@ public class ActionArtifact extends ATSArtifact implements IWorldViewArtifact { @Override public String getWorldViewGoalOrder() throws OseeCoreException { - return GoalArtifact.getGoalOrder(this); + return GoalManager.getGoalOrder(this); } } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/AtsArtifactFactory.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/AtsArtifactFactory.java index ed97d556aac..200b173131f 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/AtsArtifactFactory.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/AtsArtifactFactory.java @@ -45,32 +45,25 @@ public class AtsArtifactFactory extends ArtifactFactory { public Artifact getArtifactInstance(String guid, String humandReadableId, Branch branch, ArtifactType artifactType) throws OseeCoreException { if (artifactType.equals(AtsArtifactTypes.Action)) { return new ActionArtifact(this, guid, humandReadableId, branch, artifactType); - } - if (artifactType.equals(AtsArtifactTypes.Task)) { + } else if (artifactType.equals(AtsArtifactTypes.Task)) { return new TaskArtifact(this, guid, humandReadableId, branch, artifactType); - } - if (artifactType.equals(AtsArtifactTypes.TeamWorkflow)) { + } else if (artifactType.equals(AtsArtifactTypes.TeamWorkflow)) { return new TeamWorkFlowArtifact(this, guid, humandReadableId, branch, artifactType); - } - if (artifactType.equals(AtsArtifactTypes.TeamDefinition)) { + } else if (artifactType.equals(AtsArtifactTypes.TeamDefinition)) { return new TeamDefinitionArtifact(this, guid, humandReadableId, branch, artifactType); - } - if (artifactType.equals(AtsArtifactTypes.Version)) { + } else if (artifactType.equals(AtsArtifactTypes.Version)) { return new VersionArtifact(this, guid, humandReadableId, branch, artifactType); - } - if (artifactType.equals(AtsArtifactTypes.ActionableItem)) { + } else if (artifactType.equals(AtsArtifactTypes.ActionableItem)) { return new ActionableItemArtifact(this, guid, humandReadableId, branch, artifactType); - } - if (artifactType.equals(AtsArtifactTypes.DecisionReview)) { + } else if (artifactType.equals(AtsArtifactTypes.DecisionReview)) { return new DecisionReviewArtifact(this, guid, humandReadableId, branch, artifactType); - } - if (artifactType.equals(AtsArtifactTypes.PeerToPeerReview)) { + } else if (artifactType.equals(AtsArtifactTypes.PeerToPeerReview)) { return new PeerToPeerReviewArtifact(this, guid, humandReadableId, branch, artifactType); - } - if (artifactType.equals(AtsArtifactTypes.Goal)) { + } else if (artifactType.equals(AtsArtifactTypes.Goal)) { return new GoalArtifact(this, guid, humandReadableId, branch, artifactType); + } else { + throw new OseeArgumentException("did not recognize the artifact type [%s]", artifactType); } - throw new OseeArgumentException("did not recognize the artifact type [%s]", artifactType); } @Override diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/DecisionReviewArtifact.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/DecisionReviewArtifact.java index 9d47da7e6f8..a891e7b207b 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/DecisionReviewArtifact.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/DecisionReviewArtifact.java @@ -11,6 +11,7 @@ package org.eclipse.osee.ats.artifact; import java.util.Collection; +import org.eclipse.osee.ats.util.StateManager; import org.eclipse.osee.ats.util.widgets.XDecisionOptions; import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.core.model.Branch; @@ -23,7 +24,7 @@ import org.eclipse.osee.framework.skynet.core.utility.Artifacts; /** * @author Donald G. Dunne */ -public class DecisionReviewArtifact extends ReviewSMArtifact implements IReviewArtifact, IATSStateMachineArtifact { +public class DecisionReviewArtifact extends AbstractReviewArtifact implements IReviewArtifact, IATSStateMachineArtifact { public XDecisionOptions decisionOptions; public static enum DecisionReviewState { @@ -44,11 +45,6 @@ public class DecisionReviewArtifact extends ReviewSMArtifact implements IReviewA } @Override - public String getHyperName() { - return getName(); - } - - @Override public String getWorldViewDecision() throws OseeCoreException { return getSoleAttributeValue(AtsAttributeTypes.Decision, ""); } @@ -68,7 +64,7 @@ public class DecisionReviewArtifact extends ReviewSMArtifact implements IReviewA @Override public Collection<User> getImplementers() throws OseeCoreException { - return getImplementersByState(DecisionReviewState.Decision.name()); + return StateManager.getImplementersByState(this, DecisionReviewState.Decision.name()); } @Override diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/DecisionReviewWorkflowManager.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/DecisionReviewWorkflowManager.java index 30106066786..2cd6d16749d 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/DecisionReviewWorkflowManager.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/DecisionReviewWorkflowManager.java @@ -11,7 +11,7 @@ package org.eclipse.osee.ats.artifact; -import org.eclipse.osee.ats.artifact.StateMachineArtifact.TransitionOption; +import org.eclipse.osee.ats.util.TransitionOption; import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.skynet.core.User; import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction; @@ -23,7 +23,11 @@ import org.eclipse.osee.framework.ui.plugin.util.Result; * * @author Donald G. Dunne */ -public class DecisionReviewWorkflowManager { +public final class DecisionReviewWorkflowManager { + + private DecisionReviewWorkflowManager() { + // private constructor + } /** * Quickly transition to a state with minimal metrics and data entered. Should only be used for automated @@ -36,24 +40,16 @@ public class DecisionReviewWorkflowManager { // If in Prepare state, set data and transition to Decision if (reviewArt.getStateMgr().getCurrentStateName().equals( DecisionReviewArtifact.DecisionReviewState.Prepare.name())) { - result = setPrepareStateData(reviewArt, 100, 3, .2); - + result = setPrepareStateData(popup, reviewArt, 100, 3, .2); if (result.isFalse()) { - if (popup) { - result.popup(); - } return result; } result = - reviewArt.transition(DecisionReviewArtifact.DecisionReviewState.Decision.name(), - (user != null ? user : reviewArt.getStateMgr().getAssignees().iterator().next()), transaction, - TransitionOption.None); - } - if (result.isFalse()) { - if (popup) { - result.popup(); + transitionToState(popup, DecisionReviewArtifact.DecisionReviewState.Decision.name(), reviewArt, user, + transaction); + if (result.isFalse()) { + return result; } - return result; } if (toState == DecisionReviewArtifact.DecisionReviewState.Decision) { return Result.TrueResult; @@ -62,41 +58,51 @@ public class DecisionReviewWorkflowManager { // If desired to transition to follow-up, then decision is false boolean decision = toState != DecisionReviewArtifact.DecisionReviewState.Followup; - result = setDecisionStateData(reviewArt, decision, 100, .2); + result = setDecisionStateData(popup, reviewArt, decision, 100, .2); if (result.isFalse()) { - if (popup) { - result.popup(); - } return result; } - result = - reviewArt.transition(toState.name(), - (user != null ? user : reviewArt.getStateMgr().getAssignees().iterator().next()), transaction, - TransitionOption.None); + result = transitionToState(popup, toState.name(), reviewArt, user, transaction); if (result.isFalse()) { - if (popup) { - result.popup(); - } return result; } return Result.TrueResult; } - public static Result setPrepareStateData(DecisionReviewArtifact reviewArt, int statePercentComplete, double estimateHours, double stateHoursSpent) throws OseeCoreException { + public static Result setPrepareStateData(boolean popup, DecisionReviewArtifact reviewArt, int statePercentComplete, double estimateHours, double stateHoursSpent) throws OseeCoreException { if (!reviewArt.getStateMgr().getCurrentStateName().equals( DecisionReviewArtifact.DecisionReviewState.Prepare.name())) { - return new Result("Action not in Prepare state"); + Result result = new Result("Action not in Prepare state"); + if (result.isFalse() && popup) { + result.popup(); + return result; + } } reviewArt.setSoleAttributeValue(AtsAttributeTypes.EstimatedHours, estimateHours); reviewArt.getStateMgr().updateMetrics(stateHoursSpent, statePercentComplete, true); return Result.TrueResult; } - public static Result setDecisionStateData(DecisionReviewArtifact reviewArt, boolean decision, int statePercentComplete, double stateHoursSpent) throws OseeCoreException { + public static Result transitionToState(boolean popup, String toState, DecisionReviewArtifact reviewArt, User user, SkynetTransaction transaction) throws OseeCoreException { + Result result = + reviewArt.transition(toState, + (user == null ? reviewArt.getStateMgr().getAssignees().iterator().next() : user), transaction, + TransitionOption.None); + if (result.isFalse() && popup) { + result.popup(); + } + return result; + } + + public static Result setDecisionStateData(boolean popup, DecisionReviewArtifact reviewArt, boolean decision, int statePercentComplete, double stateHoursSpent) throws OseeCoreException { if (!reviewArt.getStateMgr().getCurrentStateName().equals( DecisionReviewArtifact.DecisionReviewState.Decision.name())) { - return new Result("Action not in Decision state"); + Result result = new Result("Action not in Decision state"); + if (result.isFalse() && popup) { + result.popup(); + return result; + } } reviewArt.setSoleAttributeValue(AtsAttributeTypes.Decision, decision ? "Yes" : "No"); reviewArt.getStateMgr().updateMetrics(stateHoursSpent, statePercentComplete, true); diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/GoalArtifact.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/GoalArtifact.java index e8d8d067ece..0e737d5a7eb 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/GoalArtifact.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/GoalArtifact.java @@ -10,39 +10,22 @@ *******************************************************************************/ package org.eclipse.osee.ats.artifact; -import java.text.NumberFormat; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collection; -import java.util.Collections; import java.util.Date; -import java.util.HashSet; import java.util.List; -import java.util.Set; -import org.eclipse.jface.window.Window; -import org.eclipse.nebula.widgets.xviewer.XViewerCells; -import org.eclipse.osee.ats.artifact.ATSLog.LogType; -import org.eclipse.osee.ats.util.AtsArtifactTypes; import org.eclipse.osee.ats.util.AtsRelationTypes; -import org.eclipse.osee.ats.util.AtsUtil; import org.eclipse.osee.ats.world.search.GoalSearchItem; import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.core.model.Branch; import org.eclipse.osee.framework.core.model.type.ArtifactType; -import org.eclipse.osee.framework.skynet.core.User; -import org.eclipse.osee.framework.skynet.core.UserManager; import org.eclipse.osee.framework.skynet.core.artifact.Artifact; import org.eclipse.osee.framework.skynet.core.artifact.ArtifactFactory; -import org.eclipse.osee.framework.skynet.core.artifact.ArtifactTypeManager; -import org.eclipse.osee.framework.ui.plugin.util.AWorkbench; -import org.eclipse.osee.framework.ui.skynet.widgets.dialog.ArtifactListDialog; -import org.eclipse.osee.framework.ui.skynet.widgets.dialog.EntryDialog; -import org.eclipse.osee.framework.ui.swt.Displays; /** * @author Donald G. Dunne */ -public class GoalArtifact extends StateMachineArtifact { +public class GoalArtifact extends AbstractWorkflowArtifact { public static enum GoalState { InWork, @@ -61,16 +44,16 @@ public class GoalArtifact extends StateMachineArtifact { } @Override - public StateMachineArtifact getParentSMA() throws OseeCoreException { + public AbstractWorkflowArtifact getParentSMA() throws OseeCoreException { List<Artifact> parents = getRelatedArtifacts(AtsRelationTypes.Goal_Goal); if (parents.isEmpty()) { return null; } if (parents.size() == 1) { - return (StateMachineArtifact) parents.iterator().next(); + return (AbstractWorkflowArtifact) parents.iterator().next(); } - System.err.println("Two parent goals, what do here?"); - return (StateMachineArtifact) parents.iterator().next(); + // TODO Two parent goals, what do here? + return (AbstractWorkflowArtifact) parents.iterator().next(); } @Override @@ -79,16 +62,6 @@ public class GoalArtifact extends StateMachineArtifact { } @Override - public Set<User> getPrivilegedUsers() { - return null; - } - - @Override - public boolean isTaskable() { - return false; - } - - @Override public Date getWorldViewReleaseDate() { return null; } @@ -103,83 +76,6 @@ public class GoalArtifact extends StateMachineArtifact { return null; } - @Override - public String getHyperTargetVersion() { - return null; - } - - public static void getGoals(Artifact artifact, Set<Artifact> goals, boolean recurse) throws OseeCoreException { - getGoals(Arrays.asList(artifact), goals, recurse); - } - - public static Collection<Artifact> getGoals(Artifact artifact, boolean recurse) throws OseeCoreException { - Set<Artifact> goals = new HashSet<Artifact>(); - getGoals(artifact, goals, recurse); - return goals; - } - - public static void getGoals(Collection<Artifact> artifacts, Set<Artifact> goals, boolean recurse) throws OseeCoreException { - for (Artifact art : artifacts) { - if (art instanceof GoalArtifact) { - goals.add(art); - } - goals.addAll(art.getRelatedArtifacts(AtsRelationTypes.Goal_Goal, GoalArtifact.class)); - if (recurse && art instanceof StateMachineArtifact && ((StateMachineArtifact) art).getParentSMA() != null) { - getGoals(((StateMachineArtifact) art).getParentSMA(), goals, recurse); - } - } - } - - public static boolean isHasGoal(Artifact artifact) throws OseeCoreException { - return artifact.getRelatedArtifactsCount(AtsRelationTypes.Goal_Goal) > 0; - } - - public static String getGoalOrder(Artifact artifact) throws OseeCoreException { - if (artifact instanceof GoalArtifact) { - return ""; - } - if (!isHasGoal(artifact)) { - return ""; - } - Collection<Artifact> goals = GoalArtifact.getGoals(artifact, false); - if (goals.size() > 1) { - List<Artifact> goalsSorted = new ArrayList<Artifact>(goals); - Collections.sort(goalsSorted); - StringBuffer sb = new StringBuffer(); - for (Artifact goal : goalsSorted) { - sb.append(String.format("%s-[%s] ", getGoalOrder((GoalArtifact) goal, artifact), goal)); - } - return sb.toString(); - } - Artifact goal = goals.iterator().next(); - return getGoalOrder((GoalArtifact) goal, artifact); - } - - public static String getGoalOrder(GoalArtifact goalArtifact, Artifact member) throws OseeCoreException { - List<Artifact> members = goalArtifact.getMembers(); - if (!members.contains(member)) { - return ""; - } - try { - return String.valueOf(members.indexOf(member) + 1); - } catch (Exception ex) { - return XViewerCells.getCellExceptionString(ex); - } - } - - public static GoalArtifact createGoal(String title) throws OseeCoreException { - GoalArtifact goalArt = - (GoalArtifact) ArtifactTypeManager.addArtifact(AtsArtifactTypes.Goal, AtsUtil.getAtsBranch()); - goalArt.setName(title); - goalArt.getLog().addLog(LogType.Originated, "", ""); - - // Initialize state machine - goalArt.getStateMgr().initializeStateMachine(GoalState.InWork.name(), - Collections.singleton(UserManager.getUser())); - goalArt.getLog().addLog(LogType.StateEntered, GoalState.InWork.name(), ""); - return goalArt; - } - public List<Artifact> getMembers() throws OseeCoreException { return getRelatedArtifacts(AtsRelationTypes.Goal_Member, false); } @@ -190,83 +86,6 @@ public class GoalArtifact extends StateMachineArtifact { } } - /** - * change goal, prompt if member of two goals - */ - public static GoalArtifact promptChangeGoalOrder(Artifact artifact) throws OseeCoreException { - if (!isHasGoal(artifact)) { - AWorkbench.popup(String.format("No Goal set for artifact [%s]", artifact)); - return null; - } - Collection<Artifact> goals = getGoals(artifact, false); - GoalArtifact goal = null; - if (goals.size() == 1) { - goal = (GoalArtifact) goals.iterator().next(); - } else if (goals.size() > 1) { - ArtifactListDialog dialog = new ArtifactListDialog(Displays.getActiveShell()); - dialog.setTitle("Select Goal"); - dialog.setMessage("Artifact has multiple Goals\n\nSelect Goal to change order"); - dialog.setArtifacts(goals); - if (dialog.open() == 0) { - goal = (GoalArtifact) dialog.getSelection(); - } else { - return null; - } - } - return promptChangeGoalOrder(goal, artifact); - } - - /** - * change goal order for artifact within given goal - */ - public static GoalArtifact promptChangeGoalOrder(GoalArtifact goalArtifact, Artifact artifact) throws OseeCoreException { - return promptChangeGoalOrder(goalArtifact, Arrays.asList(artifact)); - } - - /** - * change goal order for artifacts within given goal - */ - public static GoalArtifact promptChangeGoalOrder(GoalArtifact goalArtifact, List<Artifact> artifacts) throws OseeCoreException { - StringBuilder currentOrder = new StringBuilder("Current Order: "); - for (Artifact artifact : artifacts) { - if (artifacts.size() == 1 && !isHasGoal(artifact) || goalArtifact == null) { - AWorkbench.popup(String.format("No Goal set for artifact [%s]", artifact)); - return null; - } - String currIndexStr = getGoalOrder(goalArtifact, artifact); - currentOrder.append(currIndexStr + ", "); - } - - List<Artifact> members = goalArtifact.getMembers(); - EntryDialog ed = - new EntryDialog( - "Change Goal Order", - String.format( - "Goal: %s\n\n%s\n\nEnter New Order Number from 1..%d or %d for last\n\nNote: Goal will be placed before number entered.", - goalArtifact, currentOrder.toString().replaceFirst(", $", ""), members.size(), members.size() + 1)); - ed.setNumberFormat(NumberFormat.getIntegerInstance()); - - int result = ed.open(); - if (result == Window.OK) { - String newIndexStr = ed.getEntry(); - Integer enteredIndex = new Integer(newIndexStr); - boolean insertLast = enteredIndex == members.size() + 1; - Integer membersIndex = insertLast ? members.size() - 1 : enteredIndex - 1; - if (membersIndex > members.size()) { - AWorkbench.popup(String.format("New Order Number [%s] out of range 1..%d", newIndexStr, members.size())); - return null; - } - for (Artifact artifact : artifacts) { - Artifact insertTarget = members.get(membersIndex); - goalArtifact.setRelationOrder(AtsRelationTypes.Goal_Member, insertTarget, insertLast ? true : false, - artifact); - } - goalArtifact.persist(); - return goalArtifact; - } - return null; - } - public Collection<GoalArtifact> getInWorkGoals() throws OseeCoreException { GoalSearchItem searchItem = new GoalSearchItem("", new ArrayList<TeamDefinitionArtifact>(), false, null); return org.eclipse.osee.framework.jdk.core.util.Collections.castAll(searchItem.performSearchGetResults()); diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/IFavoriteableArtifact.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/IFavoriteableArtifact.java deleted file mode 100644 index d1734eee0e8..00000000000 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/IFavoriteableArtifact.java +++ /dev/null @@ -1,33 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004, 2007 Boeing. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Boeing - initial API and implementation - *******************************************************************************/ -package org.eclipse.osee.ats.artifact; - -import java.util.ArrayList; -import org.eclipse.osee.framework.core.exception.OseeCoreException; -import org.eclipse.osee.framework.skynet.core.User; -import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction; - -/** - * @author Donald G. Dunne - */ -public interface IFavoriteableArtifact { - - public void addFavorite(User u, SkynetTransaction transaction) throws OseeCoreException; - - public void removeFavorite(User u, SkynetTransaction transaction) throws OseeCoreException; - - public boolean isFavorite(User u) throws OseeCoreException; - - public ArrayList<User> getFavorites() throws OseeCoreException; - - public boolean amIFavorite(); - -} diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/IReviewArtifact.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/IReviewArtifact.java index 6c728ff423f..df3b60104d5 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/IReviewArtifact.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/IReviewArtifact.java @@ -21,14 +21,14 @@ import org.eclipse.osee.framework.skynet.core.artifact.Artifact; */ public interface IReviewArtifact { - public boolean isBlocking() throws OseeCoreException; + boolean isBlocking() throws OseeCoreException; - public DefectManager getDefectManager(); + DefectManager getDefectManager(); - public UserRoleManager getUserRoleManager(); + UserRoleManager getUserRoleManager(); - public Artifact getArtifact(); + Artifact getArtifact(); - public IStatus isUserRoleValid(String namespace) throws OseeCoreException; + IStatus isUserRoleValid(String namespace) throws OseeCoreException; } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/ISubscribableArtifact.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/ISubscribableArtifact.java deleted file mode 100644 index 1626ce4674e..00000000000 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/ISubscribableArtifact.java +++ /dev/null @@ -1,33 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004, 2007 Boeing. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Boeing - initial API and implementation - *******************************************************************************/ -package org.eclipse.osee.ats.artifact; - -import java.util.ArrayList; -import org.eclipse.osee.framework.core.exception.OseeCoreException; -import org.eclipse.osee.framework.skynet.core.User; -import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction; - -/** - * @author Donald G. Dunne - */ -public interface ISubscribableArtifact { - - public void addSubscribed(User u, SkynetTransaction transaction) throws OseeCoreException; - - public void removeSubscribed(User u, SkynetTransaction transaction) throws OseeCoreException; - - public boolean isSubscribed(User u) throws OseeCoreException; - - public ArrayList<User> getSubscribed() throws OseeCoreException; - - public boolean amISubscribed(); - -} diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/LogItem.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/LogItem.java index 210f853adf7..0dd30f37b8f 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/LogItem.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/LogItem.java @@ -12,14 +12,21 @@ package org.eclipse.osee.ats.artifact; import static org.eclipse.osee.framework.jdk.core.util.Strings.intern; import java.text.SimpleDateFormat; +import java.util.ArrayList; import java.util.Date; +import java.util.List; +import java.util.Locale; import java.util.logging.Level; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import org.eclipse.osee.ats.artifact.ATSLog.LogType; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.framework.core.data.SystemUser; import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.core.exception.UserNotInDatabase; +import org.eclipse.osee.framework.jdk.core.util.AXml; import org.eclipse.osee.framework.jdk.core.util.DateUtil; +import org.eclipse.osee.framework.jdk.core.util.Strings; import org.eclipse.osee.framework.logging.OseeLog; import org.eclipse.osee.framework.skynet.core.User; import org.eclipse.osee.framework.skynet.core.UserManager; @@ -35,18 +42,42 @@ public class LogItem { private User user; private LogType type = LogType.None; private final String userId; - - public String getUserId() { - return userId; + private final static Pattern LOG_ITEM_PATTERN = + Pattern.compile("<Item date=\"(.*?)\" msg=\"(.*?)\" state=\"(.*?)\" type=\"(.*?)\" userId=\"(.*?)\"/>"); + private final static Pattern LOG_ITEM_TAG_PATTERN = Pattern.compile("<Item "); + + public static List<LogItem> getLogItems(String xml, String id) throws OseeCoreException { + List<LogItem> logItems = new ArrayList<LogItem>(); + if (!xml.isEmpty()) { + Matcher m = LOG_ITEM_PATTERN.matcher(xml); + while (m.find()) { + LogItem item = + new LogItem(m.group(4), m.group(1), Strings.intern(m.group(5)), Strings.intern(m.group(3)), // NOPMD by b0727536 on 9/29/10 8:52 AM + AXml.xmlToText(m.group(2)), id); + logItems.add(item); + } + + Matcher m2 = LOG_ITEM_TAG_PATTERN.matcher(xml); + int openTagsFound = 0; + while (m2.find()) { + openTagsFound++; + } + if (logItems.size() != openTagsFound) { + OseeLog.log(AtsPlugin.class, Level.SEVERE, String.format( + "ATS Log: open tags found %d doesn't match log items parsed %d for %s", openTagsFound, logItems.size(), + id)); + } + } + return logItems; } public LogItem(LogType type, Date date, User user, String state, String msg, String hrid) throws OseeCoreException { - this(type.name(), date.getTime() + "", user.getUserId(), state, msg, hrid); + this(type.name(), String.valueOf(date.getTime()), user.getUserId(), state, msg, hrid); } public LogItem(LogType type, String date, String userId, String state, String msg, String hrid) throws OseeCoreException { - Long l = new Long(date); - this.date = new Date(l.longValue()); + Long dateLong = Long.valueOf(date); + this.date = new Date(dateLong.longValue()); this.msg = msg; this.state = intern(state); this.userId = intern(userId); @@ -65,7 +96,7 @@ public class LogItem { } public String toXml() throws OseeCoreException { - return "<type>" + type.name() + "</type><date>" + date.getTime() + "</date><user>" + user.getUserId() + "</user><state>" + (state != null ? state : "") + "</state><msg>" + (msg != null ? msg : "") + "</msg>"; + return "<type>" + type.name() + "</type><date>" + date.getTime() + "</date><user>" + user.getUserId() + "</user><state>" + (state == null ? "" : state) + "</state><msg>" + (msg == null ? "" : msg) + "</msg>"; } public Date getDate() { @@ -74,7 +105,7 @@ public class LogItem { public String getDate(String pattern) { if (pattern != null) { - return new SimpleDateFormat(pattern).format(date); + return new SimpleDateFormat(pattern, Locale.US).format(date); } return date.toString(); } @@ -83,6 +114,10 @@ public class LogItem { this.date = date; } + public String getUserId() { + return userId; + } + public String getMsg() { return msg; } @@ -93,11 +128,20 @@ public class LogItem { @Override public String toString() { - try { - return (msg.equals("") ? "" : msg) + " (" + type + ") " + (state.equals("") ? "" : "from " + state + " ") + "by " + user.getUserId() + " on " + DateUtil.getMMDDYYHHMM(date) + "\n"; - } catch (Exception ex) { - return (msg.equals("") ? "" : msg) + " (" + type + ") " + (state.equals("") ? "" : "from " + state + " "); - } + return String.format("%s (%s)%s by %s on %s", getToStringMsg(), type, getToStringState(), getToStringUser(), + DateUtil.getMMDDYYHHMM(date)); + } + + private String getToStringUser() { + return user == null ? "unknown" : user.getName(); + } + + private String getToStringState() { + return state.isEmpty() ? "" : "from " + state; + } + + private String getToStringMsg() { + return msg.isEmpty() ? "" : msg; } public User getUser() { diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/NoteItem.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/NoteItem.java index 2fb3f178adf..d49597d281b 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/NoteItem.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/NoteItem.java @@ -11,12 +11,25 @@ package org.eclipse.osee.ats.artifact; +import java.util.ArrayList; import java.util.Date; +import java.util.List; +import java.util.logging.Level; import org.eclipse.osee.ats.NoteType; +import org.eclipse.osee.ats.internal.AtsPlugin; +import org.eclipse.osee.framework.core.data.SystemUser; import org.eclipse.osee.framework.core.exception.OseeCoreException; +import org.eclipse.osee.framework.core.exception.UserNotInDatabase; import org.eclipse.osee.framework.jdk.core.util.DateUtil; import org.eclipse.osee.framework.jdk.core.util.Strings; +import org.eclipse.osee.framework.jdk.core.util.xml.Jaxp; +import org.eclipse.osee.framework.logging.OseeLevel; +import org.eclipse.osee.framework.logging.OseeLog; import org.eclipse.osee.framework.skynet.core.User; +import org.eclipse.osee.framework.skynet.core.UserManager; +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.NodeList; public class NoteItem { @@ -25,9 +38,11 @@ public class NoteItem { private String msg; private User user; private NoteType type = NoteType.Other; + protected final static String LOG_ITEM_TAG = "Item"; + private final static String ATS_NOTE_TAG = "AtsNote"; public NoteItem(NoteType type, String state, String date, User user, String msg) { - Long l = new Long(date); + Long l = Long.valueOf(date); this.date = new Date(l.longValue()); this.state = Strings.intern(state); this.msg = msg; @@ -57,7 +72,12 @@ public class NoteItem { @Override public String toString() { - return "Note: \"" + type + "\" from \"" + user.getName() + "\"" + (state.equals("") ? "" : " for \"" + state + "\" state") + " on " + DateUtil.getMMDDYYHHMM(date) + " - " + msg; + return String.format("Note: %s from %s%s on %s - %s", type, user.getName(), toStringState(), + DateUtil.getMMDDYYHHMM(date), msg); + } + + private String toStringState() { + return (state.isEmpty() ? "" : " for \"" + state + "\""); } public User getUser() { @@ -73,7 +93,7 @@ public class NoteItem { } public String toHTML() { - return "<b>Note:</b> \"" + type + "\" from \"" + user.getName() + "\"" + (state.equals("") ? "" : " for \"" + state + "\" state") + " on " + DateUtil.getMMDDYYHHMM(date) + " - " + msg; + return toString().replaceFirst("^Note: ", "<b>Note:</b>"); } public String getState() { @@ -83,4 +103,55 @@ public class NoteItem { public void setUser(User user) { this.user = user; } + + public static List<NoteItem> fromXml(String xml, String hrid) { + List<NoteItem> logItems = new ArrayList<NoteItem>(); + try { + if (Strings.isValid(xml)) { + NodeList nodes = Jaxp.readXmlDocument(xml).getElementsByTagName(LOG_ITEM_TAG); + for (int i = 0; i < nodes.getLength(); i++) { + Element element = (Element) nodes.item(i); + try { + User user = UserManager.getUserByUserId(element.getAttribute("userId")); + NoteItem item = + new NoteItem(element.getAttribute("type"), element.getAttribute("state"), // NOPMD by b0727536 on 9/29/10 8:52 AM + element.getAttribute("date"), user, element.getAttribute("msg")); + logItems.add(item); + } catch (UserNotInDatabase ex) { + OseeLog.log(AtsPlugin.class, Level.SEVERE, String.format("Error parsing notes for [%s]", hrid), ex); + NoteItem item = + new NoteItem(element.getAttribute("type"), element.getAttribute("state"), // NOPMD by b0727536 on 9/29/10 8:52 AM + element.getAttribute("date"), UserManager.getUser(SystemUser.Guest), + element.getAttribute("msg")); + logItems.add(item); + } + } + } + } catch (Exception ex) { + OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex); + } + return logItems; + } + + public static String toXml(List<NoteItem> items) { + try { + Document doc = Jaxp.newDocumentNamespaceAware(); + Element rootElement = doc.createElement(ATS_NOTE_TAG); + doc.appendChild(rootElement); + for (NoteItem item : items) { + Element element = doc.createElement(NoteItem.LOG_ITEM_TAG); + element.setAttribute("type", item.getType().name()); + element.setAttribute("state", item.getState()); + element.setAttribute("date", String.valueOf(item.getDate().getTime())); + element.setAttribute("userId", item.getUser().getUserId()); + element.setAttribute("msg", item.getMsg()); + rootElement.appendChild(element); + } + return Jaxp.getDocumentXml(doc); + } catch (Exception ex) { + OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, "Can't create ats note document", ex); + } + return null; + } + }
\ No newline at end of file diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/PeerToPeerReviewArtifact.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/PeerToPeerReviewArtifact.java index 87392bdd0c6..c0d159dd918 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/PeerToPeerReviewArtifact.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/PeerToPeerReviewArtifact.java @@ -14,6 +14,7 @@ import java.util.Collection; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.osee.ats.internal.AtsPlugin; +import org.eclipse.osee.ats.util.StateManager; import org.eclipse.osee.ats.util.widgets.defect.DefectManager; import org.eclipse.osee.ats.util.widgets.role.UserRole; import org.eclipse.osee.ats.util.widgets.role.UserRole.Role; @@ -28,7 +29,7 @@ import org.eclipse.osee.framework.skynet.core.utility.Artifacts; /** * @author Donald G. Dunne */ -public class PeerToPeerReviewArtifact extends ReviewSMArtifact implements IReviewArtifact, IATSStateMachineArtifact { +public class PeerToPeerReviewArtifact extends AbstractReviewArtifact implements IReviewArtifact, IATSStateMachineArtifact { public static enum PeerToPeerReviewState { Prepare, @@ -57,7 +58,7 @@ public class PeerToPeerReviewArtifact extends ReviewSMArtifact implements IRevie if (getStateMgr().getCurrentStateName().equals(PeerToPeerReviewArtifact.PeerToPeerReviewState.Review.name())) { for (UserRole uRole : userRoleManager.getUserRoles()) { if (uRole.getHoursSpent() == null) { - new Status(IStatus.ERROR, AtsPlugin.PLUGIN_ID, "Hours spent must be entered for each role."); + return new Status(IStatus.ERROR, AtsPlugin.PLUGIN_ID, "Hours spent must be entered for each role."); } } } @@ -70,11 +71,6 @@ public class PeerToPeerReviewArtifact extends ReviewSMArtifact implements IRevie } @Override - public String getHyperName() { - return getName(); - } - - @Override public String getWorldViewDescription() throws OseeCoreException { return getSoleAttributeValue(AtsAttributeTypes.Description, ""); } @@ -89,7 +85,7 @@ public class PeerToPeerReviewArtifact extends ReviewSMArtifact implements IRevie @Override public Collection<User> getImplementers() throws OseeCoreException { - Collection<User> users = getImplementersByState(PeerToPeerReviewState.Review.name()); + Collection<User> users = StateManager.getImplementersByState(this, PeerToPeerReviewState.Review.name()); for (UserRole role : userRoleManager.getUserRoles()) { users.add(role.getUser()); } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/PeerToPeerReviewWorkflowManager.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/PeerToPeerReviewWorkflowManager.java index 1af4c50c2cd..1e9446d9deb 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/PeerToPeerReviewWorkflowManager.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/PeerToPeerReviewWorkflowManager.java @@ -12,8 +12,7 @@ package org.eclipse.osee.ats.artifact; import java.util.Collection; -import org.eclipse.osee.ats.artifact.StateMachineArtifact.TransitionOption; -import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact.DefaultTeamState; +import org.eclipse.osee.ats.util.TransitionOption; import org.eclipse.osee.ats.util.widgets.defect.DefectItem; import org.eclipse.osee.ats.util.widgets.role.UserRole; import org.eclipse.osee.framework.core.exception.OseeCoreException; @@ -27,7 +26,11 @@ import org.eclipse.osee.framework.ui.plugin.util.Result; * * @author Donald G. Dunne */ -public class PeerToPeerReviewWorkflowManager { +public final class PeerToPeerReviewWorkflowManager { + + private PeerToPeerReviewWorkflowManager() { + // private constructor + } /** * Quickly transition to a state with minimal metrics and data entered. Should only be used for automated transition @@ -36,51 +39,51 @@ public class PeerToPeerReviewWorkflowManager { * @param user User to transition to OR null if should use user of current state */ public static Result transitionTo(PeerToPeerReviewArtifact reviewArt, PeerToPeerReviewArtifact.PeerToPeerReviewState toState, Collection<UserRole> roles, Collection<DefectItem> defects, User user, boolean popup, SkynetTransaction transaction) throws OseeCoreException { - Result result = setPrepareStateData(reviewArt, roles, "DoThis.java", 100, .2, transaction); + Result result = setPrepareStateData(popup, reviewArt, roles, "DoThis.java", 100, .2, transaction); if (result.isFalse()) { - if (popup) { - result.popup(); - } return result; } result = - reviewArt.transition(PeerToPeerReviewArtifact.PeerToPeerReviewState.Review.name(), - (user != null ? user : reviewArt.getStateMgr().getAssignees().iterator().next()), transaction, - TransitionOption.None); + transitionToState(popup, reviewArt, PeerToPeerReviewArtifact.PeerToPeerReviewState.Review.name(), transaction); if (result.isFalse()) { - if (popup) { - result.popup(); - } return result; } if (toState == PeerToPeerReviewArtifact.PeerToPeerReviewState.Review) { return Result.TrueResult; } - result = setReviewStateData(reviewArt, roles, defects, 100, .2, transaction); + result = setReviewStateData(popup, reviewArt, roles, defects, 100, .2, transaction); if (result.isFalse()) { - if (popup) { - result.popup(); - } return result; } result = - reviewArt.transition(DefaultTeamState.Completed.name(), - (user != null ? user : reviewArt.getStateMgr().getAssignees().iterator().next()), transaction, - TransitionOption.None); + transitionToState(popup, reviewArt, PeerToPeerReviewArtifact.PeerToPeerReviewState.Completed.name(), + transaction); if (result.isFalse()) { - if (popup) { - result.popup(); - } return result; } return Result.TrueResult; } - public static Result setPrepareStateData(PeerToPeerReviewArtifact reviewArt, Collection<UserRole> roles, String reviewMaterials, int statePercentComplete, double stateHoursSpent, SkynetTransaction transaction) throws OseeCoreException { + private static Result transitionToState(boolean popup, PeerToPeerReviewArtifact teamArt, String toState, SkynetTransaction transaction) throws OseeCoreException { + Result result = + teamArt.transition(toState, teamArt.getStateMgr().getAssignees().iterator().next(), transaction, + TransitionOption.None); + if (result.isFalse() && popup) { + result.popup(); + } + return result; + } + + public static Result setPrepareStateData(boolean popup, PeerToPeerReviewArtifact reviewArt, Collection<UserRole> roles, String reviewMaterials, int statePercentComplete, double stateHoursSpent, SkynetTransaction transaction) throws OseeCoreException { if (!reviewArt.getStateMgr().getCurrentStateName().equals("Prepare")) { - return new Result("Action not in Prepare state"); + Result result = new Result("Action not in Prepare state"); + if (result.isFalse() && popup) { + result.popup(); + return result; + } + } if (roles != null) { for (UserRole role : roles) { @@ -92,7 +95,7 @@ public class PeerToPeerReviewWorkflowManager { return Result.TrueResult; } - public static Result setReviewStateData(PeerToPeerReviewArtifact reviewArt, Collection<UserRole> roles, Collection<DefectItem> defects, int statePercentComplete, double stateHoursSpent, SkynetTransaction transaction) throws OseeCoreException { + public static Result setReviewStateData(boolean popup, PeerToPeerReviewArtifact reviewArt, Collection<UserRole> roles, Collection<DefectItem> defects, int statePercentComplete, double stateHoursSpent, SkynetTransaction transaction) throws OseeCoreException { if (roles != null) { for (UserRole role : roles) { reviewArt.getUserRoleManager().addOrUpdateUserRole(role, false, transaction); diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/SmaWorkflowLabelProvider.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/SmaWorkflowLabelProvider.java index 528d0e64ae2..d3178e6909c 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/SmaWorkflowLabelProvider.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/SmaWorkflowLabelProvider.java @@ -15,10 +15,6 @@ package org.eclipse.osee.ats.artifact; */ public class SmaWorkflowLabelProvider extends TeamWorkflowLabelProvider { - public SmaWorkflowLabelProvider() { - super(); - } - @Override public String getText(Object element) { if (element instanceof TeamWorkFlowArtifact) { diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/TaskArtifact.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/TaskArtifact.java index f64f37ce5b8..adc478cc820 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/TaskArtifact.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/TaskArtifact.java @@ -12,14 +12,15 @@ package org.eclipse.osee.ats.artifact; import java.util.Collection; import java.util.Date; -import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import java.util.logging.Level; -import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact.DefaultTeamState; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.ats.util.AtsRelationTypes; +import org.eclipse.osee.ats.util.DefaultTeamState; +import org.eclipse.osee.ats.util.StateManager; +import org.eclipse.osee.ats.util.TransitionOption; import org.eclipse.osee.ats.util.widgets.dialog.TaskResOptionDefinition; import org.eclipse.osee.ats.util.widgets.dialog.TaskResolutionOptionRule; import org.eclipse.osee.framework.core.exception.OseeCoreException; @@ -41,7 +42,7 @@ import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkPageDefinition; /** * @author Donald G. Dunne */ -public class TaskArtifact extends StateMachineArtifact implements IATSStateMachineArtifact { +public class TaskArtifact extends AbstractWorkflowArtifact implements IATSStateMachineArtifact { public static enum TaskStates { InWork, @@ -57,50 +58,6 @@ public class TaskArtifact extends StateMachineArtifact implements IATSStateMachi return getWorldViewRelatedToState().equals(getParentSMA().getStateMgr().getCurrentStateName()); } - @Override - public void onInitializationComplete() throws OseeCoreException { - super.onInitializationComplete(); - } - - /** - * Allow parent SMA's assignees and all privileged users up Team tree - */ - @Override - public Set<User> getPrivilegedUsers() throws OseeCoreException { - Set<User> users = new HashSet<User>(); - StateMachineArtifact parentSma = getParentSMA(); - if (parentSma.isTeamWorkflow()) { - users.addAll(((TeamWorkFlowArtifact) parentSma).getPrivilegedUsers()); - } - users.addAll(parentSma.getStateMgr().getAssignees()); - return users; - } - - /** - * Can only un-cancel task when it's related to an active state - */ - @Override - public boolean isUnCancellable() { - try { - StateMachineArtifact parentSMA = getParentSMA(); - boolean unCancellable = - parentSMA.getStateMgr().getCurrentStateName().equals( - getSoleAttributeValue(AtsAttributeTypes.RelatedToState, "")); - if (!unCancellable) { - return false; - } - return super.isUnCancellable(); - } catch (Exception ex) { - // Do Nothing - } - return false; - } - - @Override - public boolean isTaskable() { - return false; - } - public boolean isUsingTaskResolutionOptions() throws OseeCoreException { return getTaskResolutionOptionDefintions().size() > 0; } @@ -190,11 +147,11 @@ public class TaskArtifact extends StateMachineArtifact implements IATSStateMachi return getParentSMA().getWorldViewEstimatedReleaseDate(); } - public Boolean isInWork() throws OseeCoreException { + public Boolean isInWork() { return getStateMgr().getCurrentStateName().equals(TaskStates.InWork.name()); } - public void transitionToCompleted(double additionalHours, SkynetTransaction transaction, TransitionOption... transitionOption) throws OseeCoreException { + public void transitionToCompleted(double additionalHours, SkynetTransaction transaction, TransitionOption... transitionOption) { if (getStateMgr().getCurrentStateName().equals(DefaultTeamState.Completed.name())) { return; } @@ -299,17 +256,16 @@ public class TaskArtifact extends StateMachineArtifact implements IATSStateMachi if (percent == 0) { return getWorldViewEstimatedHours(); } - double remain = getWorldViewEstimatedHours() - est * percent / 100.0; - return remain; + return getWorldViewEstimatedHours() - est * percent / 100.0; } @Override - public StateMachineArtifact getParentSMA() throws OseeCoreException { + public AbstractWorkflowArtifact getParentSMA() throws OseeCoreException { if (parentSma != null) { return parentSma; } - Collection<StateMachineArtifact> smas = - getRelatedArtifacts(AtsRelationTypes.SmaToTask_Sma, StateMachineArtifact.class); + Collection<AbstractWorkflowArtifact> smas = + getRelatedArtifacts(AtsRelationTypes.SmaToTask_Sma, AbstractWorkflowArtifact.class); if (smas.isEmpty()) { throw new OseeStateException("Task has no parent [%s]", getHumanReadableId()); } @@ -331,7 +287,7 @@ public class TaskArtifact extends StateMachineArtifact implements IATSStateMachi if (parentTeamArt != null) { return parentTeamArt; } - StateMachineArtifact sma = getParentSMA(); + AbstractWorkflowArtifact sma = getParentSMA(); if (sma.isTeamWorkflow()) { parentTeamArt = (TeamWorkFlowArtifact) sma; } @@ -340,7 +296,7 @@ public class TaskArtifact extends StateMachineArtifact implements IATSStateMachi @Override public Collection<User> getImplementers() throws OseeCoreException { - return getImplementersByState(TaskStates.InWork.name()); + return StateManager.getImplementersByState(this, TaskStates.InWork.name()); } @Override @@ -365,7 +321,7 @@ public class TaskArtifact extends StateMachineArtifact implements IATSStateMachi @Override public String getWorldViewLegacyPCR() throws OseeCoreException { - StateMachineArtifact sma = getParentSMA(); + AbstractWorkflowArtifact sma = getParentSMA(); if (sma != null) { return sma.getWorldViewLegacyPCR(); } @@ -373,13 +329,8 @@ public class TaskArtifact extends StateMachineArtifact implements IATSStateMachi } @Override - public String getHyperTargetVersion() { - return null; - } - - @Override public String getWorldViewSWEnhancement() throws OseeCoreException { - StateMachineArtifact sma = getParentSMA(); + AbstractWorkflowArtifact sma = getParentSMA(); if (sma != null) { return sma.getWorldViewSWEnhancement(); } @@ -391,9 +342,4 @@ public class TaskArtifact extends StateMachineArtifact implements IATSStateMachi return getParentTeamWorkflow().getHumanReadableId(); } - @Override - public boolean hasAtsWorldChildren() { - return false; - } - } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/TeamDefinitionArtifact.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/TeamDefinitionArtifact.java index db09a20bd0f..25c9df832ba 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/TeamDefinitionArtifact.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/TeamDefinitionArtifact.java @@ -67,7 +67,7 @@ public class TeamDefinitionArtifact extends Artifact implements ICommitConfigArt @Override public Result isCreateBranchAllowed() throws OseeCoreException { - if (getSoleAttributeValue(AtsAttributeTypes.AllowCreateBranch, false) == false) { + if (!getSoleAttributeValue(AtsAttributeTypes.AllowCreateBranch, false)) { return new Result(false, "Branch creation disabled for Team Definition [" + this + "]"); } if (getParentBranch() == null) { @@ -78,7 +78,7 @@ public class TeamDefinitionArtifact extends Artifact implements ICommitConfigArt @Override public Result isCommitBranchAllowed() throws OseeCoreException { - if (getSoleAttributeValue(AtsAttributeTypes.AllowCommitBranch, false) == false) { + if (!getSoleAttributeValue(AtsAttributeTypes.AllowCommitBranch, false)) { return new Result(false, "Team Definition [" + this + "] not configured to allow branch commit."); } if (getParentBranch() == null) { @@ -346,10 +346,10 @@ public class TeamDefinitionArtifact extends Artifact implements ICommitConfigArt if (manDaysHrs != null && manDaysHrs != 0) { return manDaysHrs; } - if (teamDef.getParent() != null && teamDef.getParent() instanceof TeamDefinitionArtifact) { + if (teamDef.getParent() instanceof TeamDefinitionArtifact) { return teamDef.getHoursPerWorkDayFromItemAndChildren((TeamDefinitionArtifact) teamDef.getParent()); } - return StateMachineArtifact.DEFAULT_HOURS_PER_WORK_DAY; + return AtsUtil.DEFAULT_HOURS_PER_WORK_DAY; } catch (Exception ex) { OseeLog.log(AtsPlugin.class, Level.SEVERE, ex); } @@ -433,18 +433,12 @@ public class TeamDefinitionArtifact extends Artifact implements ICommitConfigArt public Collection<VersionArtifact> getVersionsArtifacts(VersionReleaseType releaseType) throws OseeCoreException { ArrayList<VersionArtifact> versions = new ArrayList<VersionArtifact>(); for (VersionArtifact version : getVersionsArtifacts()) { - if (version.isReleased()) { - if (releaseType == VersionReleaseType.Released || releaseType == VersionReleaseType.Both) { - versions.add(version); - } - } else if (version.isVersionLocked()) { - if (releaseType == VersionReleaseType.VersionLocked || releaseType == VersionReleaseType.Both) { - versions.add(version); - } - } else { - if (releaseType == VersionReleaseType.UnReleased || releaseType == VersionReleaseType.Both) { - versions.add(version); - } + if (version.isReleased() && (releaseType == VersionReleaseType.Released || releaseType == VersionReleaseType.Both)) { + versions.add(version); + } else if (version.isVersionLocked() && (releaseType == VersionReleaseType.VersionLocked || releaseType == VersionReleaseType.Both)) { + versions.add(version); + } else if (releaseType == VersionReleaseType.UnReleased || releaseType == VersionReleaseType.Both) { + versions.add(version); } } return versions; diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/TeamWorkFlowArtifact.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/TeamWorkFlowArtifact.java index ae11da2ee72..6aff025bdfc 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/TeamWorkFlowArtifact.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/TeamWorkFlowArtifact.java @@ -11,26 +11,21 @@ package org.eclipse.osee.ats.artifact; -import java.util.Arrays; import java.util.Collection; import java.util.Date; -import java.util.HashSet; import java.util.Map; import java.util.Set; import java.util.logging.Level; -import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.nebula.widgets.xviewer.XViewerCells; import org.eclipse.osee.ats.config.AtsCacheManager; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.ats.util.AtsBranchManager; import org.eclipse.osee.ats.util.AtsPriority.PriorityType; import org.eclipse.osee.ats.util.AtsRelationTypes; -import org.eclipse.osee.ats.util.AtsUtil; +import org.eclipse.osee.ats.util.DefaultTeamState; +import org.eclipse.osee.ats.util.StateManager; import org.eclipse.osee.ats.util.widgets.ReviewManager; import org.eclipse.osee.ats.util.widgets.XActionableItemsDam; -import org.eclipse.osee.ats.util.widgets.dialog.AICheckTreeDialog; -import org.eclipse.osee.ats.workflow.item.AtsWorkDefinitions.RuleWorkItemId; -import org.eclipse.osee.framework.core.enums.Active; import org.eclipse.osee.framework.core.exception.OseeArgumentException; import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.core.exception.OseeStateException; @@ -41,34 +36,22 @@ import org.eclipse.osee.framework.jdk.core.util.Strings; import org.eclipse.osee.framework.logging.OseeLevel; import org.eclipse.osee.framework.logging.OseeLog; import org.eclipse.osee.framework.skynet.core.User; -import org.eclipse.osee.framework.skynet.core.UserManager; import org.eclipse.osee.framework.skynet.core.artifact.Artifact; import org.eclipse.osee.framework.skynet.core.artifact.ArtifactFactory; import org.eclipse.osee.framework.skynet.core.artifact.IATSStateMachineArtifact; import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction; import org.eclipse.osee.framework.skynet.core.utility.Artifacts; -import org.eclipse.osee.framework.ui.plugin.util.Result; import org.eclipse.osee.framework.ui.skynet.util.ChangeType; import org.eclipse.osee.framework.ui.skynet.widgets.IBranchArtifact; -import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkPageDefinition; -import org.eclipse.osee.framework.ui.swt.Displays; /** * @author Donald G. Dunne */ -public class TeamWorkFlowArtifact extends TaskableStateMachineArtifact implements IBranchArtifact, IATSStateMachineArtifact { +public class TeamWorkFlowArtifact extends AbstractTaskableArtifact implements IBranchArtifact, IATSStateMachineArtifact { private XActionableItemsDam actionableItemsDam; private boolean targetedErrorLogged = false; private final AtsBranchManager branchMgr; - public static enum DefaultTeamState { - Endorse, - Analyze, - Authorize, - Implement, - Completed, - Cancelled - } public TeamWorkFlowArtifact(ArtifactFactory parentFactory, String guid, String humanReadableId, Branch branch, ArtifactType artifactType) throws OseeCoreException { super(parentFactory, guid, humanReadableId, branch, artifactType); @@ -77,7 +60,7 @@ public class TeamWorkFlowArtifact extends TaskableStateMachineArtifact implement } @Override - public void getSmaArtifactsOneLevel(StateMachineArtifact smaArtifact, Set<Artifact> artifacts) throws OseeCoreException { + public void getSmaArtifactsOneLevel(AbstractWorkflowArtifact smaArtifact, Set<Artifact> artifacts) throws OseeCoreException { super.getSmaArtifactsOneLevel(smaArtifact, artifacts); try { if (getTargetedForVersion() != null) { @@ -124,43 +107,6 @@ public class TeamWorkFlowArtifact extends TaskableStateMachineArtifact implement } @Override - public Set<User> getPrivilegedUsers() { - Set<User> users = new HashSet<User>(); - try { - addPriviledgedUsersUpTeamDefinitionTree(getTeamDefinition(), users); - - WorkPageDefinition workPageDefinition = getWorkPageDefinition(); - - // Add user if allowing privileged edit to all users - if (!users.contains(UserManager.getUser()) && (workPageDefinition.hasWorkRule(RuleWorkItemId.atsAllowPriviledgedEditToAll.name()) || getTeamDefinition().hasWorkRule( - RuleWorkItemId.atsAllowPriviledgedEditToAll.name()))) { - users.add(UserManager.getUser()); - } - - // Add user if user is team member and rule exists - if (!users.contains(UserManager.getUser()) && (workPageDefinition.hasWorkRule(RuleWorkItemId.atsAllowPriviledgedEditToTeamMember.name()) || getTeamDefinition().hasWorkRule( - RuleWorkItemId.atsAllowPriviledgedEditToTeamMember.name()))) { - if (getTeamDefinition().getMembers().contains(UserManager.getUser())) { - users.add(UserManager.getUser()); - } - } - - // Add user if team member is originator and rule exists - if (!users.contains(UserManager.getUser()) && (workPageDefinition.hasWorkRule(RuleWorkItemId.atsAllowPriviledgedEditToTeamMemberAndOriginator.name()) || getTeamDefinition().hasWorkRule( - RuleWorkItemId.atsAllowPriviledgedEditToTeamMemberAndOriginator.name()))) { - if (getOriginator().equals(UserManager.getUser()) && getTeamDefinition().getMembers().contains( - UserManager.getUser())) { - users.add(UserManager.getUser()); - } - } - - } catch (Exception ex) { - OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex); - } - return users; - } - - @Override public String getEditorTitle() throws OseeCoreException { try { if (getWorldViewTargetedVersion() != null) { @@ -200,9 +146,6 @@ public class TeamWorkFlowArtifact extends TaskableStateMachineArtifact implement setSoleAttributeValue(AtsAttributeTypes.PriorityType, type.getShortName()); } - /** - * @return Returns the actionableItemsDam. - */ public XActionableItemsDam getActionableItemsDam() { return actionableItemsDam; } @@ -256,7 +199,7 @@ public class TeamWorkFlowArtifact extends TaskableStateMachineArtifact implement @Override public void atsDelete(Set<Artifact> deleteArts, Map<Artifact, Object> allRelated) throws OseeCoreException { super.atsDelete(deleteArts, allRelated); - for (ReviewSMArtifact reviewArt : ReviewManager.getReviews(this)) { + for (AbstractReviewArtifact reviewArt : ReviewManager.getReviews(this)) { reviewArt.atsDelete(deleteArts, allRelated); } } @@ -294,7 +237,7 @@ public class TeamWorkFlowArtifact extends TaskableStateMachineArtifact implement } @Override - public StateMachineArtifact getParentSMA() { + public AbstractWorkflowArtifact getParentSMA() { return null; } @@ -333,26 +276,6 @@ public class TeamWorkFlowArtifact extends TaskableStateMachineArtifact implement } @Override - public String getHyperName() { - try { - return getEditorTitle(); - } catch (OseeCoreException ex) { - OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex); - } - return getTeamName(); - } - - @Override - public String getHyperTargetVersion() { - try { - return getWorldViewTargetedVersionStr().equals("") ? null : getWorldViewTargetedVersionStr(); - } catch (Exception ex) { - OseeLog.log(AtsPlugin.class, Level.SEVERE, ex); - } - return null; - } - - @Override public double getManHrsPerDayPreference() throws OseeCoreException { try { return getTeamDefinition().getManDayHrsFromItemAndChildren(); @@ -362,76 +285,6 @@ public class TeamWorkFlowArtifact extends TaskableStateMachineArtifact implement return super.getManHrsPerDayPreference(); } - public Result editActionableItems() throws OseeCoreException { - return getParentActionArtifact().editActionableItems(); - } - - public Result convertActionableItems() throws OseeCoreException { - Result toReturn = Result.FalseResult; - AICheckTreeDialog diag = - new AICheckTreeDialog("Convert Impacted Actionable Items", - "NOTE: This should NOT be the normal path to changing actionable items.\n\nIf a team has " + - // - "determined " + "that there is NO impact and that another actionable items IS impacted:\n" + - // - " 1) Cancel this operation\n" + " 2) Select \"Edit Actionable Items\" to add/remove " + - // - "impacted items \n" + " which will create new teams as needed.\n" + - // - " 3) Then cancel the team that has no impacts.\n Doing this will show that the original " + - // - "team analyzed the impact\n" + " and determined that there was no change.\n\n" + "However, " + - // - "there are some cases where an impacted item was incorrectly chosen\n" + "and the original team " + - // - "does not need to do anything, this dialog will purge the\n" + "team from the DB as if it was " + - // - "never chosen.\n\n" + "Current Actionable Item(s): " + getWorldViewActionableItems() + "\n" + - // - "Current Team: " + getTeamDefinition().getName() + "\n" + - // - "Select SINGLE Actionable Item below to convert this workflow to.\n\n" + - // - "You will be prompted to confirm this conversion.", Active.Both); - - diag.setInput(ActionableItemArtifact.getTopLevelActionableItems(Active.Both)); - if (diag.open() != 0) { - return Result.FalseResult; - } - if (diag.getChecked().isEmpty()) { - return new Result("At least one actionable item must must be selected."); - } - if (diag.getChecked().size() > 1) { - return new Result("Only ONE actionable item can be selected for converts"); - } - ActionableItemArtifact selectedAia = diag.getChecked().iterator().next(); - Collection<TeamDefinitionArtifact> teamDefs = - ActionableItemArtifact.getImpactedTeamDefs(Arrays.asList(selectedAia)); - if (teamDefs.size() != 1) { - toReturn = new Result("Single team can not retrieved for " + selectedAia.getName()); - } else { - TeamDefinitionArtifact newTeamDef = teamDefs.iterator().next(); - if (newTeamDef.equals(getTeamDefinition())) { - toReturn = - new Result( - "Actionable Item selected belongs to same team as currently selected team.\n" + "Use \"Edit Actionable Items\" instaed."); - } else { - StringBuffer sb = new StringBuffer(); - sb.append("Converting..."); - sb.append("\nActionable Item(s): " + getWorldViewActionableItems()); - sb.append("\nTeam: " + getTeamDefinition().getName()); - sb.append("\nto\nActionable Item(s): " + selectedAia); - sb.append("\nTeam: " + newTeamDef.getName()); - if (MessageDialog.openConfirm(Displays.getActiveShell(), "Confirm Convert", sb.toString())) { - Set<ActionableItemArtifact> toProcess = new HashSet<ActionableItemArtifact>(); - toProcess.add(selectedAia); - toReturn = actionableItemsTx(AtsUtil.getAtsBranch(), toProcess, newTeamDef); - } - } - } - return toReturn; - } - @Override public String getWorldViewDescription() throws OseeCoreException { return getSoleAttributeValue(AtsAttributeTypes.Description, ""); @@ -446,13 +299,13 @@ public class TeamWorkFlowArtifact extends TaskableStateMachineArtifact implement Collection<VersionArtifact> vers = getRelatedArtifacts(AtsRelationTypes.TeamWorkflowTargetedForVersion_Version, VersionArtifact.class); Date date = null; - if (vers.size() > 0) { + if (vers.isEmpty()) { + date = getSoleAttributeValue(AtsAttributeTypes.EstimatedReleaseDate, null); + } else { date = vers.iterator().next().getEstimatedReleaseDate(); if (date == null) { date = getSoleAttributeValue(AtsAttributeTypes.EstimatedReleaseDate, null); } - } else { - date = getSoleAttributeValue(AtsAttributeTypes.EstimatedReleaseDate, null); } return date; } @@ -466,20 +319,20 @@ public class TeamWorkFlowArtifact extends TaskableStateMachineArtifact implement Collection<VersionArtifact> vers = getRelatedArtifacts(AtsRelationTypes.TeamWorkflowTargetedForVersion_Version, VersionArtifact.class); Date date = null; - if (vers.size() > 0) { + if (vers.isEmpty()) { + date = getSoleAttributeValue(AtsAttributeTypes.ReleaseDate, null); + } else { date = vers.iterator().next().getReleaseDate(); if (date == null) { date = getSoleAttributeValue(AtsAttributeTypes.ReleaseDate, null); } - } else { - date = getSoleAttributeValue(AtsAttributeTypes.ReleaseDate, null); } return date; } @Override public Collection<User> getImplementers() throws OseeCoreException { - return getImplementersByState(DefaultTeamState.Implement.name()); + return StateManager.getImplementersByState(this, DefaultTeamState.Implement.name()); } @Override @@ -515,20 +368,6 @@ public class TeamWorkFlowArtifact extends TaskableStateMachineArtifact implement return benefit * 52 - remainHrs; } - private Result actionableItemsTx(Branch branch, Set<ActionableItemArtifact> selectedAlias, TeamDefinitionArtifact teamDefinition) throws OseeCoreException { - Result workResult = actionableItemsDam.setActionableItems(selectedAlias); - if (workResult.isTrue()) { - if (teamDefinition != null) { - setTeamDefinition(teamDefinition); - } - SkynetTransaction transaction = new SkynetTransaction(branch, "Converate Actionable Item"); - getParentActionArtifact().resetAttributesOffChildren(transaction); - persist(transaction); - transaction.execute(); - } - return workResult; - } - @Override public String getWorldViewBranchStatus() { try { diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/TeamWorkflowExtensions.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/TeamWorkflowExtensions.java index c79a78e6013..eaa0f0a5d1b 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/TeamWorkflowExtensions.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/TeamWorkflowExtensions.java @@ -28,20 +28,15 @@ import org.osgi.framework.Bundle; /** * @author Donald G. Dunne */ -public class TeamWorkflowExtensions { +public final class TeamWorkflowExtensions { - private static TeamWorkflowExtensions instance = new TeamWorkflowExtensions(); private static Set<IAtsTeamWorkflow> teamWorkflowExtensionItems; private TeamWorkflowExtensions() { - // private contructor + // private constructor } - public static TeamWorkflowExtensions getInstance() { - return instance; - } - - public Set<IArtifactType> getAllTeamWorkflowArtifactTypes() throws OseeCoreException { + public static Set<IArtifactType> getAllTeamWorkflowArtifactTypes() throws OseeCoreException { Set<IArtifactType> artifactTypes = new HashSet<IArtifactType>(); artifactTypes.add(AtsArtifactTypes.TeamWorkflow); for (IAtsTeamWorkflow ext : getAtsTeamWorkflowExtensions()) { @@ -53,34 +48,38 @@ public class TeamWorkflowExtensions { /* * due to lazy initialization, this function is non-reentrant therefore, the synchronized keyword is necessary */ - public synchronized Set<IAtsTeamWorkflow> getAtsTeamWorkflowExtensions() { - if (teamWorkflowExtensionItems != null) { - return teamWorkflowExtensionItems; - } - teamWorkflowExtensionItems = new HashSet<IAtsTeamWorkflow>(); + public static Set<IAtsTeamWorkflow> getAtsTeamWorkflowExtensions() { + synchronized (teamWorkflowExtensionItems) { + if (teamWorkflowExtensionItems != null) { + return teamWorkflowExtensionItems; + } + teamWorkflowExtensionItems = new HashSet<IAtsTeamWorkflow>(); - IExtensionPoint point = Platform.getExtensionRegistry().getExtensionPoint("org.eclipse.osee.ats.AtsTeamWorkflow"); - if (point == null) { - OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, "Can't access AtsTeamWorkflow extension point"); - return teamWorkflowExtensionItems; - } - IExtension[] extensions = point.getExtensions(); - for (IExtension extension : extensions) { - IConfigurationElement[] elements = extension.getConfigurationElements(); - String classname = null; - String bundleName = null; - for (IConfigurationElement el : elements) { - if (el.getName().equals("AtsTeamWorkflow")) { - classname = el.getAttribute("classname"); - bundleName = el.getContributor().getName(); - if (classname != null && bundleName != null) { - Bundle bundle = Platform.getBundle(bundleName); - try { - Class<?> taskClass = bundle.loadClass(classname); - Object obj = taskClass.newInstance(); - teamWorkflowExtensionItems.add((IAtsTeamWorkflow) obj); - } catch (Exception ex) { - OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, "Error loading AtsTeamWorkflow extension", ex); + IExtensionPoint point = + Platform.getExtensionRegistry().getExtensionPoint("org.eclipse.osee.ats.AtsTeamWorkflow"); + if (point == null) { + OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, "Can't access AtsTeamWorkflow extension point"); + return teamWorkflowExtensionItems; + } + IExtension[] extensions = point.getExtensions(); + for (IExtension extension : extensions) { + IConfigurationElement[] elements = extension.getConfigurationElements(); + String classname = null; + String bundleName = null; + for (IConfigurationElement el : elements) { + if (el.getName().equals("AtsTeamWorkflow")) { + classname = el.getAttribute("classname"); + bundleName = el.getContributor().getName(); + if (classname != null && bundleName != null) { + Bundle bundle = Platform.getBundle(bundleName); + try { + Class<?> taskClass = bundle.loadClass(classname); + Object obj = taskClass.newInstance(); + teamWorkflowExtensionItems.add((IAtsTeamWorkflow) obj); + } catch (Exception ex) { + OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, "Error loading AtsTeamWorkflow extension", + ex); + } } } } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/TeamWorkflowLabelProvider.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/TeamWorkflowLabelProvider.java index 92c330e126d..666b53863bc 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/TeamWorkflowLabelProvider.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/TeamWorkflowLabelProvider.java @@ -21,18 +21,14 @@ import org.eclipse.osee.framework.ui.skynet.ArtifactLabelProvider; */ public class TeamWorkflowLabelProvider extends ArtifactLabelProvider { - public TeamWorkflowLabelProvider() { - super(); - } - @Override public String getText(Object element) { TeamWorkFlowArtifact teamWf = (TeamWorkFlowArtifact) element; try { - if (teamWf.getWorldViewTargetedVersion() != null) { - return "[" + teamWf.getTeamName() + "][" + teamWf.getWorldViewTargetedVersionStr() + "] - " + teamWf.getName(); - } else { + if (teamWf.getWorldViewTargetedVersion() == null) { return "[" + teamWf.getTeamName() + "] - " + teamWf.getName(); + } else { + return "[" + teamWf.getTeamName() + "][" + teamWf.getWorldViewTargetedVersionStr() + "] - " + teamWf.getName(); } } catch (OseeCoreException ex) { OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex); diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/TeamWorkflowManager.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/TeamWorkflowManager.java index 4d01c420d67..4ff621bebd2 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/TeamWorkflowManager.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/TeamWorkflowManager.java @@ -11,8 +11,8 @@ package org.eclipse.osee.ats.artifact; -import org.eclipse.osee.ats.artifact.StateMachineArtifact.TransitionOption; -import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact.DefaultTeamState; +import org.eclipse.osee.ats.util.DefaultTeamState; +import org.eclipse.osee.ats.util.TransitionOption; import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.skynet.core.User; import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction; @@ -40,21 +40,8 @@ public class TeamWorkflowManager { */ public Result transitionTo(DefaultTeamState toState, User user, boolean popup, SkynetTransaction transaction) throws OseeCoreException { if (teamArt.getStateMgr().getCurrentStateName().equals(DefaultTeamState.Endorse.name())) { - Result result = setEndorseData(null, 100, .2); + Result result = processEndorseState(popup, teamArt, user, transaction); if (result.isFalse()) { - if (popup) { - result.popup(); - } - return result; - } - result = - teamArt.transition(DefaultTeamState.Analyze.name(), - (user != null ? user : teamArt.getStateMgr().getAssignees().iterator().next()), transaction, - TransitionOption.None); - if (result.isFalse()) { - if (popup) { - result.popup(); - } return result; } } @@ -62,91 +49,122 @@ public class TeamWorkflowManager { return Result.TrueResult; } - Result result = setAnalyzeData(null, null, 1, 100, .2); + Result result = processAnalyzeState(popup, teamArt, user, transaction); if (result.isFalse()) { - if (popup) { - result.popup(); - } return result; } - result = - teamArt.transition(DefaultTeamState.Authorize.name(), - (user != null ? user : teamArt.getStateMgr().getAssignees().iterator().next()), transaction, - TransitionOption.None); + + if (toState == DefaultTeamState.Authorize) { + return Result.TrueResult; + } + + result = processAuthorizeState(popup, teamArt, user, transaction); if (result.isFalse()) { - if (popup) { - result.popup(); - } return result; } - if (toState == DefaultTeamState.Authorize) { + + if (toState == DefaultTeamState.Implement) { return Result.TrueResult; } - result = setAuthorizeData(100, .2); + result = transitionToState(popup, teamArt, DefaultTeamState.Completed.name(), user, transaction); if (result.isFalse()) { - if (popup) { - result.popup(); - } return result; } + return Result.TrueResult; - result = - teamArt.transition(DefaultTeamState.Implement.name(), - (user != null ? user : teamArt.getStateMgr().getAssignees().iterator().next()), transaction, - TransitionOption.None); + } + + private Result processAuthorizeState(boolean popup, TeamWorkFlowArtifact teamArt, User user, SkynetTransaction transaction) throws OseeCoreException { + Result result = setAuthorizeData(popup, 100, .2); if (result.isFalse()) { - if (popup) { - result.popup(); - } return result; } - if (toState == DefaultTeamState.Implement) { - return Result.TrueResult; + result = transitionToState(popup, teamArt, DefaultTeamState.Implement.name(), user, transaction); + if (result.isFalse()) { + return result; + } + return Result.TrueResult; + } + + private Result processAnalyzeState(boolean popup, TeamWorkFlowArtifact teamArt, User user, SkynetTransaction transaction) throws OseeCoreException { + Result result = setAnalyzeData(popup, null, null, 1, 100, .2); + if (result.isFalse()) { + return result; + } + result = transitionToState(popup, teamArt, DefaultTeamState.Authorize.name(), user, transaction); + if (result.isFalse()) { + return result; } + return Result.TrueResult; + } - result = - teamArt.transition(DefaultTeamState.Completed.name(), - (user != null ? user : teamArt.getStateMgr().getAssignees().iterator().next()), transaction, - TransitionOption.None); + private Result processEndorseState(boolean popup, TeamWorkFlowArtifact teamArt, User user, SkynetTransaction transaction) throws OseeCoreException { + Result result = setEndorseData(popup, null, 100, .2); + if (result.isFalse()) { + return result; + } + result = transitionToState(popup, teamArt, DefaultTeamState.Analyze.name(), user, transaction); if (result.isFalse()) { - if (popup) { - result.popup(); - } return result; } return Result.TrueResult; + } + private Result transitionToState(boolean popup, TeamWorkFlowArtifact teamArt, String toState, User user, SkynetTransaction transaction) throws OseeCoreException { + Result result = + teamArt.transition(toState, (user == null ? teamArt.getStateMgr().getAssignees().iterator().next() : user), + transaction, TransitionOption.None); + if (result.isFalse() && popup) { + result.popup(); + } + return result; } - public Result setEndorseData(String propRes, int statePercentComplete, double stateHoursSpent) throws OseeCoreException { + public Result setEndorseData(boolean popup, String propRes, int statePercentComplete, double stateHoursSpent) throws OseeCoreException { if (!teamArt.getStateMgr().getCurrentStateName().equals("Endorse")) { - return new Result("Action not in Endorse state"); + Result result = new Result("Action not in Endorse state"); + if (result.isFalse() && popup) { + result.popup(); + return result; + } } teamArt.getStateMgr().updateMetrics(stateHoursSpent, statePercentComplete, true); return Result.TrueResult; } - public Result setAnalyzeData(String problem, String propRes, double hourEstimate, int statePercentComplete, double stateHoursSpent) throws OseeCoreException { + public Result setAnalyzeData(boolean popup, String problem, String propRes, double hourEstimate, int statePercentComplete, double stateHoursSpent) throws OseeCoreException { if (!teamArt.getStateMgr().getCurrentStateName().equals("Analyze")) { - return new Result("Action not in Analyze state"); + Result result = new Result("Action not in Analyze state"); + if (result.isFalse() && popup) { + result.popup(); + return result; + } } teamArt.setSoleAttributeValue(AtsAttributeTypes.EstimatedHours, hourEstimate); teamArt.getStateMgr().updateMetrics(stateHoursSpent, statePercentComplete, true); return Result.TrueResult; } - public Result setAuthorizeData(int statePercentComplete, double stateHoursSpent) throws OseeCoreException { + public Result setAuthorizeData(boolean popup, int statePercentComplete, double stateHoursSpent) throws OseeCoreException { if (!teamArt.getStateMgr().getCurrentStateName().equals("Authorize")) { - return new Result("Action not in Authorize state"); + Result result = new Result("Action not in Authorize state"); + if (result.isFalse() && popup) { + result.popup(); + return result; + } } teamArt.getStateMgr().updateMetrics(stateHoursSpent, statePercentComplete, true); return Result.TrueResult; } - public Result setImplementData(String resolution, int statePercentComplete, double stateHoursSpent) throws OseeCoreException { + public Result setImplementData(boolean popup, String resolution, int statePercentComplete, double stateHoursSpent) throws OseeCoreException { if (!teamArt.getStateMgr().getCurrentStateName().equals("Implement")) { - return new Result("Action not in Implement state"); + Result result = new Result("Action not in Implement state"); + if (result.isFalse() && popup) { + result.popup(); + return result; + } } teamArt.getStateMgr().updateMetrics(stateHoursSpent, statePercentComplete, true); return Result.TrueResult; diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/VersionArtifact.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/VersionArtifact.java index 15c982cdb8b..dcf6e25530d 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/VersionArtifact.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/VersionArtifact.java @@ -10,9 +10,11 @@ *******************************************************************************/ package org.eclipse.osee.ats.artifact; +import java.util.ArrayList; import java.util.Collection; import java.util.Date; import java.util.HashSet; +import java.util.List; import java.util.Set; import java.util.logging.Level; import org.eclipse.osee.ats.config.AtsCacheManager; @@ -25,6 +27,7 @@ import org.eclipse.osee.framework.core.exception.BranchDoesNotExist; import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.core.model.Branch; import org.eclipse.osee.framework.core.model.type.ArtifactType; +import org.eclipse.osee.framework.jdk.core.util.Collections; import org.eclipse.osee.framework.jdk.core.util.GUID; import org.eclipse.osee.framework.jdk.core.util.Strings; import org.eclipse.osee.framework.logging.OseeLog; @@ -47,7 +50,7 @@ public class VersionArtifact extends Artifact implements ICommitConfigArtifact { @Override public Result isCreateBranchAllowed() throws OseeCoreException { - if (getSoleAttributeValue(AtsAttributeTypes.AllowCreateBranch, false) == false) { + if (!getSoleAttributeValue(AtsAttributeTypes.AllowCreateBranch, false)) { return new Result(false, "Branch creation disabled for Version [" + this + "]"); } if (getParentBranch() == null) { @@ -58,7 +61,7 @@ public class VersionArtifact extends Artifact implements ICommitConfigArtifact { @Override public Result isCommitBranchAllowed() throws OseeCoreException { - if (getSoleAttributeValue(AtsAttributeTypes.AllowCommitBranch, false) == false) { + if (!getSoleAttributeValue(AtsAttributeTypes.AllowCommitBranch, false)) { return new Result(false, "Version [" + this + "] not configured to allow branch commit."); } if (getParentBranch() == null) { @@ -138,26 +141,18 @@ public class VersionArtifact extends Artifact implements ICommitConfigArtifact { @Override public String getFullDisplayName() throws OseeCoreException { - String str = ""; + List<String> strs = new ArrayList<String>(); if (!getName().equals(Artifact.UNNAMED)) { - str += getName(); + strs.add(getName()); } - if (!getFullName().equals("")) { - if (str.equals("")) { - str = getFullName(); - } else { - str += " - " + getFullName(); - } + if (Strings.isValid(getFullName())) { + strs.add(getFullName()); } String description = getSoleAttributeValue(AtsAttributeTypes.Description, ""); if (Strings.isValid(description)) { - if (str.equals("")) { - str = description; - } else { - str += " - " + description; - } + strs.add(description); } - return str; + return Collections.toString(" - ", strs); } public TeamDefinitionArtifact getTeamDefinitionArtifact() throws OseeCoreException { diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/config/AtsCacheManager.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/config/AtsCacheManager.java index a2115f9671b..54c7c331721 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/config/AtsCacheManager.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/config/AtsCacheManager.java @@ -18,7 +18,7 @@ import java.util.Map; import java.util.logging.Level; import org.eclipse.osee.ats.artifact.ActionableItemArtifact; import org.eclipse.osee.ats.artifact.TaskArtifact; -import org.eclipse.osee.ats.artifact.TaskableStateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractTaskableArtifact; import org.eclipse.osee.ats.artifact.TeamDefinitionArtifact; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.ats.util.AtsArtifactTypes; @@ -62,8 +62,8 @@ import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkWidgetDefinitio */ public class AtsCacheManager implements IArtifactEventListener { - private static Map<TaskableStateMachineArtifact, Collection<TaskArtifact>> teamTasksCache = - new HashMap<TaskableStateMachineArtifact, Collection<TaskArtifact>>(); + private static Map<AbstractTaskableArtifact, Collection<TaskArtifact>> teamTasksCache = + new HashMap<AbstractTaskableArtifact, Collection<TaskArtifact>>(); public static void start() { new AtsCacheManager(); @@ -73,11 +73,11 @@ public class AtsCacheManager implements IArtifactEventListener { OseeEventManager.addPriorityListener(this); } - public static synchronized void decacheTaskArtifacts(TaskableStateMachineArtifact sma) { + public static synchronized void decacheTaskArtifacts(AbstractTaskableArtifact sma) { teamTasksCache.remove(sma); } - public static synchronized Collection<TaskArtifact> getTaskArtifacts(TaskableStateMachineArtifact sma) throws OseeCoreException { + public static synchronized Collection<TaskArtifact> getTaskArtifacts(AbstractTaskableArtifact sma) throws OseeCoreException { if (!teamTasksCache.containsKey(sma)) { Collection<TaskArtifact> taskArtifacts = sma.getRelatedArtifacts(AtsRelationTypes.SmaToTask_Task, TaskArtifact.class); @@ -139,7 +139,7 @@ public class AtsCacheManager implements IArtifactEventListener { } } Artifact artifact = ArtifactCache.getActive(guidArt); - if (artifact != null && artifact instanceof TaskableStateMachineArtifact) { + if (artifact != null && artifact instanceof AbstractTaskableArtifact) { teamTasksCache.remove(artifact); } } @@ -170,7 +170,7 @@ public class AtsCacheManager implements IArtifactEventListener { if (artifact instanceof TaskArtifact) { teamTasksCache.remove(artifact.getParent()); } - if (artifact instanceof TaskableStateMachineArtifact) { + if (artifact instanceof AbstractTaskableArtifact) { teamTasksCache.remove(artifact); } } @@ -186,7 +186,7 @@ public class AtsCacheManager implements IArtifactEventListener { teamTasksCache.remove(taskArt.getParent()); } for (Artifact artifact : ArtifactCache.getActive(guidRel)) { - if (artifact instanceof TaskableStateMachineArtifact) { + if (artifact instanceof AbstractTaskableArtifact) { teamTasksCache.remove(artifact); } } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/config/AtsConfigManager.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/config/AtsConfigManager.java index 9b5521aa987..d6b0d362693 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/config/AtsConfigManager.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/config/AtsConfigManager.java @@ -22,7 +22,6 @@ import org.eclipse.osee.ats.AtsOpenOption; import org.eclipse.osee.ats.artifact.ActionableItemArtifact; import org.eclipse.osee.ats.artifact.AtsAttributeTypes; import org.eclipse.osee.ats.artifact.TeamDefinitionArtifact; -import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact.DefaultTeamState; import org.eclipse.osee.ats.artifact.VersionArtifact; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.ats.util.AtsArtifactTypes; @@ -30,6 +29,7 @@ import org.eclipse.osee.ats.util.AtsFolderUtil; import org.eclipse.osee.ats.util.AtsFolderUtil.AtsFolder; import org.eclipse.osee.ats.util.AtsRelationTypes; import org.eclipse.osee.ats.util.AtsUtil; +import org.eclipse.osee.ats.util.DefaultTeamState; import org.eclipse.osee.ats.workflow.editor.wizard.AtsWorkflowConfigCreationWizard.WorkflowData; import org.eclipse.osee.ats.workflow.item.AtsWorkDefinitions; import org.eclipse.osee.framework.core.enums.CoreArtifactTypes; diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAActionableItemHeader.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAActionableItemHeader.java index d7cd70e8df5..a1aef3678f8 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAActionableItemHeader.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAActionableItemHeader.java @@ -11,7 +11,7 @@ package org.eclipse.osee.ats.editor; import java.util.logging.Level; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.ats.util.AtsUtil; @@ -37,9 +37,9 @@ public class SMAActionableItemHeader extends Composite { private static String ACTION_ACTIONABLE_ITEMS = "Actionable Items: "; private Hyperlink link; private Label label; - private final StateMachineArtifact sma; + private final AbstractWorkflowArtifact sma; - public SMAActionableItemHeader(Composite parent, XFormToolkit toolkit, StateMachineArtifact sma) { + public SMAActionableItemHeader(Composite parent, XFormToolkit toolkit, AbstractWorkflowArtifact sma) { super(parent, SWT.NONE); this.sma = sma; try { diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAAssigneesHeader.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAAssigneesHeader.java index b6d419313d2..82ff03863cc 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAAssigneesHeader.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAAssigneesHeader.java @@ -10,8 +10,7 @@ *******************************************************************************/ package org.eclipse.osee.ats.editor; -import java.util.logging.Level; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.ats.util.PromptChangeUtil; import org.eclipse.osee.framework.core.data.SystemUser; @@ -23,7 +22,6 @@ import org.eclipse.osee.framework.skynet.core.UserManager; import org.eclipse.osee.framework.ui.plugin.util.AWorkbench; import org.eclipse.osee.framework.ui.skynet.XFormToolkit; import org.eclipse.osee.framework.ui.swt.ALayout; -import org.eclipse.osee.framework.ui.swt.Displays; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; @@ -40,64 +38,57 @@ public class SMAAssigneesHeader extends Composite { private static String TARGET_VERSION = "Assignee(s):"; Label valueLabel; - public SMAAssigneesHeader(Composite parent, int style, final StateMachineArtifact sma, XFormToolkit toolkit, final boolean isEditable) { + public SMAAssigneesHeader(Composite parent, int style, final AbstractWorkflowArtifact sma, XFormToolkit toolkit, final boolean isEditable) { super(parent, style); setLayoutData(new GridData()); setLayout(ALayout.getZeroMarginLayout(2, false)); toolkit.adapt(this); - try { - if (!sma.isCancelled() && !sma.isCompleted()) { - Hyperlink link = toolkit.createHyperlink(this, TARGET_VERSION, SWT.NONE); - link.addHyperlinkListener(new IHyperlinkListener() { + if (!sma.isCancelled() && !sma.isCompleted()) { + Hyperlink link = toolkit.createHyperlink(this, TARGET_VERSION, SWT.NONE); + link.addHyperlinkListener(new IHyperlinkListener() { - @Override - public void linkEntered(HyperlinkEvent e) { - // do nothing - } + @Override + public void linkEntered(HyperlinkEvent e) { + // do nothing + } - @Override - public void linkExited(HyperlinkEvent e) { - // do nothing - } + @Override + public void linkExited(HyperlinkEvent e) { + // do nothing + } - @Override - public void linkActivated(HyperlinkEvent e) { - try { - if (!isEditable && !sma.getStateMgr().getAssignees().contains( - UserManager.getUser(SystemUser.UnAssigned)) && !sma.getStateMgr().getAssignees().contains( - UserManager.getUser())) { - AWorkbench.popup( - "ERROR", - "You must be assigned to modify assignees.\nContact current Assignee or Select Priviledged Edit for Authorized Overriders."); - return; - } - if (PromptChangeUtil.promptChangeAssignees(sma, false)) { - sma.getEditor().doSave(null); - } - } catch (Exception ex) { - OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex); + @Override + public void linkActivated(HyperlinkEvent e) { + try { + if (!isEditable && !sma.getStateMgr().getAssignees().contains( + UserManager.getUser(SystemUser.UnAssigned)) && !sma.getStateMgr().getAssignees().contains( + UserManager.getUser())) { + AWorkbench.popup( + "ERROR", + "You must be assigned to modify assignees.\nContact current Assignee or Select Priviledged Edit for Authorized Overriders."); + return; } + if (PromptChangeUtil.promptChangeAssignees(sma, false)) { + sma.getEditor().doSave(null); + } + } catch (Exception ex) { + OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex); } - }); - } else { - Label origLabel = toolkit.createLabel(this, TARGET_VERSION); - origLabel.setLayoutData(new GridData()); - } - - valueLabel = toolkit.createLabel(this, "Not Set"); - valueLabel.setLayoutData(new GridData()); - updateLabel(sma); - - } catch (OseeCoreException ex) { - Label errorLabel = toolkit.createLabel(this, "Error: " + ex.getLocalizedMessage()); - errorLabel.setForeground(Displays.getSystemColor(SWT.COLOR_RED)); - OseeLog.log(AtsPlugin.class, Level.SEVERE, ex); + } + }); + } else { + Label origLabel = toolkit.createLabel(this, TARGET_VERSION); + origLabel.setLayoutData(new GridData()); } + valueLabel = toolkit.createLabel(this, "Not Set"); + valueLabel.setLayoutData(new GridData()); + updateLabel(sma); + } - private void updateLabel(StateMachineArtifact sma) { + private void updateLabel(AbstractWorkflowArtifact sma) { String value = ""; try { if (sma.getStateMgr().getAssignees().isEmpty()) { diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMADetailsSection.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMADetailsSection.java index e97efd8d193..c4df6dd6ba6 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMADetailsSection.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMADetailsSection.java @@ -10,7 +10,16 @@ *******************************************************************************/ package org.eclipse.osee.ats.editor; +import java.util.Collection; +import java.util.Map; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; +import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact; +import org.eclipse.osee.ats.util.AtsArtifactTypes; +import org.eclipse.osee.framework.core.data.AccessContextId; +import org.eclipse.osee.framework.core.exception.OseeCoreException; +import org.eclipse.osee.framework.core.services.CmAccessControl; import org.eclipse.osee.framework.jdk.core.util.Lib; +import org.eclipse.osee.framework.skynet.core.UserManager; import org.eclipse.osee.framework.skynet.core.utility.Artifacts; import org.eclipse.osee.framework.ui.swt.Widgets; import org.eclipse.swt.SWT; @@ -77,7 +86,7 @@ public class SMADetailsSection extends SectionPart { if (Widgets.isAccessible(formText)) { try { - formText.setText(Artifacts.getDetailsFormText(editor.getSma().getSMADetails()), true, true); + formText.setText(Artifacts.getDetailsFormText(getSMADetails(editor.getSma())), true, true); } catch (Exception ex) { formText.setText(Lib.exceptionToString(ex), false, false); } @@ -85,6 +94,29 @@ public class SMADetailsSection extends SectionPart { } } + private Map<String, String> getSMADetails(AbstractWorkflowArtifact workflow) throws OseeCoreException { + Map<String, String> details = Artifacts.getDetailsKeyValues(workflow); + details.put("Workflow Definition", workflow.getWorkFlowDefinition().getName()); + if (workflow.getParentActionArtifact() != null) { + details.put("Action Id", workflow.getParentActionArtifact().getHumanReadableId()); + } + if (!(workflow instanceof TeamWorkFlowArtifact) && workflow.getParentTeamWorkflow() != null) { + details.put("Parent Team Workflow Id", workflow.getParentTeamWorkflow().getHumanReadableId()); + } + if (workflow.isOfType(AtsArtifactTypes.TeamWorkflow)) { + String message = null; + CmAccessControl accessControl = workflow.getAccessControl(); + if (accessControl == null) { + message = "AtsCmAccessControlService not started"; + } else { + Collection<? extends AccessContextId> ids = accessControl.getContextId(UserManager.getUser(), this); + message = ids.toString(); + } + details.put("Access Context Id", message); + } + return details; + } + @Override public void dispose() { if (formText != null && !formText.isDisposed()) { diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMADragAndDrop.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMADragAndDrop.java index 9cecd200467..c7d8e125bbb 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMADragAndDrop.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMADragAndDrop.java @@ -10,7 +10,7 @@ *******************************************************************************/ package org.eclipse.osee.ats.editor; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.framework.skynet.core.artifact.Artifact; import org.eclipse.osee.framework.ui.skynet.util.SkynetDragAndDrop; import org.eclipse.swt.dnd.DragSourceEvent; @@ -21,9 +21,9 @@ import org.eclipse.swt.widgets.Control; */ public class SMADragAndDrop extends SkynetDragAndDrop { - private final StateMachineArtifact sma; + private final AbstractWorkflowArtifact sma; - public SMADragAndDrop(Control control, StateMachineArtifact sma, String viewId) { + public SMADragAndDrop(Control control, AbstractWorkflowArtifact sma, String viewId) { super(control, viewId); this.sma = sma; } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAEditor.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAEditor.java index bc410d9391f..244abf409d9 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAEditor.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAEditor.java @@ -25,9 +25,9 @@ import org.eclipse.osee.ats.actions.AccessControlAction; import org.eclipse.osee.ats.actions.DirtyReportAction; import org.eclipse.osee.ats.actions.ISelectedAtsArtifacts; import org.eclipse.osee.ats.actions.ResourceHistoryAction; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractTaskableArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.artifact.TaskArtifact; -import org.eclipse.osee.ats.artifact.TaskableStateMachineArtifact; import org.eclipse.osee.ats.artifact.VersionArtifact; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.ats.navigate.VisitedItems; @@ -88,7 +88,7 @@ import org.eclipse.ui.part.MultiPageEditorPart; */ public class SMAEditor extends AbstractArtifactEditor implements ISMAEditorEventHandler, ISelectedAtsArtifacts, IActionable, IAtsMetricsProvider, IXTaskViewer { public static final String EDITOR_ID = "org.eclipse.osee.ats.editor.SMAEditor"; - private StateMachineArtifact sma; + private AbstractWorkflowArtifact sma; private SMAWorkFlowTab workFlowTab; int attributesPageIndex; private AttributesComposite attributesComposite; @@ -108,8 +108,8 @@ public class SMAEditor extends AbstractArtifactEditor implements ISMAEditorEvent if (editorInput instanceof SMAEditorInput) { SMAEditorInput aei = (SMAEditorInput) editorInput; if (aei.getArtifact() != null) { - if (aei.getArtifact() instanceof StateMachineArtifact) { - sma = (StateMachineArtifact) aei.getArtifact(); + if (aei.getArtifact() instanceof AbstractWorkflowArtifact) { + sma = (AbstractWorkflowArtifact) aei.getArtifact(); } else { throw new OseeArgumentException("SMAEditorInput artifact must be StateMachineArtifact"); } @@ -160,8 +160,8 @@ public class SMAEditor extends AbstractArtifactEditor implements ISMAEditorEvent } } - private void createTaskTab() throws PartInitException, OseeCoreException { - if (sma.showTaskTab()) { + private void createTaskTab() throws PartInitException { + if (isTaskable()) { taskTabXWidgetActionPage = new TaskTabXWidgetActionPage(this); addPage(taskTabXWidgetActionPage); } @@ -261,7 +261,7 @@ public class SMAEditor extends AbstractArtifactEditor implements ISMAEditorEvent if (result.isTrue()) { return result; } - result = ((StateMachineArtifact) ((SMAEditorInput) getEditorInput()).getArtifact()).isSMAEditorDirty(); + result = ((AbstractWorkflowArtifact) ((SMAEditorInput) getEditorInput()).getArtifact()).isSMAEditorDirty(); if (result.isTrue()) { return result; } @@ -387,14 +387,14 @@ public class SMAEditor extends AbstractArtifactEditor implements ISMAEditorEvent AWorkbench.popup("ERROR", "Artifact has been deleted"); return; } - if (artifact instanceof StateMachineArtifact) { - editArtifact((StateMachineArtifact) artifact); + if (artifact instanceof AbstractWorkflowArtifact) { + editArtifact((AbstractWorkflowArtifact) artifact); } else { RendererManager.open(artifact, PresentationType.GENERALIZED_EDIT); } } - public static void editArtifact(final StateMachineArtifact sma) { + public static void editArtifact(final AbstractWorkflowArtifact sma) { if (sma == null) { return; } @@ -428,7 +428,7 @@ public class SMAEditor extends AbstractArtifactEditor implements ISMAEditorEvent }); } - public static void close(final Collection<? extends StateMachineArtifact> artifacts, boolean save) { + public static void close(final Collection<? extends AbstractWorkflowArtifact> artifacts, boolean save) { Displays.ensureInDisplayThread(new Runnable() { @Override public void run() { @@ -446,7 +446,7 @@ public class SMAEditor extends AbstractArtifactEditor implements ISMAEditorEvent }); } - public static SMAEditor getSmaEditor(StateMachineArtifact artifact) { + public static SMAEditor getSmaEditor(AbstractWorkflowArtifact artifact) { IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); IEditorReference editors[] = page.getEditorReferences(); for (int j = 0; j < editors.length; j++) { @@ -471,12 +471,12 @@ public class SMAEditor extends AbstractArtifactEditor implements ISMAEditorEvent } @Override - public StateMachineArtifact getSma() { + public AbstractWorkflowArtifact getSma() { return sma; } @Override - public String getCurrentStateName() throws OseeCoreException { + public String getCurrentStateName() { return sma.getStateMgr().getCurrentStateName(); } @@ -492,24 +492,27 @@ public class SMAEditor extends AbstractArtifactEditor implements ISMAEditorEvent @Override public Collection<TaskArtifact> getTaskArtifacts(String stateName) throws OseeCoreException { - if (sma instanceof TaskableStateMachineArtifact) { + if (sma instanceof AbstractTaskableArtifact) { if (!Strings.isValid(stateName)) { - return ((TaskableStateMachineArtifact) sma).getTaskArtifacts(); + return ((AbstractTaskableArtifact) sma).getTaskArtifacts(); } else { - return ((TaskableStateMachineArtifact) sma).getTaskArtifacts(stateName); + return ((AbstractTaskableArtifact) sma).getTaskArtifacts(stateName); } } return Collections.emptyList(); } @Override - public boolean isTaskable() throws OseeCoreException { - return sma.isTaskable(); + public boolean isTaskable() { + if (!(sma instanceof AbstractTaskableArtifact) || sma.isCancelledOrCompleted()) { + return false; + } + return true; } @Override - public boolean isTasksEditable() throws OseeCoreException { - return sma.isTaskable(); + public boolean isTasksEditable() { + return isTaskable(); } public boolean isPriviledgedEditModeEnabled() { diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAEditorArtifactEventManager.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAEditorArtifactEventManager.java index 9b6936c7f81..8c97298fc84 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAEditorArtifactEventManager.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAEditorArtifactEventManager.java @@ -16,10 +16,10 @@ import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; import java.util.logging.Level; import org.eclipse.osee.ats.artifact.ActionArtifact; -import org.eclipse.osee.ats.artifact.ReviewSMArtifact; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractReviewArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.artifact.TaskArtifact; -import org.eclipse.osee.ats.artifact.TaskableStateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractTaskableArtifact; import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.ats.util.AtsUtil; @@ -44,7 +44,7 @@ public class SMAEditorArtifactEventManager implements IArtifactEventListener { List<ISMAEditorEventHandler> handlers = new ArrayList<ISMAEditorEventHandler>(); static SMAEditorArtifactEventManager instance = new SMAEditorArtifactEventManager(); - public SMAEditorArtifactEventManager() { + private SMAEditorArtifactEventManager() { OseeEventManager.addListener(this); } @@ -87,7 +87,7 @@ public class SMAEditorArtifactEventManager implements IArtifactEventListener { } private void safelyProcessHandler(final ArtifactEvent artifactEvent, final ISMAEditorEventHandler handler) { - final StateMachineArtifact sma = handler.getSMAEditor().getSma(); + final AbstractWorkflowArtifact sma = handler.getSMAEditor().getSma(); ActionArtifact actionArt = null; boolean refreshed = false; try { @@ -123,7 +123,7 @@ public class SMAEditorArtifactEventManager implements IArtifactEventListener { if (!refreshed && sma.isTeamWorkflow() && ReviewManager.hasReviews((TeamWorkFlowArtifact) sma)) { try { // If related review has made a change, redraw - for (ReviewSMArtifact reviewArt : ReviewManager.getReviews((TeamWorkFlowArtifact) sma)) { + for (AbstractReviewArtifact reviewArt : ReviewManager.getReviews((TeamWorkFlowArtifact) sma)) { if (artifactEvent.isHasEvent(reviewArt)) { refreshed = true; Displays.ensureInDisplayThread(new Runnable() { @@ -184,20 +184,20 @@ public class SMAEditorArtifactEventManager implements IArtifactEventListener { } - private boolean isReloaded(ArtifactEvent artifactEvent, StateMachineArtifact sma) { + private boolean isReloaded(ArtifactEvent artifactEvent, AbstractWorkflowArtifact sma) { try { if (artifactEvent.isReloaded(sma)) { return true; } - if (sma instanceof TaskableStateMachineArtifact) { - for (TaskArtifact taskArt : ((TaskableStateMachineArtifact) sma).getTaskArtifacts()) { + if (sma instanceof AbstractTaskableArtifact) { + for (TaskArtifact taskArt : ((AbstractTaskableArtifact) sma).getTaskArtifacts()) { if (artifactEvent.isReloaded(taskArt)) { return true; } } } if (sma.isTeamWorkflow()) { - for (ReviewSMArtifact reviewArt : ReviewManager.getReviews((TeamWorkFlowArtifact) sma)) { + for (AbstractReviewArtifact reviewArt : ReviewManager.getReviews((TeamWorkFlowArtifact) sma)) { if (artifactEvent.isReloaded(reviewArt)) { return true; } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAEditorBranchEventManager.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAEditorBranchEventManager.java index 00df6f19ec9..f340d0b109a 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAEditorBranchEventManager.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAEditorBranchEventManager.java @@ -14,7 +14,7 @@ import java.util.ArrayList; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; import java.util.logging.Level; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.framework.core.exception.BranchDoesNotExist; import org.eclipse.osee.framework.core.model.Branch; @@ -39,7 +39,7 @@ public class SMAEditorBranchEventManager implements IBranchEventListener { List<ISMAEditorEventHandler> handlers = new ArrayList<ISMAEditorEventHandler>(); static SMAEditorBranchEventManager instance = new SMAEditorBranchEventManager(); - public SMAEditorBranchEventManager() { + private SMAEditorBranchEventManager() { OseeEventManager.addListener(this); } @@ -81,7 +81,7 @@ public class SMAEditorBranchEventManager implements IBranchEventListener { if (handler.isDisposed()) { System.out.println("Unexpected handler disposed but not unregistered."); } - final StateMachineArtifact sma = handler.getSMAEditor().getSma(); + final AbstractWorkflowArtifact sma = handler.getSMAEditor().getSma(); try { if (!sma.isTeamWorkflow()) { return; diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAGoalMembersSection.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAGoalMembersSection.java index 7519c7178a5..0704be7c38b 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAGoalMembersSection.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAGoalMembersSection.java @@ -29,7 +29,7 @@ import org.eclipse.nebula.widgets.xviewer.customize.CustomizeData; import org.eclipse.osee.ats.AtsImage; import org.eclipse.osee.ats.actions.ISelectedAtsArtifacts; import org.eclipse.osee.ats.artifact.GoalArtifact; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.goal.GoalXViewerFactory; import org.eclipse.osee.ats.goal.RemoveFromGoalAction; import org.eclipse.osee.ats.goal.SetGoalOrderAction; @@ -394,7 +394,7 @@ public class SMAGoalMembersSection extends SectionPart implements ISelectedAtsAr public Set<Artifact> getSelectedSMAArtifacts() { Set<Artifact> artifacts = new HashSet<Artifact>(); for (Artifact art : worldComposite.getSelectedArtifacts()) { - if (art instanceof StateMachineArtifact) { + if (art instanceof AbstractWorkflowArtifact) { artifacts.add(art); } } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAHistorySection.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAHistorySection.java index 3b5a35e962f..27294a72850 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAHistorySection.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAHistorySection.java @@ -11,7 +11,7 @@ package org.eclipse.osee.ats.editor; import java.util.logging.Level; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.logging.OseeLog; @@ -67,7 +67,7 @@ public class SMAHistorySection extends SectionPart { return; } - StateMachineArtifact sma = editor.getSma(); + AbstractWorkflowArtifact sma = editor.getSma(); final FormToolkit toolkit = getManagedForm().getToolkit(); Composite composite = toolkit.createComposite(getSection(), toolkit.getBorderStyle() | SWT.WRAP); composite.setLayout(new GridLayout()); @@ -86,7 +86,7 @@ public class SMAHistorySection extends SectionPart { Label button = toolkit.createLabel(composite, " ", SWT.NONE); button.setText(" "); - final StateMachineArtifact fSma = sma; + final AbstractWorkflowArtifact fSma = sma; button.addListener(SWT.MouseDoubleClick, new Listener() { @Override public void handleEvent(Event event) { diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAOriginatorHeader.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAOriginatorHeader.java index a92eaa87546..474f7e0ac23 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAOriginatorHeader.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAOriginatorHeader.java @@ -11,7 +11,7 @@ package org.eclipse.osee.ats.editor; import java.util.logging.Level; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.ats.util.PromptChangeUtil; import org.eclipse.osee.framework.core.exception.OseeCoreException; @@ -36,7 +36,7 @@ public class SMAOriginatorHeader extends Composite { private static String ORIGINATOR = "Originator:"; private Label origLabel; - public SMAOriginatorHeader(Composite parent, int style, final StateMachineArtifact sma, XFormToolkit toolkit) { + public SMAOriginatorHeader(Composite parent, int style, final AbstractWorkflowArtifact sma, XFormToolkit toolkit) { super(parent, style); setLayoutData(new GridData()); setLayout(ALayout.getZeroMarginLayout(2, false)); diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAPrint.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAPrint.java index 16c53363173..af65a425ba9 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAPrint.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAPrint.java @@ -14,11 +14,11 @@ package org.eclipse.osee.ats.editor; import java.util.Arrays; import java.util.logging.Level; import org.eclipse.jface.action.Action; +import org.eclipse.osee.ats.artifact.AbstractTaskableArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.artifact.AtsAttributeTypes; import org.eclipse.osee.ats.artifact.NoteItem; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; import org.eclipse.osee.ats.artifact.TaskArtifact; -import org.eclipse.osee.ats.artifact.TaskableStateMachineArtifact; import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact; import org.eclipse.osee.ats.editor.widget.ReviewInfoXWidget; import org.eclipse.osee.ats.internal.AtsPlugin; @@ -40,10 +40,10 @@ import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkPage; */ public class SMAPrint extends Action { - private final StateMachineArtifact sma; + private final AbstractWorkflowArtifact sma; boolean includeTaskList = true; - public SMAPrint(StateMachineArtifact sma) { + public SMAPrint(AbstractWorkflowArtifact sma) { super(); this.sma = sma; } @@ -115,7 +115,7 @@ public class SMAPrint extends Action { } private void getTaskHtml(XResultData rd) throws OseeCoreException { - if (!sma.isTaskable()) { + if (!(sma instanceof AbstractTaskableArtifact)) { return; } try { @@ -129,7 +129,7 @@ public class SMAPrint extends Action { "Hrs", "Resolution", "ID"})); - for (TaskArtifact art : ((TaskableStateMachineArtifact) sma).getTaskArtifacts()) { + for (TaskArtifact art : ((AbstractTaskableArtifact) sma).getTaskArtifacts()) { rd.addRaw(AHTML.addRowMultiColumnTable(new String[] { art.getName(), art.getStateMgr().getCurrentStateName().replaceAll("(Task|State)", ""), @@ -174,7 +174,7 @@ public class SMAPrint extends Action { } } - private String getReviewData(StateMachineArtifact sma, AtsWorkPage page) throws OseeCoreException { + private String getReviewData(AbstractWorkflowArtifact sma, AtsWorkPage page) throws OseeCoreException { if (sma instanceof TeamWorkFlowArtifact) { return ReviewInfoXWidget.toHTML((TeamWorkFlowArtifact) sma, page.getName()); } 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 8ddbdac357b..b1832620b6a 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 @@ -12,7 +12,7 @@ package org.eclipse.osee.ats.editor; import java.util.Arrays; import java.util.Collection; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.util.widgets.dialog.TaskOptionStatusDialog; import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.ui.plugin.util.Result; @@ -23,17 +23,17 @@ import org.eclipse.ui.PlatformUI; */ public class SMAPromptChangeHoursSpent { - private final Collection<? extends StateMachineArtifact> smas; + private final Collection<? extends AbstractWorkflowArtifact> smas; - public SMAPromptChangeHoursSpent(StateMachineArtifact sma) { + public SMAPromptChangeHoursSpent(AbstractWorkflowArtifact sma) { this(Arrays.asList(sma)); } - public SMAPromptChangeHoursSpent(final Collection<? extends StateMachineArtifact> smas) { + public SMAPromptChangeHoursSpent(final Collection<? extends AbstractWorkflowArtifact> smas) { this.smas = smas; } - public static boolean promptChangeStatus(Collection<? extends StateMachineArtifact> smas, boolean persist) throws OseeCoreException { + public static boolean promptChangeStatus(Collection<? extends AbstractWorkflowArtifact> smas, boolean persist) throws OseeCoreException { SMAPromptChangeHoursSpent promptChangeStatus = new SMAPromptChangeHoursSpent(smas); return promptChangeStatus.promptChangeStatus(persist).isTrue(); } 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 72e33f298cc..0b826edeca1 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 @@ -14,7 +14,7 @@ import java.util.Arrays; import java.util.Collection; import java.util.List; import org.eclipse.osee.ats.artifact.AtsAttributeTypes; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.artifact.TaskArtifact; import org.eclipse.osee.ats.util.AtsUtil; import org.eclipse.osee.ats.util.widgets.dialog.TaskOptionStatusDialog; @@ -31,24 +31,24 @@ import org.eclipse.ui.PlatformUI; */ public class SMAPromptChangeStatus { - private final Collection<? extends StateMachineArtifact> smas; + private final Collection<? extends AbstractWorkflowArtifact> smas; - public SMAPromptChangeStatus(StateMachineArtifact sma) { + public SMAPromptChangeStatus(AbstractWorkflowArtifact sma) { this(Arrays.asList(sma)); } - public SMAPromptChangeStatus(final Collection<? extends StateMachineArtifact> smas) { + public SMAPromptChangeStatus(final Collection<? extends AbstractWorkflowArtifact> smas) { this.smas = smas; } - public static boolean promptChangeStatus(Collection<? extends StateMachineArtifact> smas, boolean persist) throws OseeCoreException { + public static boolean promptChangeStatus(Collection<? extends AbstractWorkflowArtifact> smas, boolean persist) throws OseeCoreException { SMAPromptChangeStatus promptChangeStatus = new SMAPromptChangeStatus(smas); return promptChangeStatus.promptChangeStatus(persist).isTrue(); } - public static Result isValidToChangeStatus(Collection<? extends StateMachineArtifact> smas) throws OseeCoreException { + public static Result isValidToChangeStatus(Collection<? extends AbstractWorkflowArtifact> smas) throws OseeCoreException { // Don't allow statusing for any canceled tasks - for (StateMachineArtifact sma : smas) { + for (AbstractWorkflowArtifact sma : smas) { if (sma.isCancelled()) { String error = "Can not status a cancelled " + sma.getArtifactTypeName() + ".\n\nTransition out of cancelled first."; @@ -56,7 +56,7 @@ public class SMAPromptChangeStatus { } } // If task status is being changed, make sure tasks belong to current state - for (StateMachineArtifact sma : smas) { + for (AbstractWorkflowArtifact sma : smas) { if (sma instanceof TaskArtifact) { TaskArtifact taskArt = (TaskArtifact) sma; if (!taskArt.isRelatedToParentWorkflowCurrentState()) { @@ -103,7 +103,7 @@ public class SMAPromptChangeStatus { return Result.FalseResult; } - public static void performChangeStatus(Collection<? extends StateMachineArtifact> smas, List<TaskResOptionDefinition> options, String selectedOption, double hours, int percent, boolean splitHours, boolean persist) throws OseeCoreException { + public static void performChangeStatus(Collection<? extends AbstractWorkflowArtifact> smas, List<TaskResOptionDefinition> options, String selectedOption, double hours, int percent, boolean splitHours, boolean persist) throws OseeCoreException { if (splitHours) { hours = hours / smas.size(); } @@ -111,7 +111,7 @@ public class SMAPromptChangeStatus { if (persist) { transaction = new SkynetTransaction(AtsUtil.getAtsBranch(), "ATS Prompt Change Status"); } - for (StateMachineArtifact sma : smas) { + for (AbstractWorkflowArtifact sma : smas) { if (sma.getStateMgr().isUnAssigned()) { sma.getStateMgr().removeAssignee(UserManager.getUser(SystemUser.UnAssigned)); sma.getStateMgr().addAssignee(UserManager.getUser()); diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMARelationsHyperlinkComposite.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMARelationsHyperlinkComposite.java index 85c86b90b9d..9dedb79da16 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMARelationsHyperlinkComposite.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMARelationsHyperlinkComposite.java @@ -12,8 +12,8 @@ package org.eclipse.osee.ats.editor; import org.eclipse.osee.ats.AtsOpenOption; -import org.eclipse.osee.ats.artifact.ReviewSMArtifact; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractReviewArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.ats.util.AtsRelationTypes; import org.eclipse.osee.ats.util.AtsUtil; @@ -50,7 +50,7 @@ public class SMARelationsHyperlinkComposite extends Composite { CoreRelationTypes.SupportingInfo_SupportingInfo, CoreRelationTypes.Dependency__Artifact, CoreRelationTypes.Dependency__Dependency}; - private StateMachineArtifact sma; + private AbstractWorkflowArtifact sma; private Label actionableItemsLabel; public SMARelationsHyperlinkComposite(Composite parent, XFormToolkit toolkit, int style) { @@ -58,7 +58,7 @@ public class SMARelationsHyperlinkComposite extends Composite { this.toolkit = toolkit; } - public void create(StateMachineArtifact sma) throws OseeCoreException { + public void create(AbstractWorkflowArtifact sma) throws OseeCoreException { this.sma = sma; setLayout(ALayout.getZeroMarginLayout(2, false)); GridData gd = new GridData(GridData.FILL_HORIZONTAL); @@ -79,13 +79,13 @@ public class SMARelationsHyperlinkComposite extends Composite { CoreRelationTypes.SupportingInfo_SupportingInfo); // Create label for review's related actionable items (if any) - if (sma instanceof ReviewSMArtifact) { - processReviewArtifact((ReviewSMArtifact) sma); + if (sma instanceof AbstractReviewArtifact) { + processReviewArtifact((AbstractReviewArtifact) sma); } } - public static boolean relationExists(StateMachineArtifact smaArt) throws OseeCoreException { + public static boolean relationExists(AbstractWorkflowArtifact smaArt) throws OseeCoreException { for (IRelationEnumeration side : sides) { if (smaArt.getRelatedArtifacts(side).size() > 0) { return true; @@ -94,16 +94,16 @@ public class SMARelationsHyperlinkComposite extends Composite { return true; } } - if (smaArt instanceof ReviewSMArtifact && ((ReviewSMArtifact) smaArt).getActionableItemsDam().getActionableItemGuids().size() > 0) { + if (smaArt instanceof AbstractReviewArtifact && ((AbstractReviewArtifact) smaArt).getActionableItemsDam().getActionableItemGuids().size() > 0) { return true; } return false; } private String getCompletedCancelledString(Artifact art) throws OseeCoreException { - if (art instanceof StateMachineArtifact) { - if (((StateMachineArtifact) art).isCancelledOrCompleted()) { - return " " + ((StateMachineArtifact) art).getStateMgr().getCurrentStateName() + " "; + if (art instanceof AbstractWorkflowArtifact) { + if (((AbstractWorkflowArtifact) art).isCancelledOrCompleted()) { + return " " + ((AbstractWorkflowArtifact) art).getStateMgr().getCurrentStateName() + " "; } } return ""; @@ -138,7 +138,7 @@ public class SMARelationsHyperlinkComposite extends Composite { } } - private void processReviewArtifact(final ReviewSMArtifact reviewArt) throws OseeCoreException { + private void processReviewArtifact(final AbstractReviewArtifact reviewArt) throws OseeCoreException { if (reviewArt.getActionableItemsDam().getActionableItemGuids().isEmpty()) { return; } @@ -165,12 +165,12 @@ public class SMARelationsHyperlinkComposite extends Composite { } private void refreshActionableItemsLabel() throws OseeCoreException { - if (actionableItemsLabel != null && sma instanceof ReviewSMArtifact) { - actionableItemsLabel.setText("This \"" + ((ReviewSMArtifact) sma).getArtifactTypeName() + + if (actionableItemsLabel != null && sma instanceof AbstractReviewArtifact) { + actionableItemsLabel.setText("This \"" + ((AbstractReviewArtifact) sma).getArtifactTypeName() + // "\" is review of Actionable Items \"" + // - ((ReviewSMArtifact) sma).getActionableItemsDam().getActionableItemsStr() + "\" "); + ((AbstractReviewArtifact) sma).getActionableItemsDam().getActionableItemsStr() + "\" "); } } @@ -178,7 +178,7 @@ public class SMARelationsHyperlinkComposite extends Composite { refreshActionableItemsLabel(); } - private void editRelatedActionableItems(final ReviewSMArtifact reviewArt) { + private void editRelatedActionableItems(final AbstractReviewArtifact reviewArt) { final AICheckTreeDialog diag = new AICheckTreeDialog("Edit Actionable Items", "Select Actionable Items for this review", Active.Active); try { diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMARelationsSection.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMARelationsSection.java index 2576b7ba16c..6421c4b6e05 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMARelationsSection.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMARelationsSection.java @@ -14,7 +14,7 @@ import java.util.Arrays; import java.util.List; import org.eclipse.jface.viewers.Viewer; import org.eclipse.jface.viewers.ViewerFilter; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.util.AtsRelationTypes; import org.eclipse.osee.ats.util.AtsUtil; import org.eclipse.osee.framework.core.enums.CoreRelationTypes; @@ -63,7 +63,7 @@ public class SMARelationsSection extends RelationsFormSection { @Override protected void addDragAndDrop(Control dropArea) { - new SMADragAndDrop(dropArea, (StateMachineArtifact) getEditorInput().getArtifact(), SMAEditor.EDITOR_ID); + new SMADragAndDrop(dropArea, (AbstractWorkflowArtifact) getEditorInput().getArtifact(), SMAEditor.EDITOR_ID); } private static ViewerFilter userRelationsFilter = new ViewerFilter() { diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMATargetVersionInfoComposite.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMATargetVersionInfoComposite.java index e7e9d918d2d..6cce624975a 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMATargetVersionInfoComposite.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMATargetVersionInfoComposite.java @@ -11,7 +11,7 @@ package org.eclipse.osee.ats.editor; import org.eclipse.jface.dialogs.IMessageProvider; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.artifact.VersionArtifact.VersionReleaseType; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.ats.util.AtsUtil; @@ -40,12 +40,12 @@ import org.eclipse.ui.forms.widgets.Hyperlink; */ public class SMATargetVersionInfoComposite extends Composite { - private final StateMachineArtifact sma; + private final AbstractWorkflowArtifact sma; private Hyperlink link; private Label label; private final IManagedForm managedForm; - public SMATargetVersionInfoComposite(final StateMachineArtifact sma, Composite parent, IManagedForm managedForm, XFormToolkit toolkit) throws OseeCoreException { + public SMATargetVersionInfoComposite(final AbstractWorkflowArtifact sma, Composite parent, IManagedForm managedForm, XFormToolkit toolkit) throws OseeCoreException { super(parent, SWT.NONE); this.sma = sma; this.managedForm = managedForm; diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMATargetedVersionHeader.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMATargetedVersionHeader.java index fc4fa55f30a..c69f9be4396 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMATargetedVersionHeader.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMATargetedVersionHeader.java @@ -11,7 +11,7 @@ package org.eclipse.osee.ats.editor; import java.util.logging.Level; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.artifact.VersionArtifact.VersionReleaseType; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.ats.util.AtsUtil; @@ -38,7 +38,7 @@ public class SMATargetedVersionHeader extends Composite { private static String TARGET_VERSION = "Target Version:"; Label valueLabel; - public SMATargetedVersionHeader(Composite parent, int style, final StateMachineArtifact sma, XFormToolkit toolkit) { + public SMATargetedVersionHeader(Composite parent, int style, final AbstractWorkflowArtifact sma, XFormToolkit toolkit) { super(parent, style); setLayoutData(new GridData()); setLayout(ALayout.getZeroMarginLayout(2, false)); @@ -89,7 +89,7 @@ public class SMATargetedVersionHeader extends Composite { } - private void updateLabel(StateMachineArtifact sma) throws OseeCoreException { + private void updateLabel(AbstractWorkflowArtifact sma) throws OseeCoreException { String value = "Not Set"; if (sma.getTargetedForVersion() != null) { value = sma.getTargetedForVersion().getName(); diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAWorkFlowSection.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAWorkFlowSection.java index 604510a35e8..9934a9900f1 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAWorkFlowSection.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAWorkFlowSection.java @@ -22,15 +22,14 @@ import org.eclipse.jface.viewers.ArrayContentProvider; import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.osee.ats.artifact.ATSLog.LogType; +import org.eclipse.osee.ats.artifact.AbstractReviewArtifact; +import org.eclipse.osee.ats.artifact.AbstractReviewArtifact.ReviewBlockType; +import org.eclipse.osee.ats.artifact.AbstractTaskableArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.artifact.LogItem; -import org.eclipse.osee.ats.artifact.ReviewSMArtifact; -import org.eclipse.osee.ats.artifact.ReviewSMArtifact.ReviewBlockType; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; -import org.eclipse.osee.ats.artifact.StateMachineArtifact.TransitionOption; import org.eclipse.osee.ats.artifact.TaskArtifact; -import org.eclipse.osee.ats.artifact.TaskableStateMachineArtifact; import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact; -import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact.DefaultTeamState; +import org.eclipse.osee.ats.editor.stateItem.AtsStateItemManager; import org.eclipse.osee.ats.editor.stateItem.IAtsStateItem; import org.eclipse.osee.ats.editor.widget.ReviewInfoXWidget; import org.eclipse.osee.ats.editor.widget.StateHoursSpentXWidget; @@ -38,6 +37,8 @@ import org.eclipse.osee.ats.editor.widget.StatePercentCompleteXWidget; import org.eclipse.osee.ats.editor.widget.TaskInfoXWidget; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.ats.util.AtsUtil; +import org.eclipse.osee.ats.util.DefaultTeamState; +import org.eclipse.osee.ats.util.TransitionOption; import org.eclipse.osee.ats.util.XCancellationReasonTextWidget; import org.eclipse.osee.ats.util.widgets.ReviewManager; import org.eclipse.osee.ats.util.widgets.dialog.SMAStatusDialog; @@ -98,7 +99,7 @@ public class SMAWorkFlowSection extends SectionPart { private XComboViewer transitionToStateCombo; private Button transitionButton; private Label transitionAssigneesLabel; - protected final StateMachineArtifact sma; + protected final AbstractWorkflowArtifact sma; private final AtsWorkPage atsWorkPage; private final boolean isEditable, isCurrentState, isGlobalEditable; private final XFormToolkit toolkit; @@ -107,7 +108,7 @@ public class SMAWorkFlowSection extends SectionPart { private boolean sectionCreated = false; private Section section; - public SMAWorkFlowSection(Composite parent, XFormToolkit toolkit, int style, AtsWorkPage page, StateMachineArtifact sma) throws OseeCoreException { + public SMAWorkFlowSection(Composite parent, XFormToolkit toolkit, int style, AtsWorkPage page, AbstractWorkflowArtifact sma) throws OseeCoreException { super(parent, toolkit, style | ExpandableComposite.TWISTIE | ExpandableComposite.TITLE_BAR); this.toolkit = toolkit; this.atsWorkPage = page; @@ -134,7 +135,7 @@ public class SMAWorkFlowSection extends SectionPart { section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); // section.setBackground(Displays.getSystemColor(SWT.COLOR_MAGENTA)); - boolean isCurrentSectionExpanded = sma.isCurrentSectionExpanded(atsWorkPage.getName()); + boolean isCurrentSectionExpanded = isCurrentSectionExpanded(atsWorkPage.getName()); if (isCurrentSectionExpanded) { createSection(section); @@ -159,6 +160,13 @@ public class SMAWorkFlowSection extends SectionPart { } } + /** + * Override to apply different algorithm to current section expansion. + */ + public boolean isCurrentSectionExpanded(String stateName) throws OseeCoreException { + return sma.getStateMgr().getCurrentStateName().equals(stateName); + } + private synchronized void createSection(Section section) throws OseeCoreException { if (sectionCreated) { return; @@ -196,7 +204,7 @@ public class SMAWorkFlowSection extends SectionPart { createMetricsHeader(workComp); // Add any dynamic XWidgets declared for page by IAtsStateItem extensions - for (IAtsStateItem item : sma.getStateItems().getStateItems(atsWorkPage.getId())) { + for (IAtsStateItem item : AtsStateItemManager.getStateItems(atsWorkPage.getId())) { for (XWidget xWidget : item.getDynamicXWidgetsPreBody(sma)) { xWidget.createWidgets(workComp, 2); allXWidgets.add(xWidget); @@ -221,7 +229,7 @@ public class SMAWorkFlowSection extends SectionPart { allXWidgets.addAll(dynamicXWidgetLayout.getXWidgets()); // Add any dynamic XWidgets declared for page by IAtsStateItem extensions - for (IAtsStateItem item : sma.getStateItems().getStateItems(atsWorkPage.getId())) { + for (IAtsStateItem item : AtsStateItemManager.getStateItems(atsWorkPage.getId())) { for (XWidget xWidget : item.getDynamicXWidgetsPostBody(sma)) { xWidget.createWidgets(workComp, 2); allXWidgets.add(xWidget); @@ -239,7 +247,7 @@ public class SMAWorkFlowSection extends SectionPart { } // Check extension points for page creation - for (IAtsStateItem item : sma.getStateItems().getStateItems(atsWorkPage.getId())) { + for (IAtsStateItem item : AtsStateItemManager.getStateItems(atsWorkPage.getId())) { Result result = item.pageCreated(toolkit, atsWorkPage, sma, xModListener, isEditable || isGlobalEditable); if (result.isFalse()) { result.popup(); @@ -299,20 +307,15 @@ public class SMAWorkFlowSection extends SectionPart { } private void createTaskFooter(Composite parent, String forStateName) throws OseeCoreException { - if (isShowTaskInfo()) { + if (sma instanceof AbstractTaskableArtifact) { Composite comp = new Composite(parent, SWT.None); GridLayout layout = new GridLayout(6, false); comp.setLayout(layout); comp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - allXWidgets.add(new TaskInfoXWidget(getManagedForm(), ((TaskableStateMachineArtifact) sma), forStateName, - comp, 2)); + allXWidgets.add(new TaskInfoXWidget(getManagedForm(), ((AbstractTaskableArtifact) sma), forStateName, comp, 2)); } } - protected boolean isShowTaskInfo() throws OseeCoreException { - return sma.isTaskable(); - } - protected boolean isShowReviewInfo() { return sma.isTeamWorkflow(); } @@ -419,7 +422,7 @@ public class SMAWorkFlowSection extends SectionPart { return; } // Notify extensions of widget modified - for (IAtsStateItem item : sma.getStateItems().getStateItems(atsWorkPage.getId())) { + for (IAtsStateItem item : AtsStateItemManager.getStateItems(atsWorkPage.getId())) { try { item.widgetModified(fSection, xWidget); } catch (Exception ex) { @@ -583,7 +586,7 @@ public class SMAWorkFlowSection extends SectionPart { public void updateTransitionToAssignees() throws OseeCoreException { Collection<User> assignees = null; // Determine if the is an override set of assigness - for (IAtsStateItem item : sma.getStateItems().getStateItems(atsWorkPage.getId())) { + for (IAtsStateItem item : AtsStateItemManager.getStateItems(atsWorkPage.getId())) { assignees = item.getOverrideTransitionToAssignees(this); if (assignees != null) { break; @@ -600,7 +603,7 @@ public class SMAWorkFlowSection extends SectionPart { public void updateTransitionToState() throws OseeCoreException { // Determine if there is a transitionToStateOverride for this page String transitionStateOverride = null; - for (IAtsStateItem item : sma.getStateItems().getStateItems(atsWorkPage.getId())) { + for (IAtsStateItem item : AtsStateItemManager.getStateItems(atsWorkPage.getId())) { transitionStateOverride = item.getOverrideTransitionToStateName(this); if (transitionStateOverride != null) { break; @@ -726,15 +729,13 @@ public class SMAWorkFlowSection extends SectionPart { } // Loop through this state's tasks to confirm complete - if (sma.isTaskable()) { - if (sma instanceof TaskableStateMachineArtifact) { - for (TaskArtifact taskArt : ((TaskableStateMachineArtifact) sma).getTaskArtifactsFromCurrentState()) { - if (taskArt.isInWork()) { - AWorkbench.popup( - "Transition Blocked", - "Task Not Complete\n\nTitle: " + taskArt.getName() + "\n\nHRID: " + taskArt.getHumanReadableId()); - return; - } + if (sma instanceof AbstractTaskableArtifact && !sma.isCancelledOrCompleted()) { + for (TaskArtifact taskArt : ((AbstractTaskableArtifact) sma).getTaskArtifactsFromCurrentState()) { + if (taskArt.isInWork()) { + AWorkbench.popup( + "Transition Blocked", + "Task Not Complete\n\nTitle: " + taskArt.getName() + "\n\nHRID: " + taskArt.getHumanReadableId()); + return; } } } @@ -751,7 +752,7 @@ public class SMAWorkFlowSection extends SectionPart { // Loop through this state's blocking reviews to confirm complete if (sma.isTeamWorkflow()) { - for (ReviewSMArtifact reviewArt : ReviewManager.getReviewsFromCurrentState((TeamWorkFlowArtifact) sma)) { + for (AbstractReviewArtifact reviewArt : ReviewManager.getReviewsFromCurrentState((TeamWorkFlowArtifact) sma)) { if (reviewArt.getReviewBlockType() == ReviewBlockType.Transition && !reviewArt.isCancelledOrCompleted()) { AWorkbench.popup("Transition Blocked", "All Blocking Reviews must be completed before transition."); return; @@ -760,7 +761,7 @@ public class SMAWorkFlowSection extends SectionPart { } // Check extension points for valid transition - for (IAtsStateItem item : sma.getStateItems().getStateItems(atsWorkPage.getId())) { + for (IAtsStateItem item : AtsStateItemManager.getStateItems(atsWorkPage.getId())) { try { result = item.transitioning(sma, sma.getStateMgr().getCurrentStateName(), @@ -850,7 +851,7 @@ public class SMAWorkFlowSection extends SectionPart { return transitionToStateCombo; } - public StateMachineArtifact getSma() { + public AbstractWorkflowArtifact getSma() { return sma; } @@ -872,7 +873,7 @@ public class SMAWorkFlowSection extends SectionPart { return widgets; } - public static boolean isEditable(StateMachineArtifact sma, AtsWorkPage page) throws OseeCoreException { + public static boolean isEditable(AbstractWorkflowArtifact sma, AtsWorkPage page) throws OseeCoreException { // must be writeable return !sma.isReadOnly() && // and access control writeable diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAWorkFlowTab.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAWorkFlowTab.java index 3e3b19c8630..8b748852cc8 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAWorkFlowTab.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAWorkFlowTab.java @@ -40,7 +40,7 @@ import org.eclipse.osee.ats.actions.ShowMergeManagerAction; import org.eclipse.osee.ats.artifact.AtsAttributeTypes; import org.eclipse.osee.ats.artifact.GoalArtifact; import org.eclipse.osee.ats.artifact.NoteItem; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact; import org.eclipse.osee.ats.config.AtsBulkLoad; import org.eclipse.osee.ats.internal.AtsPlugin; @@ -91,7 +91,7 @@ import org.eclipse.ui.progress.UIJob; * @author Donald G. Dunne */ public class SMAWorkFlowTab extends FormPage implements IActionable { - private final StateMachineArtifact sma; + private final AbstractWorkflowArtifact sma; private final ArrayList<SMAWorkFlowSection> sections = new ArrayList<SMAWorkFlowSection>(); private final XFormToolkit toolkit; private final List<AtsWorkPage> atsWorkPages = new ArrayList<AtsWorkPage>(); @@ -113,7 +113,7 @@ public class SMAWorkFlowTab extends FormPage implements IActionable { private static String PRIVILEGED_EDIT = "(Priviledged Edit Enabled)"; public static String ID = "ats.workflow.tab"; - public SMAWorkFlowTab(StateMachineArtifact sma) { + public SMAWorkFlowTab(AbstractWorkflowArtifact sma) { super(sma.getEditor(), ID, "Workflow"); this.sma = sma; toolkit = sma.getEditor().getToolkit(); @@ -633,7 +633,7 @@ public class SMAWorkFlowTab extends FormPage implements IActionable { } } - public static void createSMANotesHeader(Composite comp, XFormToolkit toolkit, StateMachineArtifact sma, int horizontalSpan) throws OseeCoreException { + public static void createSMANotesHeader(Composite comp, XFormToolkit toolkit, AbstractWorkflowArtifact sma, int horizontalSpan) throws OseeCoreException { // Display SMA Note String note = sma.getSoleAttributeValue(AtsAttributeTypes.SmaNote, ""); if (!note.equals("")) { @@ -641,7 +641,7 @@ public class SMAWorkFlowTab extends FormPage implements IActionable { } } - public static void createStateNotesHeader(Composite comp, XFormToolkit toolkit, StateMachineArtifact sma, int horizontalSpan, String forStateName) { + public static void createStateNotesHeader(Composite comp, XFormToolkit toolkit, AbstractWorkflowArtifact sma, int horizontalSpan, String forStateName) { // Display global Notes for (NoteItem noteItem : sma.getNotes().getNoteItems()) { if (forStateName == null || noteItem.getState().equals(forStateName)) { diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAWorkflowMetricsHeader.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAWorkflowMetricsHeader.java index 603ce6a76ab..58d822aeee0 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAWorkflowMetricsHeader.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAWorkflowMetricsHeader.java @@ -11,7 +11,7 @@ package org.eclipse.osee.ats.editor; import java.util.logging.Level; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.ats.util.AtsUtil; import org.eclipse.osee.ats.world.WorldXViewerFactory; @@ -30,10 +30,10 @@ import org.eclipse.swt.widgets.Label; */ public class SMAWorkflowMetricsHeader extends Composite { - private final StateMachineArtifact sma; + private final AbstractWorkflowArtifact sma; private Label percentLabel, estHoursLabel, hoursSpentLabel, remainHoursLabel; - public SMAWorkflowMetricsHeader(Composite parent, XFormToolkit toolkit, StateMachineArtifact sma) { + public SMAWorkflowMetricsHeader(Composite parent, XFormToolkit toolkit, AbstractWorkflowArtifact sma) { super(parent, SWT.NONE); this.sma = sma; try { diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/stateItem/AtsDecisionReviewDecisionStateItem.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/stateItem/AtsDecisionReviewDecisionStateItem.java index 4a7f1067290..0ed71a358d0 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/stateItem/AtsDecisionReviewDecisionStateItem.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/stateItem/AtsDecisionReviewDecisionStateItem.java @@ -15,7 +15,7 @@ import java.util.Collection; import java.util.List; import org.eclipse.osee.ats.artifact.AtsAttributeTypes; import org.eclipse.osee.ats.artifact.DecisionReviewArtifact; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.editor.SMAWorkFlowSection; import org.eclipse.osee.ats.util.widgets.DecisionOption; import org.eclipse.osee.ats.util.widgets.XDecisionOptions; @@ -45,14 +45,14 @@ public class AtsDecisionReviewDecisionStateItem extends AtsStateItem { if (xWidget == null) { throw new OseeStateException("Can't retrieve decision review combo widget to set."); } - if (!(art instanceof StateMachineArtifact)) { + if (!(art instanceof AbstractWorkflowArtifact)) { throw new OseeCoreException( "AtsDecisionReviewDecisionStateItem.xWidgetCreating expected a StateMachineArtifact"); } if (xWidget.getLabel().equals(AtsAttributeTypes.Decision.getUnqualifiedName())) { XComboDam decisionComboDam = (XComboDam) xWidget; List<String> options = new ArrayList<String>(); - XDecisionOptions xDecOptions = new XDecisionOptions((StateMachineArtifact) art); + XDecisionOptions xDecOptions = new XDecisionOptions((AbstractWorkflowArtifact) art); for (DecisionOption opt : xDecOptions.getDecisionOptions()) { options.add(opt.getName()); } 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 bf9eddc12e0..ae4b0bcab9a 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 @@ -12,7 +12,7 @@ package org.eclipse.osee.ats.editor.stateItem; import java.util.Collection; import org.eclipse.osee.ats.artifact.DecisionReviewArtifact; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.util.widgets.XDecisionOptions; import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.skynet.core.User; @@ -29,7 +29,7 @@ public class AtsDecisionReviewPrepareStateItem extends AtsStateItem { } @Override - public Result transitioning(StateMachineArtifact sma, String fromState, String toState, Collection<User> toAssignees) throws OseeCoreException { + public Result transitioning(AbstractWorkflowArtifact sma, String fromState, String toState, Collection<User> toAssignees) throws OseeCoreException { if (fromState.equals(DecisionReviewArtifact.DecisionReviewState.Prepare.name()) && toState.equals(DecisionReviewArtifact.DecisionReviewState.Decision.name())) { XDecisionOptions decOptions = new XDecisionOptions(sma); return decOptions.validateDecisionOptions(); 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 2df7c1f3ef0..16dd5edca16 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 @@ -12,7 +12,7 @@ package org.eclipse.osee.ats.editor.stateItem; import java.util.Collection; import java.util.logging.Level; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.ats.workflow.item.AtsWorkDefinitions; @@ -32,7 +32,7 @@ public class AtsForceAssigneesToTeamLeadsStateItem extends AtsStateItem { } @Override - public void transitioned(StateMachineArtifact sma, String fromState, String toState, Collection<User> toAssignees, SkynetTransaction transaction) throws OseeCoreException { + public void transitioned(AbstractWorkflowArtifact sma, String fromState, String toState, Collection<User> toAssignees, SkynetTransaction transaction) throws OseeCoreException { super.transitioned(sma, fromState, toState, toAssignees, transaction); if (sma.isTeamWorkflow() && AtsWorkDefinitions.isForceAssigneesToTeamLeads(sma.getWorkPageDefinitionByName(toState))) { // Set Assignees to all user roles users diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/stateItem/AtsHandleAddReviewRuleStateItem.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/stateItem/AtsHandleAddReviewRuleStateItem.java index 7330b6682a6..ca82f02fdc7 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/stateItem/AtsHandleAddReviewRuleStateItem.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/stateItem/AtsHandleAddReviewRuleStateItem.java @@ -14,7 +14,7 @@ import java.util.Arrays; import java.util.Collection; import org.eclipse.osee.ats.artifact.DecisionReviewArtifact; import org.eclipse.osee.ats.artifact.PeerToPeerReviewArtifact; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact; import org.eclipse.osee.ats.workflow.item.AtsAddDecisionReviewRule; import org.eclipse.osee.ats.workflow.item.AtsAddDecisionReviewRule.DecisionParameter; @@ -38,7 +38,7 @@ public class AtsHandleAddReviewRuleStateItem extends AtsStateItem { } @Override - public void transitioned(StateMachineArtifact sma, String fromState, String toState, Collection<User> toAssignees, SkynetTransaction transaction) throws OseeCoreException { + public void transitioned(AbstractWorkflowArtifact sma, String fromState, String toState, Collection<User> toAssignees, SkynetTransaction transaction) throws OseeCoreException { super.transitioned(sma, fromState, toState, toAssignees, transaction); // Create any decision or peerToPeer reviews for transitionTo and transitionFrom @@ -47,7 +47,7 @@ public class AtsHandleAddReviewRuleStateItem extends AtsStateItem { } } - public static void runRule(StateMachineArtifact sma, String toState, String ruleId, SkynetTransaction transaction) throws OseeCoreException { + public static void runRule(AbstractWorkflowArtifact sma, String toState, String ruleId, SkynetTransaction transaction) throws OseeCoreException { for (WorkRuleDefinition workRuleDef : sma.getWorkRulesStartsWith(ruleId)) { if (!sma.isTeamWorkflow()) { continue; diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/stateItem/AtsPeerToPeerReviewPrepareStateItem.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/stateItem/AtsPeerToPeerReviewPrepareStateItem.java index 4d16b395858..1a063acf8be 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/stateItem/AtsPeerToPeerReviewPrepareStateItem.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/stateItem/AtsPeerToPeerReviewPrepareStateItem.java @@ -12,7 +12,7 @@ package org.eclipse.osee.ats.editor.stateItem; import java.util.logging.Level; import org.eclipse.osee.ats.artifact.AtsAttributeTypes; -import org.eclipse.osee.ats.artifact.ReviewSMArtifact; +import org.eclipse.osee.ats.artifact.AbstractReviewArtifact; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.ats.workflow.AtsWorkPage; import org.eclipse.osee.framework.core.exception.OseeCoreException; @@ -37,7 +37,7 @@ public class AtsPeerToPeerReviewPrepareStateItem extends AtsStateItem { public void xWidgetCreated(XWidget widget, FormToolkit toolkit, AtsWorkPage page, Artifact art, XModifiedListener modListener, boolean isEditable) throws OseeCoreException { super.xWidgetCreated(widget, toolkit, page, art, modListener, isEditable); try { - if (art instanceof ReviewSMArtifact && ((ReviewSMArtifact) art).getParentSMA() == null) { + if (art instanceof AbstractReviewArtifact && ((AbstractReviewArtifact) art).getParentSMA() == null) { if (widget.getLabel().equals(AtsAttributeTypes.ReviewBlocks.getUnqualifiedName())) { XComboDam decisionComboDam = (XComboDam) widget; decisionComboDam.setEnabled(false); 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 14790db3c0e..3570d4e7931 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 @@ -14,7 +14,7 @@ import java.util.Collection; import java.util.HashSet; import java.util.Set; import org.eclipse.osee.ats.artifact.PeerToPeerReviewArtifact; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.util.widgets.role.UserRole; import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.skynet.core.User; @@ -31,7 +31,7 @@ public class AtsPeerToPeerReviewReviewStateItem extends AtsStateItem { } @Override - public void transitioned(StateMachineArtifact sma, String fromState, String toState, Collection<User> toAssignees, SkynetTransaction transaction) throws OseeCoreException { + public void transitioned(AbstractWorkflowArtifact sma, String fromState, String toState, Collection<User> toAssignees, SkynetTransaction transaction) throws OseeCoreException { super.transitioned(sma, fromState, toState, toAssignees, transaction); if (!toState.equals(PeerToPeerReviewArtifact.PeerToPeerReviewState.Review.name())) { return; 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 de237e97c8d..b44a5e81fcd 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 @@ -14,7 +14,7 @@ import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.List; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.editor.SMAWorkFlowSection; import org.eclipse.osee.ats.workflow.AtsWorkPage; import org.eclipse.osee.framework.core.exception.OseeCoreException; @@ -35,13 +35,13 @@ public abstract class AtsStateItem implements IAtsStateItem { @SuppressWarnings("unused") @Override - public Result committing(StateMachineArtifact sma) throws OseeCoreException { + public Result committing(AbstractWorkflowArtifact sma) throws OseeCoreException { return Result.TrueResult; } @SuppressWarnings("unused") @Override - public String getBranchShortName(StateMachineArtifact sma) throws OseeCoreException { + public String getBranchShortName(AbstractWorkflowArtifact sma) throws OseeCoreException { return null; } @@ -72,31 +72,31 @@ public abstract class AtsStateItem implements IAtsStateItem { @SuppressWarnings("unused") @Override - public List<XWidget> getDynamicXWidgetsPostBody(StateMachineArtifact sma) throws OseeCoreException { + public List<XWidget> getDynamicXWidgetsPostBody(AbstractWorkflowArtifact sma) throws OseeCoreException { return Collections.emptyList(); } @SuppressWarnings("unused") @Override - public List<XWidget> getDynamicXWidgetsPreBody(StateMachineArtifact sma) throws OseeCoreException { + public List<XWidget> getDynamicXWidgetsPreBody(AbstractWorkflowArtifact sma) throws OseeCoreException { return Collections.emptyList(); } @SuppressWarnings("unused") @Override - public Result pageCreated(FormToolkit toolkit, AtsWorkPage page, StateMachineArtifact sma, XModifiedListener xModListener, boolean isEditable) throws OseeCoreException { + public Result pageCreated(FormToolkit toolkit, AtsWorkPage page, AbstractWorkflowArtifact sma, XModifiedListener xModListener, boolean isEditable) throws OseeCoreException { return Result.TrueResult; } @SuppressWarnings("unused") @Override - public void transitioned(StateMachineArtifact sma, String fromState, String toState, Collection<User> toAssignees, SkynetTransaction transaction) throws OseeCoreException { + public void transitioned(AbstractWorkflowArtifact sma, String fromState, String toState, Collection<User> toAssignees, SkynetTransaction transaction) throws OseeCoreException { // provided for subclass implementation } @SuppressWarnings("unused") @Override - public Result transitioning(StateMachineArtifact sma, String fromState, String toState, Collection<User> toAssignees) throws OseeCoreException { + public Result transitioning(AbstractWorkflowArtifact sma, String fromState, String toState, Collection<User> toAssignees) throws OseeCoreException { return Result.TrueResult; } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/stateItem/AtsStateItems.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/stateItem/AtsStateItemManager.java index e95a9975b9f..27d5f12865b 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/stateItem/AtsStateItems.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/stateItem/AtsStateItemManager.java @@ -17,7 +17,7 @@ import org.eclipse.core.runtime.IConfigurationElement; import org.eclipse.core.runtime.IExtension; import org.eclipse.core.runtime.IExtensionPoint; import org.eclipse.core.runtime.Platform; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.logging.OseeLevel; @@ -27,11 +27,11 @@ import org.osgi.framework.Bundle; /** * @author Donald G. Dunne */ -public class AtsStateItems { +public class AtsStateItemManager { - private static List<IAtsStateItem> stateItems = new ArrayList<IAtsStateItem>(); + private final static List<IAtsStateItem> stateItems = new ArrayList<IAtsStateItem>(); - public List<IAtsStateItem> getStateItems(String stateId) throws OseeCoreException { + public static List<IAtsStateItem> getStateItems(String stateId) throws OseeCoreException { loadAllStateItems(); List<IAtsStateItem> items = new ArrayList<IAtsStateItem>(); for (IAtsStateItem item : stateItems) { @@ -42,12 +42,12 @@ public class AtsStateItems { return items; } - public List<IAtsStateItem> getCurrentPageStateItems(StateMachineArtifact sma) throws OseeCoreException { + public static List<IAtsStateItem> getCurrentPageStateItems(AbstractWorkflowArtifact sma) throws OseeCoreException { return getStateItems(sma.getWorkPageDefinition().getId()); } @SuppressWarnings({"rawtypes"}) - private void loadAllStateItems() { + private static void loadAllStateItems() { if (stateItems.size() > 0) { return; } @@ -85,9 +85,6 @@ public class AtsStateItems { } } - /** - * @return the stateItems - */ public static List<IAtsStateItem> getAllStateItems() { return stateItems; } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/stateItem/IAtsStateItem.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/stateItem/IAtsStateItem.java index cc07f432daf..b2c3da3848d 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/stateItem/IAtsStateItem.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/stateItem/IAtsStateItem.java @@ -12,7 +12,7 @@ package org.eclipse.osee.ats.editor.stateItem; import java.util.Collection; import java.util.List; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.editor.SMAWorkFlowSection; import org.eclipse.osee.ats.workflow.AtsWorkPage; import org.eclipse.osee.framework.core.exception.OseeCoreException; @@ -29,7 +29,7 @@ import org.eclipse.ui.forms.widgets.FormToolkit; */ public interface IAtsStateItem { - public Result pageCreated(FormToolkit toolkit, AtsWorkPage page, StateMachineArtifact sma, XModifiedListener xModListener, boolean isEditable) throws OseeCoreException; + public Result pageCreated(FormToolkit toolkit, AtsWorkPage page, AbstractWorkflowArtifact sma, XModifiedListener xModListener, boolean isEditable) throws OseeCoreException; public Result xWidgetCreating(XWidget xWidget, FormToolkit toolkit, AtsWorkPage page, Artifact art, XModifiedListener xModListener, boolean isEditable) throws OseeCoreException; @@ -43,7 +43,7 @@ public interface IAtsStateItem { public String getDescription() throws OseeCoreException; - public String getBranchShortName(StateMachineArtifact sma) throws OseeCoreException; + public String getBranchShortName(AbstractWorkflowArtifact sma) throws OseeCoreException; public boolean isAccessControlViaAssigneesEnabledForBranching() throws OseeCoreException; @@ -52,17 +52,17 @@ public interface IAtsStateItem { /** * @return Result of operation. If Result.isFalse(), transition will not continue and Result.popup will occur. */ - public Result transitioning(StateMachineArtifact sma, String fromState, String toState, Collection<User> toAssignees) throws OseeCoreException; + public Result transitioning(AbstractWorkflowArtifact sma, String fromState, String toState, Collection<User> toAssignees) throws OseeCoreException; - public void transitioned(StateMachineArtifact sma, String fromState, String toState, Collection<User> toAssignees, SkynetTransaction transaction) throws OseeCoreException; + public void transitioned(AbstractWorkflowArtifact sma, String fromState, String toState, Collection<User> toAssignees, SkynetTransaction transaction) throws OseeCoreException; /** * @return Result of operation. If Result.isFalse(), commit will not continue and Result.popup will occur. */ - public Result committing(StateMachineArtifact sma) throws OseeCoreException; + public Result committing(AbstractWorkflowArtifact sma) throws OseeCoreException; - public List<XWidget> getDynamicXWidgetsPostBody(StateMachineArtifact sma) throws OseeCoreException; + public List<XWidget> getDynamicXWidgetsPostBody(AbstractWorkflowArtifact sma) throws OseeCoreException; - public List<XWidget> getDynamicXWidgetsPreBody(StateMachineArtifact sma) throws OseeCoreException; + public List<XWidget> getDynamicXWidgetsPreBody(AbstractWorkflowArtifact sma) throws OseeCoreException; } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/widget/EstimatedHoursXWidget.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/widget/EstimatedHoursXWidget.java index 654693b9c07..609ff951018 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/widget/EstimatedHoursXWidget.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/widget/EstimatedHoursXWidget.java @@ -12,7 +12,7 @@ package org.eclipse.osee.ats.editor.widget; import java.util.logging.Level; import org.eclipse.osee.ats.artifact.AtsAttributeTypes; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.logging.OseeLog; @@ -25,7 +25,7 @@ import org.eclipse.swt.widgets.Composite; */ public class EstimatedHoursXWidget extends XFloatDam { - public EstimatedHoursXWidget(StateMachineArtifact sma, Composite composite, int horizontalSpan, XModifiedListener xModListener) { + public EstimatedHoursXWidget(AbstractWorkflowArtifact sma, Composite composite, int horizontalSpan, XModifiedListener xModListener) { super(AtsAttributeTypes.EstimatedHours.getUnqualifiedName()); try { if (xModListener != null) { 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 3b83bb52b74..9352125beee 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,14 +18,14 @@ import org.eclipse.jface.dialogs.IMessageProvider; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.osee.ats.actions.NewDecisionReviewJob; import org.eclipse.osee.ats.actions.NewPeerToPeerReviewJob; +import org.eclipse.osee.ats.artifact.AbstractReviewArtifact; import org.eclipse.osee.ats.artifact.PeerToPeerReviewArtifact; -import org.eclipse.osee.ats.artifact.ReviewSMArtifact; -import org.eclipse.osee.ats.artifact.StateMachineArtifact.TransitionOption; import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact; import org.eclipse.osee.ats.editor.SMAEditor; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.ats.util.AtsUtil; import org.eclipse.osee.ats.util.Overview; +import org.eclipse.osee.ats.util.TransitionOption; import org.eclipse.osee.ats.util.widgets.ReviewManager; import org.eclipse.osee.ats.util.widgets.dialog.StateListAndTitleDialog; import org.eclipse.osee.framework.core.exception.OseeCoreException; @@ -93,7 +93,7 @@ public class ReviewInfoXWidget extends XLabelValueBase { try { addAdminRightClickOption(); - Collection<ReviewSMArtifact> revArts = ReviewManager.getReviews(teamArt, forStateName); + Collection<AbstractReviewArtifact> revArts = ReviewManager.getReviews(teamArt, forStateName); if (revArts.isEmpty()) { setValueText("No Reviews Created"); } @@ -183,7 +183,7 @@ public class ReviewInfoXWidget extends XLabelValueBase { gd.horizontalSpan = 4; workComp.setLayoutData(gd); - for (ReviewSMArtifact revArt : revArts) { + for (AbstractReviewArtifact revArt : revArts) { createReviewHyperlink(workComp, managedForm, toolkit, 2, revArt, forStateName); } } @@ -211,7 +211,7 @@ public class ReviewInfoXWidget extends XLabelValueBase { html.append(AHTML.addSpace(1) + AHTML.getLabelStr(AHTML.LABEL_FONT, "\"" + forStateName + "\" State Reviews")); html.append(AHTML.startBorderTable(100, Overview.normalColor, "")); html.append(AHTML.addHeaderRowMultiColumnTable(new String[] {"Review Type", "Title", "ID"})); - for (ReviewSMArtifact art : ReviewManager.getReviews(teamArt, forStateName)) { + for (AbstractReviewArtifact art : ReviewManager.getReviews(teamArt, forStateName)) { html.append(AHTML.addRowMultiColumnTable(new String[] { art.getArtifactTypeName(), art.getName(), @@ -229,7 +229,7 @@ public class ReviewInfoXWidget extends XLabelValueBase { return ReviewInfoXWidget.toHTML(teamArt, forStateName); } - private void createReviewHyperlink(Composite comp, IManagedForm managedForm, XFormToolkit toolkit, final int horizontalSpan, final ReviewSMArtifact revArt, String forStateName) throws OseeCoreException { + private void createReviewHyperlink(Composite comp, IManagedForm managedForm, XFormToolkit toolkit, final int horizontalSpan, final AbstractReviewArtifact revArt, String forStateName) throws OseeCoreException { Composite workComp = toolkit.createContainer(comp, 1); workComp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING)); @@ -284,7 +284,7 @@ public class ReviewInfoXWidget extends XLabelValueBase { try { SkynetTransaction transaction = new SkynetTransaction(AtsUtil.getAtsBranch(), "ATS Auto Complete Reviews"); - for (ReviewSMArtifact revArt : ReviewManager.getReviewsFromCurrentState(teamArt)) { + for (AbstractReviewArtifact revArt : ReviewManager.getReviewsFromCurrentState(teamArt)) { if (!revArt.isCancelledOrCompleted()) { if (revArt.getStateMgr().isUnAssigned()) { revArt.getStateMgr().setAssignee(UserManager.getUser()); diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/widget/StateHoursSpentXWidget.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/widget/StateHoursSpentXWidget.java index ee233f8d8da..8fb31f49d1f 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/widget/StateHoursSpentXWidget.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/widget/StateHoursSpentXWidget.java @@ -12,8 +12,8 @@ package org.eclipse.osee.ats.editor.widget; import java.util.Collections; import java.util.logging.Level; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; -import org.eclipse.osee.ats.artifact.TaskableStateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; +import org.eclipse.osee.ats.artifact.AbstractTaskableArtifact; import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact; import org.eclipse.osee.ats.editor.SMAPromptChangeStatus; import org.eclipse.osee.ats.internal.AtsPlugin; @@ -31,11 +31,11 @@ import org.eclipse.ui.forms.IManagedForm; */ public class StateHoursSpentXWidget extends XHyperlinkLabelValueSelection { - private final StateMachineArtifact sma; + private final AbstractWorkflowArtifact sma; private final AtsWorkPage page; private final boolean isCurrentState; - public StateHoursSpentXWidget(IManagedForm managedForm, AtsWorkPage page, final StateMachineArtifact sma, Composite composite, int horizontalSpan, XModifiedListener xModListener, boolean isCurrentState) { + public StateHoursSpentXWidget(IManagedForm managedForm, AtsWorkPage page, final AbstractWorkflowArtifact sma, Composite composite, int horizontalSpan, XModifiedListener xModListener, boolean isCurrentState) { super("\"" + page.getName() + "\"" + " State Hours Spent"); this.page = page; this.sma = sma; @@ -80,10 +80,10 @@ public class StateHoursSpentXWidget extends XHyperlinkLabelValueSelection { sma.getStateMgr().getHoursSpent(page.getName()))); setEditable(isCurrentState && !sma.isReadOnly()); boolean breakoutNeeded = false; - if (sma instanceof TaskableStateMachineArtifact) { - if (((TaskableStateMachineArtifact) sma).hasTaskArtifacts()) { + if (sma instanceof AbstractTaskableArtifact) { + if (((AbstractTaskableArtifact) sma).hasTaskArtifacts()) { sb.append(String.format("\n Task Hours: %5.2f", - ((TaskableStateMachineArtifact) sma).getHoursSpentFromTasks(page.getName()))); + ((AbstractTaskableArtifact) sma).getHoursSpentFromTasks(page.getName()))); breakoutNeeded = true; } } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/widget/StatePercentCompleteXWidget.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/widget/StatePercentCompleteXWidget.java index bd7a4b9fa2f..610ff08fbbc 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/widget/StatePercentCompleteXWidget.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/widget/StatePercentCompleteXWidget.java @@ -12,8 +12,8 @@ package org.eclipse.osee.ats.editor.widget; import java.util.Collections; import java.util.logging.Level; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; -import org.eclipse.osee.ats.artifact.TaskableStateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; +import org.eclipse.osee.ats.artifact.AbstractTaskableArtifact; import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact; import org.eclipse.osee.ats.editor.SMAPromptChangeStatus; import org.eclipse.osee.ats.internal.AtsPlugin; @@ -31,11 +31,11 @@ import org.eclipse.ui.forms.IManagedForm; */ public class StatePercentCompleteXWidget extends XHyperlinkLabelValueSelection { - private final StateMachineArtifact sma; + private final AbstractWorkflowArtifact sma; private final AtsWorkPage page; private final boolean isCurrentState; - public StatePercentCompleteXWidget(IManagedForm managedForm, AtsWorkPage page, final StateMachineArtifact sma, Composite composite, int horizontalSpan, XModifiedListener xModListener, boolean isCurrentState) { + public StatePercentCompleteXWidget(IManagedForm managedForm, AtsWorkPage page, final AbstractWorkflowArtifact sma, Composite composite, int horizontalSpan, XModifiedListener xModListener, boolean isCurrentState) { super("\"" + page.getName() + "\"" + " State Percent Complete"); this.page = page; this.sma = sma; @@ -80,10 +80,10 @@ public class StatePercentCompleteXWidget extends XHyperlinkLabelValueSelection { new StringBuffer(String.format(" State Percent: %d", sma.getStateMgr().getPercentComplete(page.getName()))); boolean breakoutNeeded = false; - if (sma instanceof TaskableStateMachineArtifact) { - if (((TaskableStateMachineArtifact) sma).hasTaskArtifacts()) { + if (sma instanceof AbstractTaskableArtifact) { + if (((AbstractTaskableArtifact) sma).hasTaskArtifacts()) { sb.append(String.format("\n Task Percent: %d", - ((TaskableStateMachineArtifact) sma).getPercentCompleteFromTasks(page.getName()))); + ((AbstractTaskableArtifact) sma).getPercentCompleteFromTasks(page.getName()))); breakoutNeeded = true; } } 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 77e8718d853..3d60d6ef336 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 @@ -13,11 +13,11 @@ package org.eclipse.osee.ats.editor.widget; import java.util.logging.Level; import org.eclipse.jface.dialogs.IMessageProvider; import org.eclipse.jface.dialogs.MessageDialog; -import org.eclipse.osee.ats.artifact.StateMachineArtifact.TransitionOption; import org.eclipse.osee.ats.artifact.TaskArtifact; -import org.eclipse.osee.ats.artifact.TaskableStateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractTaskableArtifact; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.ats.util.AtsUtil; +import org.eclipse.osee.ats.util.TransitionOption; import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.logging.OseeLevel; import org.eclipse.osee.framework.logging.OseeLog; @@ -41,9 +41,9 @@ public class TaskInfoXWidget extends XLabelValueBase { private final String forStateName; private final IManagedForm managedForm; - private final TaskableStateMachineArtifact taskableArt; + private final AbstractTaskableArtifact taskableArt; - public TaskInfoXWidget(IManagedForm managedForm, final TaskableStateMachineArtifact taskableArt, final String forStateName, Composite composite, int horizontalSpan) { + public TaskInfoXWidget(IManagedForm managedForm, final AbstractTaskableArtifact taskableArt, final String forStateName, Composite composite, int horizontalSpan) { super("\"" + forStateName + "\" State Tasks"); this.managedForm = managedForm; this.taskableArt = taskableArt; @@ -70,7 +70,7 @@ public class TaskInfoXWidget extends XLabelValueBase { } try { if (taskableArt.getTaskArtifacts(forStateName).size() > 0) { - setValueText(taskableArt.getStatus(forStateName)); + setValueText(getStatus(taskableArt, forStateName)); } else { setValueText("No Tasks Created"); } @@ -90,6 +90,21 @@ public class TaskInfoXWidget extends XLabelValueBase { } } + private String getStatus(AbstractTaskableArtifact taskableArt, String stateName) throws OseeCoreException { + int completed = 0, cancelled = 0, inWork = 0; + for (TaskArtifact taskArt : taskableArt.getTaskArtifacts(stateName)) { + if (taskArt.isCompleted()) { + completed++; + } else if (taskArt.isCancelled()) { + cancelled++; + } else { + inWork++; + } + } + return String.format("Total: %d - InWork: %d - Completed: %d - Cancelled: %d", + taskableArt.getTaskArtifacts(stateName).size(), inWork, completed, cancelled); + } + public void addAdminRightClickOption() { try { // If ATS Admin, allow right-click to auto-complete tasks diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/export/AtsExportManager.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/export/AtsExportManager.java index 4f8f4c87296..b82c69d30a0 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/export/AtsExportManager.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/export/AtsExportManager.java @@ -24,7 +24,7 @@ import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.jface.window.Window; import org.eclipse.jface.wizard.WizardDialog; import org.eclipse.osee.ats.artifact.ActionArtifact; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.editor.SMAPrint; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.ats.world.WorldEditor; @@ -72,11 +72,11 @@ public class AtsExportManager extends Action { }; - public static Collection<StateMachineArtifact> getSmaArts(Collection<? extends Artifact> artifacts) throws OseeCoreException { - Set<StateMachineArtifact> smaArts = new HashSet<StateMachineArtifact>(); + public static Collection<AbstractWorkflowArtifact> getSmaArts(Collection<? extends Artifact> artifacts) throws OseeCoreException { + Set<AbstractWorkflowArtifact> smaArts = new HashSet<AbstractWorkflowArtifact>(); for (Artifact artifact : artifacts) { - if (artifact instanceof StateMachineArtifact) { - smaArts.add((StateMachineArtifact) artifact); + if (artifact instanceof AbstractWorkflowArtifact) { + smaArts.add((AbstractWorkflowArtifact) artifact); } else if (artifact instanceof ActionArtifact) { smaArts.addAll(((ActionArtifact) artifact).getTeamWorkFlowArtifacts()); } @@ -84,8 +84,8 @@ public class AtsExportManager extends Action { return smaArts; } - public static Collection<StateMachineArtifact> getSmaArts(ISelection selection) throws OseeCoreException { - Set<StateMachineArtifact> smaArts = new HashSet<StateMachineArtifact>(); + public static Collection<AbstractWorkflowArtifact> getSmaArts(ISelection selection) throws OseeCoreException { + Set<AbstractWorkflowArtifact> smaArts = new HashSet<AbstractWorkflowArtifact>(); if (selection != null) { Iterator<?> selectionIterator = ((IStructuredSelection) selection).iterator(); while (selectionIterator.hasNext()) { @@ -97,8 +97,8 @@ public class AtsExportManager extends Action { selectedObject = ((IAdaptable) selectedObject).getAdapter(Artifact.class); } - if (selectedObject instanceof StateMachineArtifact) { - smaArts.add((StateMachineArtifact) selectedObject); + if (selectedObject instanceof AbstractWorkflowArtifact) { + smaArts.add((AbstractWorkflowArtifact) selectedObject); } else if (selectedObject instanceof ActionArtifact) { smaArts.addAll(((ActionArtifact) selectedObject).getTeamWorkFlowArtifacts()); } else { @@ -129,8 +129,8 @@ public class AtsExportManager extends Action { if (asHtmlToFile || asHtmlToResultEditor) { StringBuffer singleSb = new StringBuffer(); for (Artifact artifact : artifacts) { - if (artifact instanceof StateMachineArtifact) { - SMAPrint smaPrint = new SMAPrint(((StateMachineArtifact) artifact)); + if (artifact instanceof AbstractWorkflowArtifact) { + SMAPrint smaPrint = new SMAPrint(((AbstractWorkflowArtifact) artifact)); smaPrint.setIncludeTaskList(includeTaskList); String html = smaPrint.getResultData().getReport("").getManipulatedHtml(); if (multipleFile) { diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/goal/SetGoalOrderAction.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/goal/SetGoalOrderAction.java index 00dfccacd16..9f5ce9f8d5e 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/goal/SetGoalOrderAction.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/goal/SetGoalOrderAction.java @@ -11,6 +11,7 @@ import org.eclipse.osee.ats.AtsImage; import org.eclipse.osee.ats.actions.ISelectedAtsArtifacts; import org.eclipse.osee.ats.artifact.GoalArtifact; import org.eclipse.osee.ats.internal.AtsPlugin; +import org.eclipse.osee.ats.util.GoalManager; import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.logging.OseeLevel; import org.eclipse.osee.framework.logging.OseeLog; @@ -35,7 +36,7 @@ public class SetGoalOrderAction extends Action { @Override public void run() { try { - GoalArtifact.promptChangeGoalOrder(goalArt, this.selectedAtsArtifacts.getSelectedAtsArtifacts()); + GoalManager.promptChangeGoalOrder(goalArt, this.selectedAtsArtifacts.getSelectedAtsArtifacts()); } catch (OseeCoreException ex) { OseeLog.log(AtsPlugin.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 035167ad688..8bc5bd1e7c9 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 @@ -28,16 +28,15 @@ import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.osee.ats.AtsOpenOption; import org.eclipse.osee.ats.artifact.ATSLog; import org.eclipse.osee.ats.artifact.ATSLog.LogType; +import org.eclipse.osee.ats.artifact.AbstractReviewArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.artifact.ActionArtifact; import org.eclipse.osee.ats.artifact.ActionableItemArtifact; import org.eclipse.osee.ats.artifact.AtsAttributeTypes; import org.eclipse.osee.ats.artifact.LogItem; -import org.eclipse.osee.ats.artifact.ReviewSMArtifact; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; import org.eclipse.osee.ats.artifact.TaskArtifact; import org.eclipse.osee.ats.artifact.TeamDefinitionArtifact; import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact; -import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact.DefaultTeamState; import org.eclipse.osee.ats.artifact.VersionArtifact; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.ats.task.TaskEditor; @@ -46,6 +45,7 @@ import org.eclipse.osee.ats.util.AtsArtifactTypes; import org.eclipse.osee.ats.util.AtsBranchManager; import org.eclipse.osee.ats.util.AtsRelationTypes; import org.eclipse.osee.ats.util.AtsUtil; +import org.eclipse.osee.ats.util.DefaultTeamState; import org.eclipse.osee.ats.util.widgets.SMAState; import org.eclipse.osee.ats.util.widgets.XCurrentStateDam; import org.eclipse.osee.ats.util.widgets.XStateDam; @@ -245,7 +245,7 @@ public class ValidateAtsDatabase extends WorldXNavigateItemAction { for (User user : UserManager.getUsers()) { Set<Artifact> smasToRemove = new HashSet<Artifact>(); for (Artifact art : user.getRelatedArtifacts(CoreRelationTypes.Users_Artifact)) { - if (art instanceof StateMachineArtifact) { + if (art instanceof AbstractWorkflowArtifact) { if (!AccessControlManager.hasPermission(art, PermissionEnum.FULLACCESS)) { String errStr = String.format("No permission to remove relations for [%s]", art); System.err.println(errStr); @@ -455,14 +455,14 @@ public class ValidateAtsDatabase extends WorldXNavigateItemAction { } } - if (artifact instanceof StateMachineArtifact) { + if (artifact instanceof AbstractWorkflowArtifact) { checkAndResolveDuplicateAttributesForAttributeNameContains("ats", artifact, fixAttributeValues, testNameToResultsMap, transaction); } // Test for ats.State Completed;;;<num> or Cancelled;;;<num> and cleanup - if (artifact instanceof StateMachineArtifact) { - XStateDam stateDam = new XStateDam((StateMachineArtifact) artifact); + if (artifact instanceof AbstractWorkflowArtifact) { + XStateDam stateDam = new XStateDam((AbstractWorkflowArtifact) artifact); for (SMAState state : stateDam.getStates()) { if (state.getName().equals(DefaultTeamState.Completed.name()) || state.getName().equals( DefaultTeamState.Cancelled.name())) { @@ -482,8 +482,8 @@ public class ValidateAtsDatabase extends WorldXNavigateItemAction { } // Test for ats.CurrentState Completed;;;<num> or Cancelled;;;<num> and cleanup - if (artifact instanceof StateMachineArtifact) { - XCurrentStateDam currentStateDam = new XCurrentStateDam((StateMachineArtifact) artifact); + if (artifact instanceof AbstractWorkflowArtifact) { + XCurrentStateDam currentStateDam = new XCurrentStateDam((AbstractWorkflowArtifact) artifact); SMAState state = currentStateDam.getState(); if (state.getName().equals(DefaultTeamState.Completed.name()) || state.getName().equals( DefaultTeamState.Cancelled.name())) { @@ -706,8 +706,8 @@ public class ValidateAtsDatabase extends WorldXNavigateItemAction { private void testReviewsHaveValidDefectAndRoleXml(Collection<Artifact> artifacts) { for (Artifact artifact : artifacts) { - if (artifact instanceof ReviewSMArtifact) { - ReviewSMArtifact reviewArtifact = (ReviewSMArtifact) artifact; + if (artifact instanceof AbstractReviewArtifact) { + AbstractReviewArtifact reviewArtifact = (AbstractReviewArtifact) artifact; try { if (reviewArtifact.getAttributes(AtsAttributeTypes.ReviewDefect).size() > 0 && reviewArtifact.getDefectManager().getDefectItems().isEmpty()) { testNameToResultsMap.put( @@ -731,8 +731,8 @@ public class ValidateAtsDatabase extends WorldXNavigateItemAction { private void testReviewsHaveParentWorkflowOrActionableItems(Collection<Artifact> artifacts) { for (Artifact artifact : artifacts) { try { - if (artifact instanceof ReviewSMArtifact) { - ReviewSMArtifact reviewArtifact = (ReviewSMArtifact) artifact; + if (artifact instanceof AbstractReviewArtifact) { + AbstractReviewArtifact reviewArtifact = (AbstractReviewArtifact) artifact; if (reviewArtifact.getRelatedArtifacts(AtsRelationTypes.TeamWorkflowToReview_Team).isEmpty() && reviewArtifact.getActionableItemsDam().getActionableItemGuids().isEmpty()) { testNameToResultsMap.put( "testReviewsHaveParentWorkflowOrActionableItems", @@ -748,8 +748,8 @@ public class ValidateAtsDatabase extends WorldXNavigateItemAction { private void testAtsLogs(Collection<Artifact> artifacts) { for (Artifact art : artifacts) { - if (art instanceof StateMachineArtifact) { - StateMachineArtifact sma = (StateMachineArtifact) art; + if (art instanceof AbstractWorkflowArtifact) { + AbstractWorkflowArtifact sma = (AbstractWorkflowArtifact) art; try { ATSLog log = sma.getLog(); if (log.getOriginator() == null) { @@ -826,9 +826,9 @@ public class ValidateAtsDatabase extends WorldXNavigateItemAction { } } for (Artifact art : artifacts) { - if (art instanceof StateMachineArtifact) { + if (art instanceof AbstractWorkflowArtifact) { try { - StateMachineArtifact sma = (StateMachineArtifact) art; + AbstractWorkflowArtifact sma = (AbstractWorkflowArtifact) art; if ((sma.isCompleted() || sma.isCancelled()) && sma.getStateMgr().getAssignees().size() > 0) { testNameToResultsMap.put( "testStateMachineAssignees", diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/health/ValidateChangeReports.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/health/ValidateChangeReports.java index a637ffc2f04..d50ac84abb5 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/health/ValidateChangeReports.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/health/ValidateChangeReports.java @@ -126,7 +126,7 @@ public class ValidateChangeReports extends XNavigateItemAction { StringBuffer sbFull = new StringBuffer(AHTML.beginMultiColumnTable(100, 1)); String[] columnHeaders = new String[] {"HRID", "PCR", "Results"}; sbFull.append(AHTML.addHeaderRowMultiColumnTable(columnHeaders)); - for (IArtifactType artifactType : TeamWorkflowExtensions.getInstance().getAllTeamWorkflowArtifactTypes()) { + for (IArtifactType artifactType : TeamWorkflowExtensions.getAllTeamWorkflowArtifactTypes()) { sbFull.append(AHTML.addRowSpanMultiColumnTable(artifactType.getName(), columnHeaders.length)); try { diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/hyper/ActionHyperItem.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/hyper/ActionHyperItem.java index 6f59b3e579b..a4a10f75616 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/hyper/ActionHyperItem.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/hyper/ActionHyperItem.java @@ -12,26 +12,31 @@ package org.eclipse.osee.ats.hyper; import java.util.ArrayList; import java.util.logging.Level; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; +import org.eclipse.osee.ats.artifact.ActionArtifact; +import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.logging.OseeLog; import org.eclipse.osee.framework.skynet.core.artifact.Artifact; +import org.eclipse.osee.framework.skynet.core.artifact.IATSArtifact; +import org.eclipse.osee.framework.skynet.core.utility.Artifacts; import org.eclipse.osee.framework.ui.skynet.ArtifactImageManager; import org.eclipse.swt.graphics.Image; public class ActionHyperItem extends HyperViewItem { - private final IHyperArtifact iHyperartifact; + private final IATSArtifact artifact; - public ActionHyperItem(IHyperArtifact iHyperartifact) { - super(iHyperartifact.getHyperName()); - this.iHyperartifact = iHyperartifact; - setGuid(iHyperartifact.getGuid()); + public ActionHyperItem(IATSArtifact artifact) { + super(artifact.getName()); + this.artifact = artifact; + setGuid(artifact.getGuid()); } @Override public String toString() { - return iHyperartifact.getHyperType() + " - " + iHyperartifact.getHyperName(); + return artifact.getArtifactTypeName() + " - " + getTitle(); } public void handleDoubleClick(HyperViewItem hyperViewItem) { @@ -48,51 +53,79 @@ public class ActionHyperItem extends HyperViewItem { @SuppressWarnings("unused") @Override public Image getImage() throws OseeCoreException { - if (iHyperartifact.getHyperArtifact() == null) { + if (artifact.isDeleted()) { return null; } - if (iHyperartifact.isDeleted()) { - return null; - } - return ArtifactImageManager.getImage(iHyperartifact.getHyperArtifact()); + return ArtifactImageManager.getImage((Artifact) artifact); } @Override public String getTitle() { - if (iHyperartifact.isDeleted()) { + if (artifact.isDeleted()) { return "Deleted"; } - return iHyperartifact.getHyperName(); + try { + if (artifact instanceof TeamWorkFlowArtifact) { + return ((TeamWorkFlowArtifact) artifact).getEditorTitle(); + } + } catch (OseeCoreException ex) { + OseeLog.log(AtsPlugin.class, Level.SEVERE, ex); + } + return artifact.getName(); } @Override public String getToolTip() { - if (iHyperartifact.isDeleted()) { + if (artifact.isDeleted()) { return ""; } StringBuilder builder = new StringBuilder(); - builder.append("Name: " + iHyperartifact.getHyperName()); - builder.append("\nType: " + iHyperartifact.getHyperType()); - if (iHyperartifact.getHyperState() != null) { - builder.append("\nState: " + iHyperartifact.getHyperState()); + builder.append("Name: " + getTitle()); + builder.append("\nType: " + artifact.getArtifactTypeName()); + if (artifact instanceof AbstractWorkflowArtifact) { + builder.append("\nState: " + ((AbstractWorkflowArtifact) artifact).getStateMgr().getCurrentStateName()); + builder.append("\nAssignee: " + getAssignee()); + builder.append("\nVersion: " + getTargetedVersion()); } - if (iHyperartifact.getHyperAssignee() != null) { - builder.append("\nAssignee: " + iHyperartifact.getHyperAssignee()); - } - if (iHyperartifact.getHyperTargetVersion() != null) { - builder.append("\nVersion: " + iHyperartifact.getHyperTargetVersion()); + return builder.toString(); + } + + public String getAssignee() { + try { + if (artifact instanceof AbstractWorkflowArtifact) { + return Artifacts.toString("; ", ((AbstractWorkflowArtifact) artifact).getStateMgr().getAssignees()); + } + } catch (OseeCoreException ex) { + OseeLog.log(AtsPlugin.class, Level.SEVERE, ex); + return ex.getLocalizedMessage(); } + return ""; + } - return builder.toString(); + private String getTargetedVersion() { + try { + if (artifact instanceof TeamWorkFlowArtifact) { + String str = ((TeamWorkFlowArtifact) artifact).getWorldViewTargetedVersionStr(); + return str.isEmpty() ? "" : str; + } + } catch (OseeCoreException ex) { + OseeLog.log(AtsPlugin.class, Level.SEVERE, ex); + return ex.getLocalizedMessage(); + } + return ""; } @Override public Image getMarkImage() { - if (iHyperartifact.isDeleted()) { + if (artifact.isDeleted()) { return null; } try { - return iHyperartifact.getHyperAssigneeImage(); + if (artifact instanceof AbstractWorkflowArtifact) { + return ((AbstractWorkflowArtifact) artifact).getAssigneeImage(); + } else if (artifact instanceof ActionArtifact) { + return ((ActionArtifact) artifact).getAssigneeImage(); + } } catch (Exception ex) { OseeLog.log(AtsPlugin.class, Level.SEVERE, ex); } @@ -102,26 +135,30 @@ public class ActionHyperItem extends HyperViewItem { public ArrayList<ActionHyperItem> getChildren() { ArrayList<ActionHyperItem> children = new ArrayList<ActionHyperItem>(); for (HyperViewItem item : getBottom()) { - children.add((ActionHyperItem) item); + if (item instanceof ActionHyperItem) { + children.add((ActionHyperItem) item); + } } for (HyperViewItem item : getTop()) { - children.add((ActionHyperItem) item); + if (item instanceof ActionHyperItem) { + children.add((ActionHyperItem) item); + } } for (HyperViewItem item : getRight()) { - children.add((ActionHyperItem) item); + if (item instanceof ActionHyperItem) { + children.add((ActionHyperItem) item); + } } for (HyperViewItem item : getLeft()) { - children.add((ActionHyperItem) item); + if (item instanceof ActionHyperItem) { + children.add((ActionHyperItem) item); + } } return children; } - public IHyperArtifact getHyperArtifact() { - return iHyperartifact; - } - public Artifact getArtifact() { - return iHyperartifact.getHyperArtifact(); + return (Artifact) artifact; } } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/hyper/ActionHyperView.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/hyper/ActionHyperView.java index 24e36667a40..68a8bc5c182 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/hyper/ActionHyperView.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/hyper/ActionHyperView.java @@ -15,12 +15,12 @@ import java.util.List; import java.util.logging.Level; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.osee.ats.AtsOpenOption; -import org.eclipse.osee.ats.artifact.ATSArtifact; +import org.eclipse.osee.ats.artifact.AbstractAtsArtifact; +import org.eclipse.osee.ats.artifact.AbstractReviewArtifact; +import org.eclipse.osee.ats.artifact.AbstractTaskableArtifact; import org.eclipse.osee.ats.artifact.ActionArtifact; import org.eclipse.osee.ats.artifact.GoalArtifact; -import org.eclipse.osee.ats.artifact.ReviewSMArtifact; import org.eclipse.osee.ats.artifact.TaskArtifact; -import org.eclipse.osee.ats.artifact.TaskableStateMachineArtifact; import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact; import org.eclipse.osee.ats.config.AtsBulkLoad; import org.eclipse.osee.ats.editor.SMAEditor; @@ -32,6 +32,7 @@ import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.logging.OseeLog; import org.eclipse.osee.framework.plugin.core.IActionable; import org.eclipse.osee.framework.skynet.core.artifact.Artifact; +import org.eclipse.osee.framework.skynet.core.artifact.IATSArtifact; import org.eclipse.osee.framework.skynet.core.event.OseeEventManager; import org.eclipse.osee.framework.skynet.core.event.filter.IEventFilter; import org.eclipse.osee.framework.skynet.core.event.listener.IArtifactEventListener; @@ -63,7 +64,7 @@ public class ActionHyperView extends HyperView implements IActionable, IArtifact public static String VIEW_ID = "org.eclipse.osee.ats.hyper.ActionHyperView"; private static String HELP_CONTEXT_ID = "atsActionView"; private ActionHyperItem topAHI; - private ATSArtifact currentArtifact; + private AbstractAtsArtifact currentArtifact; private Cursor cursor; public ActionHyperView() { @@ -146,7 +147,7 @@ public class ActionHyperView extends HyperView implements IActionable, IArtifact } reviewsCreated = false; tasksReviewsCreated = false; - ATSArtifact topArt = getTopArtifact(currentArtifact); + AbstractAtsArtifact topArt = getTopArtifact(currentArtifact); if (topArt == null || topArt.isDeleted()) { return; } @@ -156,7 +157,7 @@ public class ActionHyperView extends HyperView implements IActionable, IArtifact ActionHyperItem teamAHI = new ActionHyperItem(team); teamAHI.setRelationToolTip("Team"); topAHI.addBottom(teamAHI); - for (ReviewSMArtifact rev : ReviewManager.getReviews(team)) { + for (AbstractReviewArtifact rev : ReviewManager.getReviews(team)) { reviewsCreated = true; ActionHyperItem reviewAHI = new ActionHyperItem(rev); reviewAHI.setRelationToolTip("Review"); @@ -171,8 +172,8 @@ public class ActionHyperView extends HyperView implements IActionable, IArtifact for (Artifact member : topArt.getRelatedArtifacts(AtsRelationTypes.Goal_Member)) { if (member instanceof TaskArtifact) { taskArts.add((TaskArtifact) member); - } else if (member instanceof IHyperArtifact) { - ActionHyperItem teamAHI = new ActionHyperItem((IHyperArtifact) member); + } else if (member instanceof IATSArtifact) { + ActionHyperItem teamAHI = new ActionHyperItem((IATSArtifact) member); teamAHI.setRelationToolTip("Member"); topAHI.addBottom(teamAHI); } @@ -198,29 +199,29 @@ public class ActionHyperView extends HyperView implements IActionable, IArtifact } } - private void addTasksAHIs(ActionHyperItem parentAHI, ATSArtifact artifact) throws OseeCoreException { - if (!(artifact instanceof TaskableStateMachineArtifact)) { + private void addTasksAHIs(ActionHyperItem parentAHI, AbstractAtsArtifact artifact) throws OseeCoreException { + if (!(artifact instanceof AbstractTaskableArtifact)) { return; } - if (((TaskableStateMachineArtifact) artifact).getTaskArtifacts().size() > 0) { - if (artifact instanceof ReviewSMArtifact) { + if (((AbstractTaskableArtifact) artifact).getTaskArtifacts().size() > 0) { + if (artifact instanceof AbstractReviewArtifact) { tasksReviewsCreated = true; } - parentAHI.addBottom(new TasksActionHyperItem(((TaskableStateMachineArtifact) artifact).getTaskArtifacts())); + parentAHI.addBottom(new TasksActionHyperItem(((AbstractTaskableArtifact) artifact).getTaskArtifacts())); } } - public ATSArtifact getTopArtifact(ATSArtifact art) throws OseeCoreException { - ATSArtifact artifact = art; + public AbstractAtsArtifact getTopArtifact(AbstractAtsArtifact art) throws OseeCoreException { + AbstractAtsArtifact artifact = art; if (artifact instanceof TaskArtifact) { artifact = ((TaskArtifact) artifact).getParentSMA(); } if (artifact instanceof TeamWorkFlowArtifact) { artifact = ((TeamWorkFlowArtifact) artifact).getParentActionArtifact(); } - if (artifact instanceof ReviewSMArtifact) { - if (((ReviewSMArtifact) artifact).getParentActionArtifact() != null) { - artifact = ((ReviewSMArtifact) artifact).getParentActionArtifact(); + if (artifact instanceof AbstractReviewArtifact) { + if (((AbstractReviewArtifact) artifact).getParentActionArtifact() != null) { + artifact = ((AbstractReviewArtifact) artifact).getParentActionArtifact(); } } if (artifact == null) { diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/hyper/ActionSkyWalker.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/hyper/ActionSkyWalker.java index af7dd07a65a..9052d680442 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/hyper/ActionSkyWalker.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/hyper/ActionSkyWalker.java @@ -14,7 +14,7 @@ import java.util.List; import java.util.logging.Level; import org.eclipse.jface.action.Action; import org.eclipse.jface.action.IToolBarManager; -import org.eclipse.osee.ats.artifact.ATSArtifact; +import org.eclipse.osee.ats.artifact.AbstractAtsArtifact; import org.eclipse.osee.ats.artifact.ActionArtifact; import org.eclipse.osee.ats.artifact.TaskArtifact; import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact; @@ -94,7 +94,7 @@ public class ActionSkyWalker extends SkyWalkerView implements IPartListener, IAc @Override public void explore(Artifact artifact) { - if (artifact == null || artifact.isDeleted() || !(artifact instanceof ATSArtifact)) { + if (artifact == null || artifact.isDeleted() || !(artifact instanceof AbstractAtsArtifact)) { clear(); } try { @@ -102,8 +102,8 @@ public class ActionSkyWalker extends SkyWalkerView implements IPartListener, IAc getOptions().setLayout(getOptions().getLayout(SkyWalkerOptions.RADIAL_DOWN_LAYOUT)); if (artifact instanceof User) { super.explore(artifact); - } else if (artifact instanceof ATSArtifact) { - super.explore(getTopArtifact((ATSArtifact) artifact)); + } else if (artifact instanceof AbstractAtsArtifact) { + super.explore(getTopArtifact((AbstractAtsArtifact) artifact)); } else { throw new OseeCoreException("Unexpected artifact subclass"); } @@ -113,8 +113,8 @@ public class ActionSkyWalker extends SkyWalkerView implements IPartListener, IAc } } - public ATSArtifact getTopArtifact(ATSArtifact art) throws OseeCoreException { - ATSArtifact artifact = null; + public AbstractAtsArtifact getTopArtifact(AbstractAtsArtifact art) throws OseeCoreException { + AbstractAtsArtifact artifact = null; if (art instanceof ActionArtifact) { artifact = art; } else if (art instanceof TeamWorkFlowArtifact) { diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/hyper/HyperView.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/hyper/HyperView.java index a84b5a407ca..a1313deb425 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/hyper/HyperView.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/hyper/HyperView.java @@ -38,7 +38,7 @@ import org.eclipse.jface.action.Separator; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.osee.ats.AtsImage; import org.eclipse.osee.ats.AtsOpenOption; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.editor.SMAEditor; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.ats.util.AtsUtil; @@ -822,7 +822,7 @@ public class HyperView extends ViewPart implements IPartListener { } public static void openActionEditor(Artifact artifact) { - if (artifact instanceof StateMachineArtifact) { + if (artifact instanceof AbstractWorkflowArtifact) { AtsUtil.openATSAction(artifact, AtsOpenOption.OpenOneOrPopupSelect); } } @@ -874,8 +874,8 @@ public class HyperView extends ViewPart implements IPartListener { dialogText.append("\n\n Are you sure you want to delete this artifact and its default-hierarchy children?"); if (MessageDialog.openQuestion(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), dialogTitle, dialogText.toString())) { - if (art instanceof StateMachineArtifact) { - SMAEditor.close(Collections.singleton((StateMachineArtifact) art), false); + if (art instanceof AbstractWorkflowArtifact) { + SMAEditor.close(Collections.singleton((AbstractWorkflowArtifact) art), false); } try { art.deleteAndPersist(); @@ -891,7 +891,7 @@ public class HyperView extends ViewPart implements IPartListener { MenuItem previewItem = new MenuItem(popupMenu, SWT.CASCADE); previewItem.setText("Open in ATS"); - previewItem.setEnabled(fHvi instanceof ArtifactHyperItem && ((ArtifactHyperItem) fHvi).getArtifact() instanceof StateMachineArtifact || fHvi instanceof ActionHyperItem && ((ActionHyperItem) fHvi).getArtifact() instanceof StateMachineArtifact); + previewItem.setEnabled(fHvi instanceof ArtifactHyperItem && ((ArtifactHyperItem) fHvi).getArtifact() instanceof AbstractWorkflowArtifact || fHvi instanceof ActionHyperItem && ((ActionHyperItem) fHvi).getArtifact() instanceof AbstractWorkflowArtifact); previewItem.addSelectionListener(new SelectionAdapter() { @Override diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/hyper/IHyperArtifact.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/hyper/IHyperArtifact.java deleted file mode 100644 index 592b1994887..00000000000 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/hyper/IHyperArtifact.java +++ /dev/null @@ -1,39 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004, 2007 Boeing. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Boeing - initial API and implementation - *******************************************************************************/ -package org.eclipse.osee.ats.hyper; - -import org.eclipse.osee.framework.skynet.core.artifact.Artifact; -import org.eclipse.swt.graphics.Image; - -/** - * @author Donald G. Dunne - */ -public interface IHyperArtifact { - - public boolean isDeleted(); - - public String getHyperName(); - - public String getHyperType(); - - public String getHyperState(); - - public String getGuid(); - - public String getHyperAssignee(); - - public String getHyperTargetVersion(); - - public Image getHyperAssigneeImage() throws Exception; - - public Artifact getHyperArtifact(); - -} diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/hyper/TasksActionHyperItem.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/hyper/TasksActionHyperItem.java index 46c14bd37d3..1b88010fb21 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/hyper/TasksActionHyperItem.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/hyper/TasksActionHyperItem.java @@ -11,44 +11,23 @@ package org.eclipse.osee.ats.hyper; import java.util.Collection; +import org.eclipse.osee.ats.AtsImage; import org.eclipse.osee.ats.artifact.TaskArtifact; -import org.eclipse.osee.ats.util.AtsArtifactTypes; -import org.eclipse.osee.ats.world.WorldEditor; -import org.eclipse.osee.ats.world.WorldEditorSimpleProvider; -import org.eclipse.osee.framework.core.exception.OseeCoreException; -import org.eclipse.osee.framework.skynet.core.artifact.Artifact; -import org.eclipse.osee.framework.skynet.core.artifact.ArtifactTypeManager; -import org.eclipse.osee.framework.ui.skynet.ArtifactImageManager; +import org.eclipse.osee.framework.ui.swt.ImageManager; import org.eclipse.swt.graphics.Image; /** * @author Donald G. Dunne */ -public class TasksActionHyperItem extends ActionHyperItem { +public class TasksActionHyperItem extends HyperViewItem { - private final Collection<TaskArtifact> taskArtifacts; - - public TasksActionHyperItem(Collection<TaskArtifact> taskArtifacts) { - super(new TasksHyperViewArtifact(taskArtifacts)); - this.taskArtifacts = taskArtifacts; - setRelationToolTip("Task"); - } - - @Override - public void handleDoubleClick(HyperViewItem hyperViewItem) { - super.handleDoubleClick(hyperViewItem); - WorldEditor.open(new WorldEditorSimpleProvider("Tasks", taskArtifacts)); + public TasksActionHyperItem(Collection<TaskArtifact> taskArts) { + super(taskArts.size() + " Tasks"); } @Override - public void calculateCurrent(Artifact currentArtifact) { - setCurrent(taskArtifacts.contains(currentArtifact)); - } - - @Override - public Image getImage() throws OseeCoreException { - return ArtifactImageManager.getImage(ArtifactTypeManager.getType(AtsArtifactTypes.Task)); - + public Image getImage() { + return ImageManager.getImage(AtsImage.TASK); } } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/hyper/TasksHyperViewArtifact.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/hyper/TasksHyperViewArtifact.java deleted file mode 100644 index 9159a008339..00000000000 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/hyper/TasksHyperViewArtifact.java +++ /dev/null @@ -1,75 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004, 2007 Boeing. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Boeing - initial API and implementation - *******************************************************************************/ -package org.eclipse.osee.ats.hyper; - -import java.util.Collection; -import org.eclipse.osee.ats.artifact.TaskArtifact; -import org.eclipse.osee.ats.util.AtsArtifactTypes; -import org.eclipse.osee.framework.skynet.core.artifact.Artifact; -import org.eclipse.swt.graphics.Image; - -/** - * @author Donald G. Dunne - */ -public class TasksHyperViewArtifact implements IHyperArtifact { - - private final Collection<? extends TaskArtifact> taskArts; - - public TasksHyperViewArtifact(Collection<? extends TaskArtifact> taskArts) { - this.taskArts = taskArts; - } - - @Override - public String getGuid() { - return null; - } - - @Override - public Artifact getHyperArtifact() { - return null; - } - - @Override - public String getHyperAssignee() { - return null; - } - - @Override - public Image getHyperAssigneeImage() { - return null; - } - - @Override - public String getHyperName() { - return taskArts.size() + " Tasks"; - } - - @Override - public String getHyperState() { - return null; - } - - @Override - public String getHyperType() { - return AtsArtifactTypes.Task.getName(); - } - - @Override - public String getHyperTargetVersion() { - return null; - } - - @Override - public boolean isDeleted() { - return false; - } - -} diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/internal/OseeAtsServiceImpl.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/internal/OseeAtsServiceImpl.java index 4534b4cc454..49d2b026f99 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/internal/OseeAtsServiceImpl.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/internal/OseeAtsServiceImpl.java @@ -19,9 +19,9 @@ import java.util.Set; import java.util.logging.Level; import org.eclipse.osee.ats.AtsImage; import org.eclipse.osee.ats.actions.wizard.NewActionJob; +import org.eclipse.osee.ats.artifact.AbstractTaskableArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.artifact.ActionableItemArtifact; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; -import org.eclipse.osee.ats.artifact.TaskableStateMachineArtifact; import org.eclipse.osee.ats.util.AtsArtifactTypes; import org.eclipse.osee.ats.util.AtsPriority.PriorityType; import org.eclipse.osee.ats.util.AtsUtil; @@ -77,29 +77,23 @@ public class OseeAtsServiceImpl implements IOseeCmService { @Override public boolean isPcrArtifact(Artifact artifact) { - return artifact instanceof StateMachineArtifact; + return artifact instanceof AbstractWorkflowArtifact; } @Override public boolean isCompleted(Artifact artifact) { - if (isPcrArtifact(artifact)) { - try { - if (artifact instanceof StateMachineArtifact) { - return ((StateMachineArtifact) artifact).isCancelledOrCompleted(); - } - } catch (OseeCoreException ex) { - OseeLog.log(AtsPlugin.class, Level.SEVERE, ex); - } + if (isPcrArtifact(artifact) && artifact instanceof AbstractWorkflowArtifact) { + return ((AbstractWorkflowArtifact) artifact).isCancelledOrCompleted(); } return false; } @Override public List<Artifact> getTaskArtifacts(Artifact pcrArtifact) { - if (pcrArtifact instanceof TaskableStateMachineArtifact) { + if (pcrArtifact instanceof AbstractTaskableArtifact) { try { List<Artifact> arts = new ArrayList<Artifact>(); - arts.addAll(((TaskableStateMachineArtifact) pcrArtifact).getTaskArtifacts()); + arts.addAll(((AbstractTaskableArtifact) pcrArtifact).getTaskArtifacts()); return arts; } catch (OseeCoreException ex) { OseeLog.log(AtsPlugin.class, Level.SEVERE, ex); @@ -112,8 +106,8 @@ public class OseeAtsServiceImpl implements IOseeCmService { public Artifact createWorkTask(String name, String parentPcrGuid) { try { Artifact artifact = ArtifactQuery.getArtifactFromId(parentPcrGuid, AtsUtil.getAtsBranch()); - if (artifact instanceof TaskableStateMachineArtifact) { - return ((TaskableStateMachineArtifact) artifact).createNewTask(name); + if (artifact instanceof AbstractTaskableArtifact) { + return ((AbstractTaskableArtifact) artifact).createNewTask(name); } } catch (OseeCoreException ex) { OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex); diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/AtsQuickSearchComposite.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/AtsQuickSearchComposite.java index f8b4931f9dd..eb846b36b90 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/AtsQuickSearchComposite.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/AtsQuickSearchComposite.java @@ -107,7 +107,7 @@ public class AtsQuickSearchComposite extends Composite { return; } AtsQuickSearchData data = - new AtsQuickSearchData("ATS Quick Search", searchArea.getText(), completeCancelledCheck.get()); + new AtsQuickSearchData("ATS Quick Search", searchArea.getText(), completeCancelledCheck.isChecked()); WorldEditor.open(new WorldEditorOperationProvider(new AtsQuickSearchOperation(data))); } } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/AtsQuickSearchOperation.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/AtsQuickSearchOperation.java index e070d9eaea7..712fae1b11b 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/AtsQuickSearchOperation.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/AtsQuickSearchOperation.java @@ -14,7 +14,7 @@ import static org.eclipse.osee.framework.core.enums.DeletionFlag.EXCLUDE_DELETED import java.util.HashSet; import java.util.Set; import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.ats.util.AtsUtil; import org.eclipse.osee.ats.world.IWorldEditorConsumer; @@ -68,8 +68,8 @@ public class AtsQuickSearchOperation extends AbstractOperation implements IWorld for (Artifact art : ArtifactQuery.getArtifactListFromAttributeKeywords(AtsUtil.getAtsBranch(), data.getSearchStr(), false, EXCLUDE_DELETED, false)) { // only ATS Artifacts - if (art instanceof StateMachineArtifact) { - StateMachineArtifact sma = (StateMachineArtifact) art; + if (art instanceof AbstractWorkflowArtifact) { + AbstractWorkflowArtifact sma = (AbstractWorkflowArtifact) art; // default excludes canceled/completed if (data.isIncludeCompleteCancelled() == false) { if (!sma.isCancelledOrCompleted()) { 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 f5941874e28..cab599bce19 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 @@ -20,15 +20,15 @@ import org.eclipse.osee.ats.actions.wizard.NewActionJob; import org.eclipse.osee.ats.artifact.ActionArtifact; import org.eclipse.osee.ats.artifact.ActionableItemArtifact; import org.eclipse.osee.ats.artifact.AtsAttributeTypes; -import org.eclipse.osee.ats.artifact.StateMachineArtifact.TransitionOption; import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact; -import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact.DefaultTeamState; import org.eclipse.osee.ats.artifact.VersionArtifact; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.ats.util.AtsArtifactTypes; import org.eclipse.osee.ats.util.AtsPriority.PriorityType; import org.eclipse.osee.ats.util.AtsRelationTypes; import org.eclipse.osee.ats.util.AtsUtil; +import org.eclipse.osee.ats.util.DefaultTeamState; +import org.eclipse.osee.ats.util.TransitionOption; import org.eclipse.osee.ats.world.WorldXNavigateItemAction; import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.logging.OseeLog; diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/CreateGoalTestArtifacts.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/CreateGoalTestArtifacts.java index 92cbb83a11b..356a443a3f3 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/CreateGoalTestArtifacts.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/CreateGoalTestArtifacts.java @@ -23,6 +23,7 @@ import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact; import org.eclipse.osee.ats.util.ActionManager; import org.eclipse.osee.ats.util.AtsPriority.PriorityType; import org.eclipse.osee.ats.util.AtsUtil; +import org.eclipse.osee.ats.util.GoalManager; import org.eclipse.osee.ats.util.widgets.ReviewManager; import org.eclipse.osee.ats.world.WorldEditor; import org.eclipse.osee.ats.world.WorldEditorSimpleProvider; @@ -54,11 +55,11 @@ public class CreateGoalTestArtifacts extends XNavigateItemAction { return; } SkynetTransaction transaction = new SkynetTransaction(AtsUtil.getAtsBranch(), getName()); - GoalArtifact oteGoal = GoalArtifact.createGoal("OTE"); - GoalArtifact atsGoal = GoalArtifact.createGoal("ATS"); - GoalArtifact defineGoal = GoalArtifact.createGoal("Define"); - GoalArtifact msaGoal = GoalArtifact.createGoal("MSA Tools"); - GoalArtifact cdbGoal = GoalArtifact.createGoal("Integrate CDB signal diff into OSEE"); + GoalArtifact oteGoal = GoalManager.createGoal("OTE"); + GoalArtifact atsGoal = GoalManager.createGoal("ATS"); + GoalArtifact defineGoal = GoalManager.createGoal("Define"); + GoalArtifact msaGoal = GoalManager.createGoal("MSA Tools"); + GoalArtifact cdbGoal = GoalManager.createGoal("Integrate CDB signal diff into OSEE"); ActionArtifact action = ActionManager.createAction(null, "Fix this model", "Description", ChangeType.Problem, PriorityType.Priority_2, false, null, ActionableItemArtifact.getActionableItems(Arrays.asList("OTE_SW")), transaction); diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/TeamWorkflowSearchWorkflowSearchItem.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/TeamWorkflowSearchWorkflowSearchItem.java index 174911d48de..8f511a95696 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/TeamWorkflowSearchWorkflowSearchItem.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/TeamWorkflowSearchWorkflowSearchItem.java @@ -15,7 +15,7 @@ import java.util.HashSet; import java.util.Set; import java.util.logging.Level; import org.eclipse.osee.ats.AtsImage; -import org.eclipse.osee.ats.artifact.TaskableStateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractTaskableArtifact; import org.eclipse.osee.ats.artifact.TeamDefinitionArtifact; import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact; import org.eclipse.osee.ats.artifact.VersionArtifact; @@ -113,8 +113,8 @@ public class TeamWorkflowSearchWorkflowSearchItem extends WorldEditorParameterSe } Set<Artifact> results = new HashSet<Artifact>(artifacts); for (Artifact artifact : artifacts) { - if (artifact instanceof TaskableStateMachineArtifact) { - results.addAll(((TaskableStateMachineArtifact) artifact).getTaskArtifacts()); + if (artifact instanceof AbstractTaskableArtifact) { + results.addAll(((AbstractTaskableArtifact) artifact).getTaskArtifacts()); } if (artifact instanceof TeamWorkFlowArtifact) { results.addAll(ReviewManager.getReviews((TeamWorkFlowArtifact) artifact)); diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/notify/AtsNotification.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/notify/AtsNotification.java index 278a5f1d385..59d14f9e3cd 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/notify/AtsNotification.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/notify/AtsNotification.java @@ -10,15 +10,23 @@ *******************************************************************************/ package org.eclipse.osee.ats.notify; +import java.util.Collection; +import java.util.HashMap; import java.util.HashSet; +import java.util.Map; import java.util.Set; import org.eclipse.core.runtime.IConfigurationElement; import org.eclipse.core.runtime.IExtension; import org.eclipse.core.runtime.IExtensionPoint; import org.eclipse.core.runtime.Platform; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.internal.AtsPlugin; +import org.eclipse.osee.ats.util.AtsNotifyUsers; +import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.logging.OseeLevel; import org.eclipse.osee.framework.logging.OseeLog; +import org.eclipse.osee.framework.skynet.core.User; +import org.eclipse.osee.framework.skynet.core.UserManager; import org.osgi.framework.Bundle; /** @@ -28,6 +36,8 @@ public class AtsNotification { private static Set<IAtsNotification> atsNotificationItems = new HashSet<IAtsNotification>(); private static AtsNotification instance = new AtsNotification(); + private static Map<String, Collection<User>> preSaveStateAssignees = new HashMap<String, Collection<User>>(); + private static Map<String, User> preSaveOriginator = new HashMap<String, User>(500); private AtsNotification() { @@ -64,7 +74,46 @@ public class AtsNotification { return instance; } - public Set<IAtsNotification> getAtsNotifications() { + public synchronized static void notifyNewAssigneesAndReset(AbstractWorkflowArtifact workflow, boolean resetOnly) throws OseeCoreException { + if (preSaveStateAssignees.get(workflow.getGuid()) == null || resetOnly) { + preSaveStateAssignees.put(workflow.getGuid(), workflow.getStateMgr().getAssignees()); + return; + } + Set<User> newAssignees = new HashSet<User>(); + for (User user : workflow.getStateMgr().getAssignees()) { + if (!preSaveStateAssignees.get(workflow.getGuid()).contains(user)) { + newAssignees.add(user); + } + } + preSaveStateAssignees.put(workflow.getGuid(), workflow.getStateMgr().getAssignees()); + if (newAssignees.isEmpty()) { + return; + } + try { + // These will be processed upon save + AtsNotifyUsers.getInstance().notify(workflow, newAssignees, AtsNotifyUsers.NotifyType.Assigned); + } catch (OseeCoreException ex) { + OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex); + } + } + + public static void notifyOriginatorAndReset(AbstractWorkflowArtifact workflow, boolean resetOnly) throws OseeCoreException { + if (preSaveOriginator.get(workflow.getGuid()) == null || resetOnly) { + User orig = workflow.getOriginator(); + if (orig == null) { + orig = UserManager.getUser(); + } + preSaveOriginator.put(workflow.getGuid(), orig); + return; + } + if (preSaveOriginator.get(workflow.getGuid()) != null && workflow.getOriginator() != null && !workflow.getOriginator().equals( + preSaveOriginator)) { + AtsNotifyUsers.getInstance().notify(workflow, AtsNotifyUsers.NotifyType.Originator); + } + preSaveOriginator.put(workflow.getGuid(), workflow.getOriginator()); + } + + public static Set<IAtsNotification> getAtsNotificationItems() { return atsNotificationItems; } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/notify/AtsNotificationCheckTreeDialog.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/notify/AtsNotificationCheckTreeDialog.java index 11d8da83153..67b3e6b1158 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/notify/AtsNotificationCheckTreeDialog.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/notify/AtsNotificationCheckTreeDialog.java @@ -44,7 +44,7 @@ public class AtsNotificationCheckTreeDialog extends CheckedTreeSelectionDialog { setTitle("Select ATS Notifications"); setMessage("Select Desired ATS Notifications"); try { - setInput(AtsNotification.getInstance().getAtsNotifications()); + setInput(AtsNotification.getAtsNotificationItems()); } catch (Exception ex) { OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex); } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/operation/CancelMultipleWorkflows.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/operation/CancelMultipleWorkflows.java index 29ad16785ed..11039d7a059 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/operation/CancelMultipleWorkflows.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/operation/CancelMultipleWorkflows.java @@ -13,11 +13,11 @@ package org.eclipse.osee.ats.operation; import java.util.Collection; import org.eclipse.jface.action.Action; import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; -import org.eclipse.osee.ats.artifact.StateMachineArtifact.TransitionOption; -import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact.DefaultTeamState; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.ats.util.AtsUtil; +import org.eclipse.osee.ats.util.DefaultTeamState; +import org.eclipse.osee.ats.util.TransitionOption; import org.eclipse.osee.ats.world.WorldEditor; import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.logging.OseeLevel; @@ -44,12 +44,13 @@ public class CancelMultipleWorkflows extends Action { @Override public void run() { try { - Collection<StateMachineArtifact> smas = worldEditor.getWorldComposite().getXViewer().getSelectedSMAArtifacts(); + Collection<AbstractWorkflowArtifact> smas = + worldEditor.getWorldComposite().getXViewer().getSelectedSMAArtifacts(); if (smas.isEmpty()) { AWorkbench.popup("ERROR", "Must select one or more workflows"); return; } - for (StateMachineArtifact sma : smas) { + for (AbstractWorkflowArtifact sma : smas) { Result result = sma.isTransitionValid(DefaultTeamState.Cancelled.name(), null, TransitionOption.None); if (result.isFalse()) { result.popup(); @@ -59,7 +60,7 @@ public class CancelMultipleWorkflows extends Action { EntryDialog ed = new EntryDialog("Cancel Workflows", "Enter Cancellation Reason"); if (ed.open() == 0) { SkynetTransaction transaction = new SkynetTransaction(AtsUtil.getAtsBranch(), "Cancel Multiple Workflows"); - for (StateMachineArtifact sma : smas) { + for (AbstractWorkflowArtifact sma : smas) { Result result = sma.transitionToCancelled(ed.getEntry(), transaction, TransitionOption.Persist); if (result.isFalse()) { result.popup(); diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/operation/CompleteMultipleWorkflows.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/operation/CompleteMultipleWorkflows.java index 75bb8062baa..b01a041f5f0 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/operation/CompleteMultipleWorkflows.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/operation/CompleteMultipleWorkflows.java @@ -13,11 +13,11 @@ package org.eclipse.osee.ats.operation; import java.util.Collection; import org.eclipse.jface.action.Action; import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; -import org.eclipse.osee.ats.artifact.StateMachineArtifact.TransitionOption; -import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact.DefaultTeamState; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.ats.util.AtsUtil; +import org.eclipse.osee.ats.util.DefaultTeamState; +import org.eclipse.osee.ats.util.TransitionOption; import org.eclipse.osee.ats.world.WorldEditor; import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.logging.OseeLevel; @@ -45,12 +45,13 @@ public class CompleteMultipleWorkflows extends Action { @Override public void run() { try { - Collection<StateMachineArtifact> smas = worldEditor.getWorldComposite().getXViewer().getSelectedSMAArtifacts(); + Collection<AbstractWorkflowArtifact> smas = + worldEditor.getWorldComposite().getXViewer().getSelectedSMAArtifacts(); if (smas.isEmpty()) { AWorkbench.popup("ERROR", "Must select one or more workflows"); return; } - for (StateMachineArtifact sma : smas) { + for (AbstractWorkflowArtifact sma : smas) { Result result = sma.isTransitionValid(DefaultTeamState.Completed.name(), null, TransitionOption.None); if (result.isFalse()) { result.popup(); @@ -63,7 +64,7 @@ public class CompleteMultipleWorkflows extends Action { AtsUtil.setEmailEnabled(enableEmail); SkynetTransaction transaction = new SkynetTransaction(AtsUtil.getAtsBranch(), "Complete Multiple Workflows"); - for (StateMachineArtifact sma : smas) { + for (AbstractWorkflowArtifact sma : smas) { Result result = sma.transitionToCompleted(ed.getEntry(), transaction, TransitionOption.Persist); if (result.isFalse()) { result.popup(); 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 47bf74ecd5f..8913fc4c39e 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 @@ -20,11 +20,12 @@ import org.eclipse.osee.ats.actions.wizard.IAtsTeamWorkflow; import org.eclipse.osee.ats.artifact.ATSLog.LogType; import org.eclipse.osee.ats.artifact.ActionArtifact.CreateTeamOption; import org.eclipse.osee.ats.artifact.TaskArtifact; -import org.eclipse.osee.ats.artifact.TaskableStateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractTaskableArtifact; import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact; import org.eclipse.osee.ats.artifact.TeamWorkflowExtensions; import org.eclipse.osee.ats.editor.SMAEditor; import org.eclipse.osee.ats.internal.AtsPlugin; +import org.eclipse.osee.ats.util.ActionManager; import org.eclipse.osee.ats.util.AtsRelationTypes; import org.eclipse.osee.ats.util.AtsUtil; import org.eclipse.osee.framework.core.exception.OseeCoreException; @@ -126,7 +127,7 @@ public class DuplicateWorkflowBlam extends AbstractBlam { assignees.add(UserManager.getUser()); } TeamWorkFlowArtifact newTeamArt = - teamArt.getParentActionArtifact().createTeamWorkflow(teamArt.getTeamDefinition(), + ActionManager.createTeamWorkflow(teamArt.getParentActionArtifact(), teamArt.getTeamDefinition(), teamArt.getActionableItemsDam().getActionableItems(), assignees, transaction, CreateTeamOption.Duplicate_If_Exists); if (Strings.isValid(title)) { @@ -163,7 +164,7 @@ public class DuplicateWorkflowBlam extends AbstractBlam { dupArt.persist(transaction); // Notify all extension points that workflow is being duplicated in case they need to add, remove // attributes or relations - for (IAtsTeamWorkflow teamExtension : TeamWorkflowExtensions.getInstance().getAtsTeamWorkflowExtensions()) { + for (IAtsTeamWorkflow teamExtension : TeamWorkflowExtensions.getAtsTeamWorkflowExtensions()) { teamExtension.teamWorkflowDuplicating(teamArt, dupArt); } } @@ -220,7 +221,7 @@ public class DuplicateWorkflowBlam extends AbstractBlam { /** * @return the defaultTeamWorkflows */ - public Collection<? extends TaskableStateMachineArtifact> getDefaultTeamWorkflows() { + public Collection<? extends AbstractTaskableArtifact> getDefaultTeamWorkflows() { return defaultTeamWorkflows; } 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 5cc0b7846c8..ea61c137951 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 @@ -15,7 +15,7 @@ import java.util.Arrays; import java.util.Collection; import java.util.List; import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.osee.ats.artifact.TaskableStateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractTaskableArtifact; import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact; import org.eclipse.osee.ats.editor.SMAEditor; import org.eclipse.osee.ats.internal.AtsPlugin; @@ -45,7 +45,7 @@ public class ImportTasksFromSimpleList extends AbstractBlam { public static String ASSIGNEES = "Assignees"; public static String TASK_IMPORT_TITLES = "Task Import Titles"; public static String TEAM_WORKFLOW = "Team Workflow (drop here)"; - private TaskableStateMachineArtifact taskableStateMachineArtifact; + private AbstractTaskableArtifact taskableStateMachineArtifact; @Override public String getName() { @@ -132,14 +132,14 @@ public class ImportTasksFromSimpleList extends AbstractBlam { /** * @return the TaskableStateMachineArtifact */ - public TaskableStateMachineArtifact getTaskableStateMachineArtifact() { + public AbstractTaskableArtifact getTaskableStateMachineArtifact() { return taskableStateMachineArtifact; } /** * @param defaultTeamWorkflowArtifact the defaultTeamWorkflowArtifact to set */ - public void setTaskableStateMachineArtifact(TaskableStateMachineArtifact taskableStateMachineArtifact) { + public void setTaskableStateMachineArtifact(AbstractTaskableArtifact taskableStateMachineArtifact) { this.taskableStateMachineArtifact = taskableStateMachineArtifact; } 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 5c6d6b18899..5f3455d7252 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 @@ -16,7 +16,7 @@ import java.util.Collection; import java.util.List; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.jobs.Job; -import org.eclipse.osee.ats.artifact.TaskableStateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractTaskableArtifact; import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact; import org.eclipse.osee.ats.editor.SMAEditor; import org.eclipse.osee.ats.internal.AtsPlugin; @@ -48,7 +48,7 @@ public class ImportTasksFromSpreadsheet extends AbstractBlam { public static String TASK_IMPORT_SPREADSHEET = "Task Import Spreadsheet"; public static String TEAM_WORKFLOW = "Taskable Workflow (drop here)"; public static String EMAIL_POCS = "Email POCs"; - private TaskableStateMachineArtifact taskableStateMachineArtifact; + private AbstractTaskableArtifact taskableStateMachineArtifact; @Override public String getName() { @@ -82,14 +82,14 @@ public class ImportTasksFromSpreadsheet extends AbstractBlam { /** * @return the TaskableStateMachineArtifact */ - public TaskableStateMachineArtifact getTaskableStateMachineArtifact() { + public AbstractTaskableArtifact getTaskableStateMachineArtifact() { return taskableStateMachineArtifact; } /** * @param taskableStateMachineArtifact the TaskableStateMachineArtifact to set */ - public void setTaskableStateMachineArtifact(TaskableStateMachineArtifact taskableStateMachineArtifact) { + public void setTaskableStateMachineArtifact(AbstractTaskableArtifact taskableStateMachineArtifact) { this.taskableStateMachineArtifact = taskableStateMachineArtifact; } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/operation/ReAssignATSObjectsToUser.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/operation/ReAssignATSObjectsToUser.java index 73a46a91f32..80b61c19057 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/operation/ReAssignATSObjectsToUser.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/operation/ReAssignATSObjectsToUser.java @@ -15,7 +15,7 @@ import java.util.Collection; import java.util.HashSet; import java.util.Set; import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.ats.util.AtsUtil; import org.eclipse.osee.framework.logging.OseeLevel; @@ -66,7 +66,7 @@ public class ReAssignATSObjectsToUser extends AbstractBlam { Collection<Artifact> assignedToArts = AtsUtil.getAssigned(fromUser); Set<Artifact> atsArts = new HashSet<Artifact>(); for (Artifact assignedArt : assignedToArts) { - if (assignedArt instanceof StateMachineArtifact) { + if (assignedArt instanceof AbstractWorkflowArtifact) { atsArts.add(assignedArt); } } @@ -89,9 +89,9 @@ public class ReAssignATSObjectsToUser extends AbstractBlam { SkynetTransaction transaction = new SkynetTransaction(AtsUtil.getAtsBranch(), "Re-Assign ATS Objects to User"); for (Artifact artifact : artsToReAssign) { - if (artifact instanceof StateMachineArtifact) { - ((StateMachineArtifact) artifact).getStateMgr().removeAssignee(fromUser); - ((StateMachineArtifact) artifact).getStateMgr().addAssignee(toUser); + if (artifact instanceof AbstractWorkflowArtifact) { + ((AbstractWorkflowArtifact) artifact).getStateMgr().removeAssignee(fromUser); + ((AbstractWorkflowArtifact) artifact).getStateMgr().addAssignee(toUser); } artifact.persist(transaction); } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/report/ExtendedStatusReportJob.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/report/ExtendedStatusReportJob.java index 9aabe11e8c5..68d0376f483 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/report/ExtendedStatusReportJob.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/report/ExtendedStatusReportJob.java @@ -20,7 +20,7 @@ import org.eclipse.core.runtime.Status; import org.eclipse.core.runtime.jobs.Job; import org.eclipse.osee.ats.artifact.ActionArtifact; import org.eclipse.osee.ats.artifact.AtsAttributeTypes; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.artifact.TaskArtifact; import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact; import org.eclipse.osee.ats.internal.AtsPlugin; @@ -132,7 +132,7 @@ public class ExtendedStatusReportJob extends Job { return sb.toString(); } - private static void addTableRow(StringBuilder sb, StateMachineArtifact sma) throws OseeCoreException { + private static void addTableRow(StringBuilder sb, AbstractWorkflowArtifact sma) throws OseeCoreException { List<String> values = new ArrayList<String>(); for (Columns col : Columns.values()) { // System.out.println("col *" + col + "*"); diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/task/IXTaskViewer.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/task/IXTaskViewer.java index fcb4f81c69d..f4623fcf9e1 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/task/IXTaskViewer.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/task/IXTaskViewer.java @@ -11,7 +11,7 @@ package org.eclipse.osee.ats.task; import java.util.Collection; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.artifact.TaskArtifact; import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.plugin.core.IActionable; @@ -30,9 +30,9 @@ public interface IXTaskViewer { public boolean isTaskable() throws OseeCoreException; - public String getCurrentStateName() throws OseeCoreException; + public String getCurrentStateName(); - public StateMachineArtifact getSma() throws OseeCoreException; + public AbstractWorkflowArtifact getSma() throws OseeCoreException; /** * Overriding flag to denote if tasks are allowed to be edited. If false, task viewer will disable all right-click diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/task/TaskComposite.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/task/TaskComposite.java index dcc623dea35..3f2e4a9c1be 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/task/TaskComposite.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/task/TaskComposite.java @@ -25,7 +25,7 @@ import org.eclipse.osee.ats.actions.OpenNewAtsTaskEditorSelected.IOpenNewAtsTask import org.eclipse.osee.ats.actions.TaskAddAction.ITaskAddActionHandler; import org.eclipse.osee.ats.actions.TaskDeleteAction.ITaskDeleteActionHandler; import org.eclipse.osee.ats.artifact.TaskArtifact; -import org.eclipse.osee.ats.artifact.TaskableStateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractTaskableArtifact; import org.eclipse.osee.ats.config.AtsBulkLoad; import org.eclipse.osee.ats.editor.SMAEditor; import org.eclipse.osee.ats.internal.AtsPlugin; @@ -213,7 +213,7 @@ public class TaskComposite extends Composite implements IWorldViewerEventHandler MessageDialog.QUESTION, new String[] {"OK", "Cancel"}, 0); if (ed.open() == 0) { try { - taskArt = ((TaskableStateMachineArtifact) iXTaskViewer.getSma()).createNewTask(ed.getEntry()); + taskArt = ((AbstractTaskableArtifact) iXTaskViewer.getSma()).createNewTask(ed.getEntry()); iXTaskViewer.getEditor().onDirtied(); add(Collections.singleton(taskArt)); } catch (Exception ex) { diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/task/TaskEditor.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/task/TaskEditor.java index 4ada317afeb..2adaac2fdb6 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/task/TaskEditor.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/task/TaskEditor.java @@ -20,7 +20,7 @@ import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.core.runtime.jobs.Job; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.artifact.TaskArtifact; import org.eclipse.osee.ats.artifact.VersionArtifact; import org.eclipse.osee.ats.internal.AtsPlugin; @@ -336,7 +336,7 @@ public class TaskEditor extends AbstractArtifactEditor implements IActionable, I } @Override - public StateMachineArtifact getSma() { + public AbstractWorkflowArtifact getSma() { return null; } @@ -373,7 +373,7 @@ public class TaskEditor extends AbstractArtifactEditor implements IActionable, I @Override public double getManHoursPerDayPreference() throws OseeCoreException { if (tasks.isEmpty()) { - return StateMachineArtifact.DEFAULT_HOURS_PER_WORK_DAY; + return AtsUtil.DEFAULT_HOURS_PER_WORK_DAY; } return tasks.iterator().next().getManHrsPerDayPreference(); } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/task/TaskEditorXWidgetActionPage.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/task/TaskEditorXWidgetActionPage.java index 29a47c20939..88c7e5938fd 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/task/TaskEditorXWidgetActionPage.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/task/TaskEditorXWidgetActionPage.java @@ -22,7 +22,7 @@ import org.eclipse.osee.ats.actions.ImportTasksViaSpreadsheet; import org.eclipse.osee.ats.actions.NewAction; import org.eclipse.osee.ats.actions.OpenNewAtsTaskEditorAction; import org.eclipse.osee.ats.actions.OpenNewAtsTaskEditorSelected; -import org.eclipse.osee.ats.artifact.TaskableStateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractTaskableArtifact; import org.eclipse.osee.ats.export.AtsExportManager; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.ats.util.SMAMetrics; @@ -190,7 +190,7 @@ public class TaskEditorXWidgetActionPage extends AtsXWidgetActionFormPage implem try { if (taskComposite.getIXTaskViewer().isTaskable()) { addActionToMenu(fMenu, new ImportTasksViaSpreadsheet( - (TaskableStateMachineArtifact) taskComposite.getIXTaskViewer().getSma(), new Listener() { + (AbstractTaskableArtifact) taskComposite.getIXTaskViewer().getSma(), new Listener() { @Override public void handleEvent(Event event) { try { @@ -201,7 +201,7 @@ public class TaskEditorXWidgetActionPage extends AtsXWidgetActionFormPage implem } })); addActionToMenu(fMenu, new ImportTasksViaSimpleList( - (TaskableStateMachineArtifact) taskComposite.getIXTaskViewer().getSma(), new Listener() { + (AbstractTaskableArtifact) taskComposite.getIXTaskViewer().getSma(), new Listener() { @Override public void handleEvent(Event event) { try { diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/task/TaskTabXWidgetActionPage.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/task/TaskTabXWidgetActionPage.java index f816bfc3111..99d507c4a2c 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/task/TaskTabXWidgetActionPage.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/task/TaskTabXWidgetActionPage.java @@ -24,7 +24,7 @@ import org.eclipse.osee.ats.actions.OpenNewAtsTaskEditorAction; import org.eclipse.osee.ats.actions.OpenNewAtsTaskEditorSelected; import org.eclipse.osee.ats.actions.TaskAddAction; import org.eclipse.osee.ats.actions.TaskDeleteAction; -import org.eclipse.osee.ats.artifact.TaskableStateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractTaskableArtifact; import org.eclipse.osee.ats.editor.SMAEditor; import org.eclipse.osee.ats.export.AtsExportManager; import org.eclipse.osee.ats.internal.AtsPlugin; @@ -186,9 +186,9 @@ public class TaskTabXWidgetActionPage extends AtsXWidgetActionFormPage implement try { if (taskComposite.getIXTaskViewer().isTaskable()) { addActionToMenu(fMenu, new ImportTasksViaSpreadsheet( - (TaskableStateMachineArtifact) taskComposite.getIXTaskViewer().getSma(), null)); + (AbstractTaskableArtifact) taskComposite.getIXTaskViewer().getSma(), null)); addActionToMenu(fMenu, new ImportTasksViaSimpleList( - (TaskableStateMachineArtifact) taskComposite.getIXTaskViewer().getSma(), null)); + (AbstractTaskableArtifact) taskComposite.getIXTaskViewer().getSma(), null)); } } catch (OseeCoreException ex) { diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/task/TaskXViewer.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/task/TaskXViewer.java index d8716f2186d..494796d369a 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/task/TaskXViewer.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/task/TaskXViewer.java @@ -102,21 +102,16 @@ public class TaskXViewer extends WorldXViewer { } public boolean isSelectedTaskArtifactsAreInWork() { - try { - Iterator<?> i = ((IStructuredSelection) getSelection()).iterator(); - while (i.hasNext()) { - Object obj = i.next(); - if (obj instanceof TaskArtifact) { - if (!((TaskArtifact) obj).isInWork()) { - return false; - } + Iterator<?> i = ((IStructuredSelection) getSelection()).iterator(); + while (i.hasNext()) { + Object obj = i.next(); + if (obj instanceof TaskArtifact) { + if (!((TaskArtifact) obj).isInWork()) { + return false; } } - return true; - } catch (OseeCoreException ex) { - OseeLog.log(AtsPlugin.class, Level.SEVERE, ex); } - return false; + return true; } Action editTaskTitleAction, editTaskAssigneesAction, editTaskStatusAction, editTaskHoursSpentAction, diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/ActionManager.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/ActionManager.java index 893a786705d..89fc19dda82 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/ActionManager.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/ActionManager.java @@ -12,15 +12,31 @@ package org.eclipse.osee.ats.util; import java.util.Collection; import java.util.Date; +import java.util.logging.Level; import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.osee.ats.actions.wizard.IAtsTeamWorkflow; +import org.eclipse.osee.ats.artifact.ATSLog.LogType; import org.eclipse.osee.ats.artifact.ActionArtifact; +import org.eclipse.osee.ats.artifact.ActionArtifact.CreateTeamOption; import org.eclipse.osee.ats.artifact.ActionableItemArtifact; +import org.eclipse.osee.ats.artifact.AtsAttributeTypes; import org.eclipse.osee.ats.artifact.TeamDefinitionArtifact; +import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact; +import org.eclipse.osee.ats.artifact.TeamWorkflowExtensions; +import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.ats.util.AtsPriority.PriorityType; +import org.eclipse.osee.framework.core.data.IArtifactType; +import org.eclipse.osee.framework.core.exception.OseeArgumentException; import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.core.exception.OseeStateException; +import org.eclipse.osee.framework.jdk.core.util.Collections; +import org.eclipse.osee.framework.jdk.core.util.Strings; +import org.eclipse.osee.framework.logging.OseeLog; +import org.eclipse.osee.framework.skynet.core.User; +import org.eclipse.osee.framework.skynet.core.artifact.Artifact; import org.eclipse.osee.framework.skynet.core.artifact.ArtifactTypeManager; import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction; +import org.eclipse.osee.framework.ui.plugin.util.AWorkbench; import org.eclipse.osee.framework.ui.skynet.util.ChangeType; /** @@ -37,8 +53,7 @@ public class ActionManager { } ActionArtifact actionArt = (ActionArtifact) ArtifactTypeManager.addArtifact(AtsArtifactTypes.Action, AtsUtil.getAtsBranch()); - ActionArtifact.setArtifactIdentifyData(actionArt, title, desc, changeType, priority, validationRequired, - needByDate); + setArtifactIdentifyData(actionArt, title, desc, changeType, priority, validationRequired, needByDate); // Retrieve Team Definitions corresponding to selected Actionable Items if (monitor != null) { @@ -55,11 +70,134 @@ public class ActionManager { // Create team workflow artifacts for (TeamDefinitionArtifact teamDef : teams) { - actionArt.createTeamWorkflow(teamDef, actionableItems, teamDef.getLeads(actionableItems), transaction); + createTeamWorkflow(actionArt, teamDef, actionableItems, teamDef.getLeads(actionableItems), transaction); } actionArt.persist(transaction); return actionArt; } + public static TeamWorkFlowArtifact createTeamWorkflow(ActionArtifact actionArt, TeamDefinitionArtifact teamDef, Collection<ActionableItemArtifact> actionableItems, Collection<User> assignees, SkynetTransaction transaction, CreateTeamOption... createTeamOption) throws OseeCoreException { + String teamWorkflowArtifactName = AtsArtifactTypes.TeamWorkflow.getName(); + IAtsTeamWorkflow teamExt = null; + + // Check if any plugins want to create the team workflow themselves + for (IAtsTeamWorkflow teamExtension : TeamWorkflowExtensions.getAtsTeamWorkflowExtensions()) { + boolean isResponsible = false; + try { + isResponsible = teamExtension.isResponsibleForTeamWorkflowCreation(teamDef, actionableItems); + } catch (Exception ex) { + OseeLog.log(AtsPlugin.class, Level.WARNING, ex); + } + if (isResponsible) { + teamWorkflowArtifactName = teamExtension.getTeamWorkflowArtifactName(teamDef, actionableItems); + teamExt = teamExtension; + } + } + + // NOTE: The persist of the workflow will auto-email the assignees + TeamWorkFlowArtifact teamArt = + createTeamWorkflow(actionArt, teamDef, actionableItems, assignees, + ArtifactTypeManager.getType(teamWorkflowArtifactName), transaction, createTeamOption); + // Notify extension that workflow was created + if (teamExt != null) { + teamExt.teamWorkflowCreated(teamArt); + } + return teamArt; + } + + public static TeamWorkFlowArtifact createTeamWorkflow(ActionArtifact actionArt, TeamDefinitionArtifact teamDef, Collection<ActionableItemArtifact> actionableItems, Collection<User> assignees, IArtifactType artifactType, SkynetTransaction transaction, CreateTeamOption... createTeamOption) throws OseeCoreException { + return createTeamWorkflow(actionArt, teamDef, actionableItems, assignees, null, null, artifactType, transaction, + createTeamOption); + } + + public static TeamWorkFlowArtifact createTeamWorkflow(ActionArtifact actionArt, TeamDefinitionArtifact teamDef, Collection<ActionableItemArtifact> actionableItems, Collection<User> assignees, String guid, String hrid, IArtifactType artifactType, SkynetTransaction transaction, CreateTeamOption... createTeamOption) throws OseeCoreException { + + if (!Collections.getAggregate(createTeamOption).contains(CreateTeamOption.Duplicate_If_Exists)) { + // Make sure team doesn't already exist + for (TeamWorkFlowArtifact teamArt : actionArt.getTeamWorkFlowArtifacts()) { + if (teamArt.getTeamDefinition().equals(teamDef)) { + AWorkbench.popup("ERROR", "Team already exist"); + throw new OseeArgumentException("Team [%s] already exists for Action [%s]", teamDef, + actionArt.getHumanReadableId()); + } + } + } + + TeamWorkFlowArtifact teamArt = null; + if (guid == null) { + teamArt = (TeamWorkFlowArtifact) ArtifactTypeManager.addArtifact(artifactType, AtsUtil.getAtsBranch()); + } else { + teamArt = + (TeamWorkFlowArtifact) ArtifactTypeManager.addArtifact(artifactType, AtsUtil.getAtsBranch(), guid, hrid); + } + setArtifactIdentifyData(actionArt, teamArt); + + teamArt.getLog().addLog(LogType.Originated, "", ""); + + // Relate Workflow to ActionableItems (by guid) if team is responsible + // for that AI + for (ActionableItemArtifact aia : actionableItems) { + if (aia.getImpactedTeamDefs().contains(teamDef)) { + teamArt.getActionableItemsDam().addActionableItem(aia); + } + } + + // Relate WorkFlow to Team Definition (by guid due to relation loading + // issues) + teamArt.setTeamDefinition(teamDef); + + // Initialize state machine + String startState = teamArt.getWorkFlowDefinition().getStartPage().getPageName(); + teamArt.getStateMgr().initializeStateMachine(startState, assignees); + teamArt.getLog().addLog(LogType.StateEntered, startState, ""); + + // Relate Action to WorkFlow + actionArt.addRelation(AtsRelationTypes.ActionToWorkflow_WorkFlow, teamArt); + + teamArt.persist(transaction); + + return teamArt; + } + + /** + * Set Team Workflow attributes off given action artifact + */ + public static void setArtifactIdentifyData(ActionArtifact fromAction, TeamWorkFlowArtifact toTeam) throws OseeCoreException { + String priorityStr = fromAction.getSoleAttributeValue(AtsAttributeTypes.PriorityType, ""); + PriorityType priType = null; + if (Strings.isValid(priorityStr)) { + priType = PriorityType.getPriority(priorityStr); + } else { + throw new OseeArgumentException("Invalid priority [%s]", priorityStr); + } + setArtifactIdentifyData(toTeam, fromAction.getName(), + fromAction.getSoleAttributeValue(AtsAttributeTypes.Description, ""), + ChangeType.getChangeType(fromAction.getSoleAttributeValue(AtsAttributeTypes.ChangeType, "")), priType, + // fromAction.getAttributesToStringList(AtsAttributeTypes.ATS_USER_COMMUNITY), + fromAction.getSoleAttributeValue(AtsAttributeTypes.ValidationRequired, false), + fromAction.getSoleAttributeValue(AtsAttributeTypes.NeedBy, (Date) null)); + } + + /** + * Since there is no shared attribute yet, action and workflow arts are all populate with identify data + */ + public static void setArtifactIdentifyData(Artifact art, String title, String desc, ChangeType changeType, PriorityType priority, Boolean validationRequired, Date needByDate) throws OseeCoreException { + art.setName(title); + if (!desc.equals("")) { + art.setSoleAttributeValue(AtsAttributeTypes.Description, desc); + } + art.setSoleAttributeValue(AtsAttributeTypes.ChangeType, changeType.name()); + // art.setAttributeValues(ATSAttributes.USER_COMMUNITY_ATTRIBUTE.getStoreName(), userComms); + if (priority != null && priority != PriorityType.None) { + art.setSoleAttributeValue(AtsAttributeTypes.PriorityType, priority.getShortName()); + } + if (needByDate != null) { + art.setSoleAttributeValue(AtsAttributeTypes.NeedBy, needByDate); + } + if (validationRequired) { + art.setSoleAttributeValue(AtsAttributeTypes.ValidationRequired, true); + } + } + } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/ActionableItemManager.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/ActionableItemManager.java new file mode 100644 index 00000000000..e81d7f45b54 --- /dev/null +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/ActionableItemManager.java @@ -0,0 +1,200 @@ +/* + * Created on Sep 27, 2010 + * + * PLACE_YOUR_DISTRIBUTION_STATEMENT_RIGHT_HERE + */ +package org.eclipse.osee.ats.util; + +import java.util.Arrays; +import java.util.Collection; +import java.util.HashSet; +import java.util.Set; +import java.util.concurrent.CopyOnWriteArrayList; +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.osee.ats.artifact.ActionArtifact; +import org.eclipse.osee.ats.artifact.ActionableItemArtifact; +import org.eclipse.osee.ats.artifact.TeamDefinitionArtifact; +import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact; +import org.eclipse.osee.ats.util.widgets.dialog.AICheckTreeDialog; +import org.eclipse.osee.framework.core.enums.Active; +import org.eclipse.osee.framework.core.exception.OseeCoreException; +import org.eclipse.osee.framework.core.model.Branch; +import org.eclipse.osee.framework.skynet.core.User; +import org.eclipse.osee.framework.skynet.core.UserManager; +import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction; +import org.eclipse.osee.framework.ui.plugin.util.Result; +import org.eclipse.osee.framework.ui.swt.Displays; + +public class ActionableItemManager { + + public static Result editActionableItems(ActionArtifact actionArt) throws OseeCoreException { + final AICheckTreeDialog diag = + new AICheckTreeDialog( + "Add Impacted Actionable Items", + "Select New Impacted Actionable Items\n\n" + "Note: Un-selecting existing items will NOT remove the impact.\n" + "Team Workflow with no impact should be transitioned to Cancelled.", + Active.Active); + + diag.setInitialAias(actionArt.getActionableItems()); + if (diag.open() != 0) { + return Result.FalseResult; + } + + // ensure that at least one actionable item exists for each team after aias added/removed + for (TeamWorkFlowArtifact team : actionArt.getTeamWorkFlowArtifacts()) { + Set<ActionableItemArtifact> currentAias = team.getActionableItemsDam().getActionableItems(); + Collection<ActionableItemArtifact> checkedAias = diag.getChecked(); + for (ActionableItemArtifact aia : new CopyOnWriteArrayList<ActionableItemArtifact>(currentAias)) { + if (!checkedAias.contains(aia)) { + currentAias.remove(aia); + } + } + if (currentAias.isEmpty()) { + return new Result("Can not remove all actionable items for a team.\n\nActionable Items will go to 0 for [" + + // + team.getTeamName() + "][" + team.getHumanReadableId() + "]\n\nCancel team workflow instead."); + } + } + + final StringBuffer sb = new StringBuffer(); + SkynetTransaction transaction = new SkynetTransaction(AtsUtil.getAtsBranch(), "Edit Actionable Items"); + + // Add new aias + for (ActionableItemArtifact aia : diag.getChecked()) { + Result result = addActionableItemToTeamsOrAddTeams(actionArt, aia, UserManager.getUser(), transaction); + sb.append(result.getText()); + } + // Remove unchecked aias + for (TeamWorkFlowArtifact team : actionArt.getTeamWorkFlowArtifacts()) { + for (ActionableItemArtifact aia : team.getActionableItemsDam().getActionableItems()) { + if (!diag.getChecked().contains(aia)) { + team.getActionableItemsDam().removeActionableItem(aia); + } + } + team.persist(transaction); + } + + transaction.execute(); + return new Result(true, sb.toString()); + } + + public static Result addActionableItemToTeamsOrAddTeams(ActionArtifact actionArt, ActionableItemArtifact aia, User originator, SkynetTransaction transaction) throws OseeCoreException { + StringBuffer sb = new StringBuffer(); + for (TeamDefinitionArtifact tda : TeamDefinitionArtifact.getImpactedTeamDefs(Arrays.asList(aia))) { + boolean teamExists = false; + // Look for team workflow that is associated with this tda + for (TeamWorkFlowArtifact teamArt : actionArt.getTeamWorkFlowArtifacts()) { + // If found + if (teamArt.getTeamDefinition().equals(tda)) { + // And workflow doesn't already have this actionable item, + // ADD it + if (!teamArt.getActionableItemsDam().getActionableItems().contains(aia)) { + teamArt.getActionableItemsDam().addActionableItem(aia); + teamArt.saveSMA(transaction); + sb.append(aia.getName() + " => added to existing team workflow \"" + tda.getName() + "\"\n"); + teamExists = true; + } else { + sb.append(aia.getName() + " => already exists in team workflow \"" + tda.getName() + "\"\n"); + teamExists = true; + } + } + } + if (!teamExists) { + TeamWorkFlowArtifact teamArt = + ActionManager.createTeamWorkflow(actionArt, tda, Arrays.asList(aia), tda.getLeads(), transaction); + if (originator != null) { + teamArt.getLog().setOriginator(originator); + } + teamArt.persist(transaction); + sb.append(aia.getName() + " => added team workflow \"" + tda.getName() + "\"\n"); + } + } + return new Result(true, sb.toString()); + } + + public static Result editActionableItems(TeamWorkFlowArtifact teamArt) throws OseeCoreException { + return ActionableItemManager.editActionableItems(teamArt.getParentActionArtifact()); + } + + public static Result convertActionableItems(TeamWorkFlowArtifact teamArt) throws OseeCoreException { + Result toReturn = Result.FalseResult; + AICheckTreeDialog diag = + new AICheckTreeDialog("Convert Impacted Actionable Items", + "NOTE: This should NOT be the normal path to changing actionable items.\n\nIf a team has " + + // + "determined " + "that there is NO impact and that another actionable items IS impacted:\n" + + // + " 1) Cancel this operation\n" + " 2) Select \"Edit Actionable Items\" to add/remove " + + // + "impacted items \n" + " which will create new teams as needed.\n" + + // + " 3) Then cancel the team that has no impacts.\n Doing this will show that the original " + + // + "team analyzed the impact\n" + " and determined that there was no change.\n\n" + "However, " + + // + "there are some cases where an impacted item was incorrectly chosen\n" + "and the original team " + + // + "does not need to do anything, this dialog will purge the\n" + "team from the DB as if it was " + + // + "never chosen.\n\n" + "Current Actionable Item(s): " + teamArt.getWorldViewActionableItems() + "\n" + + // + "Current Team: " + teamArt.getTeamDefinition().getName() + "\n" + + // + "Select SINGLE Actionable Item below to convert this workflow to.\n\n" + + // + "You will be prompted to confirm this conversion.", Active.Both); + + diag.setInput(ActionableItemArtifact.getTopLevelActionableItems(Active.Both)); + if (diag.open() != 0) { + return Result.FalseResult; + } + if (diag.getChecked().isEmpty()) { + return new Result("At least one actionable item must must be selected."); + } + if (diag.getChecked().size() > 1) { + return new Result("Only ONE actionable item can be selected for converts"); + } + ActionableItemArtifact selectedAia = diag.getChecked().iterator().next(); + Collection<TeamDefinitionArtifact> teamDefs = + ActionableItemArtifact.getImpactedTeamDefs(Arrays.asList(selectedAia)); + if (teamDefs.size() == 1) { + TeamDefinitionArtifact newTeamDef = teamDefs.iterator().next(); + if (newTeamDef.equals(teamArt.getTeamDefinition())) { + toReturn = + new Result( + "Actionable Item selected belongs to same team as currently selected team.\n" + "Use \"Edit Actionable Items\" instaed."); + } else { + StringBuffer sb = new StringBuffer("Converting...\nActionable Item(s): "); + sb.append(teamArt.getWorldViewActionableItems()); + sb.append("\nTeam: "); + sb.append(teamArt.getTeamDefinition().getName()); + sb.append("\nto\nActionable Item(s): "); + sb.append(selectedAia); + sb.append("\nTeam: "); + sb.append(newTeamDef.getName()); + if (MessageDialog.openConfirm(Displays.getActiveShell(), "Confirm Convert", sb.toString())) { + Set<ActionableItemArtifact> toProcess = new HashSet<ActionableItemArtifact>(); + toProcess.add(selectedAia); + toReturn = actionableItemsTx(teamArt, AtsUtil.getAtsBranch(), toProcess, newTeamDef); + } + } + } else { + toReturn = new Result("Single team can not retrieved for " + selectedAia.getName()); + } + return toReturn; + } + + private static Result actionableItemsTx(TeamWorkFlowArtifact teamArt, Branch branch, Set<ActionableItemArtifact> selectedAlias, TeamDefinitionArtifact teamDefinition) throws OseeCoreException { + Result workResult = teamArt.getActionableItemsDam().setActionableItems(selectedAlias); + if (workResult.isTrue()) { + if (teamDefinition != null) { + teamArt.setTeamDefinition(teamDefinition); + } + SkynetTransaction transaction = new SkynetTransaction(branch, "Converate Actionable Item"); + teamArt.getParentActionArtifact().resetAttributesOffChildren(transaction); + teamArt.persist(transaction); + transaction.execute(); + } + return workResult; + } + +} diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/ArtifactEmailWizard.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/ArtifactEmailWizard.java index 38489868d99..490a2af4e28 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/ArtifactEmailWizard.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/ArtifactEmailWizard.java @@ -11,19 +11,45 @@ package org.eclipse.osee.ats.util; import java.util.ArrayList; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import java.util.List; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.util.Overview.PreviewStyle; import org.eclipse.osee.framework.core.exception.OseeCoreException; +import org.eclipse.osee.framework.skynet.core.User; +import org.eclipse.osee.framework.ui.skynet.util.email.EmailGroup; import org.eclipse.osee.framework.ui.skynet.util.email.EmailWizard; public class ArtifactEmailWizard extends EmailWizard { - public ArtifactEmailWizard(StateMachineArtifact sma) throws OseeCoreException { + public ArtifactEmailWizard(AbstractWorkflowArtifact sma) throws OseeCoreException { this(sma, null); } - public ArtifactEmailWizard(StateMachineArtifact sma, ArrayList<Object> toAddress) throws OseeCoreException { - super(sma.getPreviewHtml(PreviewStyle.HYPEROPEN, PreviewStyle.NO_SUBSCRIBE_OR_FAVORITE), - " Regarding " + sma.getArtifactTypeName() + " - " + sma.getName(), sma.getEmailableGroups(), toAddress); + public ArtifactEmailWizard(AbstractWorkflowArtifact sma, ArrayList<Object> toAddress) throws OseeCoreException { + super(getPreviewHtml(sma, PreviewStyle.HYPEROPEN, PreviewStyle.NO_SUBSCRIBE_OR_FAVORITE), + " Regarding " + sma.getArtifactTypeName() + " - " + sma.getName(), getEmailableGroups(sma), toAddress); } + + private static List<EmailGroup> getEmailableGroups(AbstractWorkflowArtifact workflow) throws OseeCoreException { + ArrayList<EmailGroup> groupNames = new ArrayList<EmailGroup>(); + ArrayList<String> emails = new ArrayList<String>(); + emails.add(workflow.getOriginator().getEmail()); + groupNames.add(new EmailGroup("Originator", emails)); + if (workflow.getStateMgr().getAssignees().size() > 0) { + emails = new ArrayList<String>(); + for (User u : workflow.getStateMgr().getAssignees()) { + emails.add(u.getEmail()); + } + groupNames.add(new EmailGroup("Assignees", emails)); + } + return groupNames; + } + + public static String getPreviewHtml(AbstractWorkflowArtifact workflow, PreviewStyle... styles) throws OseeCoreException { + Overview o = new Overview(); + o.addHeader(workflow, styles); + o.addFooter(workflow, styles); + return o.getPage(); + } + } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/AtsArtifactAnnotations.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/AtsArtifactAnnotations.java index 47d656348d2..2cb04954cbb 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/AtsArtifactAnnotations.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/AtsArtifactAnnotations.java @@ -12,7 +12,7 @@ package org.eclipse.osee.ats.util; import java.util.Set; import java.util.logging.Level; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.logging.OseeLog; @@ -29,8 +29,8 @@ public class AtsArtifactAnnotations implements IArtifactAnnotation { @Override public void getAnnotations(Artifact artifact, Set<ArtifactAnnotation> annotations) { try { - if (artifact instanceof StateMachineArtifact) { - StateMachineArtifact sma = (StateMachineArtifact) artifact; + if (artifact instanceof AbstractWorkflowArtifact) { + AbstractWorkflowArtifact sma = (AbstractWorkflowArtifact) artifact; Result result = sma.getDeadlineMgr().isDeadlineDateAlerting(); if (result.isTrue()) { annotations.add(ArtifactAnnotation.getWarning("org.eclipse.osee.ats.deadline", result.getText())); diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/AtsBranchCommitJob.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/AtsBranchCommitJob.java index 0d4e75985de..e60ed6c5b1e 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/AtsBranchCommitJob.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/AtsBranchCommitJob.java @@ -16,9 +16,10 @@ import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.core.runtime.jobs.Job; import org.eclipse.jface.dialogs.MessageDialog; -import org.eclipse.osee.ats.artifact.ReviewSMArtifact; -import org.eclipse.osee.ats.artifact.ReviewSMArtifact.ReviewBlockType; +import org.eclipse.osee.ats.artifact.AbstractReviewArtifact; +import org.eclipse.osee.ats.artifact.AbstractReviewArtifact.ReviewBlockType; import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact; +import org.eclipse.osee.ats.editor.stateItem.AtsStateItemManager; import org.eclipse.osee.ats.editor.stateItem.IAtsStateItem; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.ats.util.widgets.ReviewManager; @@ -65,7 +66,7 @@ public class AtsBranchCommitJob extends Job { // Confirm that all blocking reviews are completed // Loop through this state's blocking reviews to confirm complete if (teamArt.isTeamWorkflow()) { - for (ReviewSMArtifact reviewArt : ReviewManager.getReviewsFromCurrentState(teamArt)) { + for (AbstractReviewArtifact reviewArt : ReviewManager.getReviewsFromCurrentState(teamArt)) { if (reviewArt.getReviewBlockType() == ReviewBlockType.Commit && !reviewArt.isCancelledOrCompleted()) { return new Status(IStatus.ERROR, AtsPlugin.PLUGIN_ID, "Blocking Review must be completed before commit."); @@ -76,7 +77,7 @@ public class AtsBranchCommitJob extends Job { if (!overrideStateValidation) { adminOverride = false; // Check extension points for valid commit - for (IAtsStateItem item : teamArt.getStateItems().getStateItems(teamArt.getWorkPageDefinition().getId())) { + for (IAtsStateItem item : AtsStateItemManager.getStateItems(teamArt.getWorkPageDefinition().getId())) { final Result tempResult = item.committing(teamArt); if (tempResult.isFalse()) { // Allow Admin to override state validation diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/AtsDeleteManager.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/AtsDeleteManager.java index 7cddb8256e4..8ca95f2941a 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/AtsDeleteManager.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/AtsDeleteManager.java @@ -18,9 +18,9 @@ import java.util.Map; import java.util.Set; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.jface.dialogs.MessageDialogWithToggle; -import org.eclipse.osee.ats.artifact.ATSArtifact; +import org.eclipse.osee.ats.artifact.AbstractAtsArtifact; import org.eclipse.osee.ats.artifact.ActionArtifact; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.core.operation.AbstractOperation; @@ -52,7 +52,7 @@ public class AtsDeleteManager { StringBuilder artBuilder = new StringBuilder(); for (Artifact art : selectedArts) { - if (art instanceof ATSArtifact) { + if (art instanceof AbstractAtsArtifact) { delArts.add(art); if (selectedArts.size() < 30) { artBuilder.append(String.format("Name: %s Type: %s\n", art.getHumanReadableId(), @@ -89,7 +89,7 @@ public class AtsDeleteManager { final Set<Artifact> relatedArts = new HashSet<Artifact>(30); delBuilder.append(String.format("\n<b>Selected</b>:[%s][%s][%s]", deleteArt.getArtifactTypeName(), deleteArt.getHumanReadableId(), deleteArt.getName()) + "\n"); - ((ATSArtifact) deleteArt).atsDelete(relatedArts, ignoredArts); + ((AbstractAtsArtifact) deleteArt).atsDelete(relatedArts, ignoredArts); for (Artifact loopArt : relatedArts) { if (!loopArt.equals(deleteArt)) { delBuilder.append(String.format(AHTML.addSpace(4) + "<b>Related</b>:[%s][%s][%s]", @@ -98,8 +98,8 @@ public class AtsDeleteManager { } // check that if all team workflows are deleted, delete action for (Artifact art : allDeleteArts) { - if (art instanceof StateMachineArtifact) { - ActionArtifact actionArt = ((StateMachineArtifact) art).getParentActionArtifact(); + if (art instanceof AbstractWorkflowArtifact) { + ActionArtifact actionArt = ((AbstractWorkflowArtifact) art).getParentActionArtifact(); if (actionArt != null && !allDeleteArts.contains(actionArt) && allDeleteArts.containsAll(actionArt.getTeamWorkFlowArtifacts())) { relatedArts.add(actionArt); delBuilder.append(String.format(AHTML.addSpace(4) + "<b>Related</b>:[%s][%s][%s]", diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/AtsNotifyUsers.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/AtsNotifyUsers.java index 9e6ef0688f6..40dcb6117fc 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/AtsNotifyUsers.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/AtsNotifyUsers.java @@ -15,10 +15,10 @@ import java.util.Collection; import java.util.List; import java.util.logging.Level; import org.eclipse.osee.ats.artifact.ATSLog.LogType; +import org.eclipse.osee.ats.artifact.AbstractReviewArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.artifact.ActionableItemArtifact; import org.eclipse.osee.ats.artifact.LogItem; -import org.eclipse.osee.ats.artifact.ReviewSMArtifact; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.ats.util.widgets.role.UserRole; @@ -82,14 +82,14 @@ public class AtsNotifyUsers implements IArtifactEventListener { OseeEventManager.removeListener(this); } - public void notify(StateMachineArtifact sma, NotifyType... notifyTypes) throws OseeCoreException { + public void notify(AbstractWorkflowArtifact sma, NotifyType... notifyTypes) throws OseeCoreException { notify(sma, null, notifyTypes); } /** * @param notifyUsers only valid for assignees notifyType. if null or any other type, the users will be computed */ - public void notify(StateMachineArtifact sma, Collection<User> notifyUsers, NotifyType... notifyTypes) throws OseeCoreException { + public void notify(AbstractWorkflowArtifact sma, Collection<User> notifyUsers, NotifyType... notifyTypes) throws OseeCoreException { if (!isInTest() && (!AtsUtil.isEmailEnabled() || !AtsUtil.isProductionDb() || sma.getName().startsWith("tt "))) { return; } @@ -119,7 +119,7 @@ public class AtsNotifyUsers implements IArtifactEventListener { } } if (types.contains(NotifyType.Subscribed)) { - Collection<User> subscribed = sma.getSubscribed(); + Collection<User> subscribed = SubscribeManager.getSubscribed(sma); subscribed = EmailUtil.getValidEmailUsers(subscribed); if (subscribed.size() > 0) { notificationManager.addNotificationEvent(new OseeNotificationEvent(subscribed, getIdString(sma), @@ -129,7 +129,7 @@ public class AtsNotifyUsers implements IArtifactEventListener { } } if (types.contains(NotifyType.Cancelled) || types.contains(NotifyType.Completed)) { - if ((sma.isTeamWorkflow() || sma instanceof ReviewSMArtifact) && (sma.isCompleted() || sma.isCancelled())) { + if ((sma.isTeamWorkflow() || sma instanceof AbstractReviewArtifact) && (sma.isCompleted() || sma.isCancelled())) { User originator = sma.getOriginator(); if (!EmailUtil.isEmailValid(originator)) { OseeLog.log(AtsPlugin.class, Level.INFO, @@ -152,13 +152,13 @@ public class AtsNotifyUsers implements IArtifactEventListener { } } if (types.contains(NotifyType.Reviewed)) { - if (sma instanceof ReviewSMArtifact) { - if (((ReviewSMArtifact) sma).getUserRoleManager() != null) { + if (sma instanceof AbstractReviewArtifact) { + if (((AbstractReviewArtifact) sma).getUserRoleManager() != null) { Collection<User> authorModerator = - ((ReviewSMArtifact) sma).getUserRoleManager().getRoleUsersAuthorModerator(); + ((AbstractReviewArtifact) sma).getUserRoleManager().getRoleUsersAuthorModerator(); authorModerator = EmailUtil.getValidEmailUsers(authorModerator); if (authorModerator.size() > 0) { - for (UserRole role : ((ReviewSMArtifact) sma).getUserRoleManager().getRoleUsersReviewComplete()) { + for (UserRole role : ((AbstractReviewArtifact) sma).getUserRoleManager().getRoleUsersReviewComplete()) { notificationManager.addNotificationEvent(new OseeNotificationEvent(authorModerator, getIdString(sma), NotifyType.Reviewed.name(), String.format( "[%s] titled [%s] has been Reviewed by [%s]", sma.getArtifactTypeName(), sma.getName(), @@ -170,7 +170,7 @@ public class AtsNotifyUsers implements IArtifactEventListener { } } - private static String getIdString(StateMachineArtifact sma) { + private static String getIdString(AbstractWorkflowArtifact sma) { try { String legacyPcrId = sma.getWorldViewLegacyPCR(); if (!legacyPcrId.equals("")) { diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/AtsPreSaveCacheRemoteEventHandler.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/AtsPreSaveCacheRemoteEventHandler.java index eaa155bccae..c588ef8c29f 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/AtsPreSaveCacheRemoteEventHandler.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/AtsPreSaveCacheRemoteEventHandler.java @@ -12,7 +12,7 @@ package org.eclipse.osee.ats.util; import java.util.List; import java.util.logging.Level; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.framework.logging.OseeLog; import org.eclipse.osee.framework.skynet.core.artifact.Artifact; @@ -61,8 +61,8 @@ public class AtsPreSaveCacheRemoteEventHandler implements IArtifactEventListener return; } for (Artifact artifact : artifactEvent.getCacheArtifacts(EventModType.Modified, EventModType.Reloaded)) { - if (artifact instanceof StateMachineArtifact) { - ((StateMachineArtifact) artifact).initalizePreSaveCache(); + if (artifact instanceof AbstractWorkflowArtifact) { + ((AbstractWorkflowArtifact) artifact).initalizePreSaveCache(); } } } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/AtsUtil.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/AtsUtil.java index 1d1a42e74a4..801c776870c 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/AtsUtil.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/AtsUtil.java @@ -23,9 +23,9 @@ import org.eclipse.jface.action.Action; import org.eclipse.jface.viewers.ArrayContentProvider; import org.eclipse.osee.ats.AtsOpenOption; import org.eclipse.osee.ats.actions.NewAction; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.artifact.ActionArtifact; import org.eclipse.osee.ats.artifact.AtsAttributeTypes; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact; import org.eclipse.osee.ats.artifact.TeamWorkflowLabelProvider; import org.eclipse.osee.ats.config.AtsBulkLoad; @@ -96,6 +96,7 @@ public final class AtsUtil { private static ArtifactTypeEventFilter atsObjectArtifactTypesFilter, reviewArtifactTypesFilter, teamWorkflowArtifactTypesFilter, workItemArtifactTypesFilter; private static List<IEventFilter> atsObjectEventFilter = new ArrayList<IEventFilter>(2); + public final static double DEFAULT_HOURS_PER_WORK_DAY = 8; private AtsUtil() { super(); @@ -202,7 +203,7 @@ public final class AtsUtil { } public static void editActionableItems(ActionArtifact actionArt) throws OseeCoreException { - Result result = actionArt.editActionableItems(); + Result result = ActionableItemManager.editActionableItems(actionArt); if (result.isFalse() && result.getText().equals("")) { return; } @@ -212,7 +213,7 @@ public final class AtsUtil { } public static void editActionableItems(TeamWorkFlowArtifact teamArt) throws OseeCoreException { - Result result = teamArt.editActionableItems(); + Result result = ActionableItemManager.editActionableItems(teamArt); if (result.isFalse() && result.getText().equals("")) { return; } @@ -246,7 +247,7 @@ public final class AtsUtil { try { if (editor == OseeCmEditor.CmPcrEditor) { - if (artifact instanceof StateMachineArtifact || artifact instanceof ActionArtifact) { + if (artifact instanceof AbstractWorkflowArtifact || artifact instanceof ActionArtifact) { openATSAction(artifact, AtsOpenOption.OpenOneOrPopupSelect); } else { RendererManager.open(artifact, PresentationType.GENERALIZED_EDIT); diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/DeadlineManager.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/DeadlineManager.java index d3ec8a706fb..608377e739d 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/DeadlineManager.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/DeadlineManager.java @@ -12,7 +12,7 @@ package org.eclipse.osee.ats.util; import java.util.Date; import java.util.logging.Level; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.ats.world.IWorldViewArtifact; import org.eclipse.osee.framework.core.exception.OseeCoreException; @@ -24,9 +24,9 @@ import org.eclipse.osee.framework.ui.plugin.util.Result; */ public class DeadlineManager { - private final StateMachineArtifact sma; + private final AbstractWorkflowArtifact sma; - public DeadlineManager(StateMachineArtifact sma) { + public DeadlineManager(AbstractWorkflowArtifact sma) { this.sma = sma; } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/DefaultTeamState.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/DefaultTeamState.java new file mode 100644 index 00000000000..62b57756d3a --- /dev/null +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/DefaultTeamState.java @@ -0,0 +1,10 @@ +package org.eclipse.osee.ats.util;
+
+public enum DefaultTeamState {
+ Endorse,
+ Analyze,
+ Authorize,
+ Implement,
+ Completed,
+ Cancelled
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/FavoritesManager.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/FavoritesManager.java index 4d9fab23a3a..c7b56bb044c 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/FavoritesManager.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/FavoritesManager.java @@ -10,16 +10,19 @@ *******************************************************************************/ package org.eclipse.osee.ats.util; +import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; +import java.util.List; import org.eclipse.jface.dialogs.MessageDialog; -import org.eclipse.osee.ats.artifact.IFavoriteableArtifact; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.logging.OseeLevel; import org.eclipse.osee.framework.logging.OseeLog; +import org.eclipse.osee.framework.skynet.core.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.transaction.SkynetTransaction; import org.eclipse.ui.PlatformUI; @@ -28,13 +31,13 @@ import org.eclipse.ui.PlatformUI; */ public class FavoritesManager { - private final Collection<StateMachineArtifact> smas; + private final Collection<AbstractWorkflowArtifact> smas; - public FavoritesManager(StateMachineArtifact sma) { + public FavoritesManager(AbstractWorkflowArtifact sma) { this(Arrays.asList(sma)); } - public FavoritesManager(Collection<StateMachineArtifact> smas) { + public FavoritesManager(Collection<AbstractWorkflowArtifact> smas) { super(); this.smas = smas; } @@ -45,7 +48,7 @@ public class FavoritesManager { public void toggleFavorite(boolean prompt) { try { - if (((IFavoriteableArtifact) smas.iterator().next()).amIFavorite()) { + if ((amIFavorite(smas.iterator().next()))) { boolean result = true; if (prompt) { result = @@ -54,8 +57,8 @@ public class FavoritesManager { } if (result) { SkynetTransaction transaction = new SkynetTransaction(AtsUtil.getAtsBranch(), "Toggle Favorites"); - for (StateMachineArtifact sma : smas) { - ((IFavoriteableArtifact) sma).removeFavorite(UserManager.getUser(), transaction); + for (AbstractWorkflowArtifact sma : smas) { + removeFavorite(sma, UserManager.getUser(), transaction); } transaction.execute(); } @@ -68,8 +71,8 @@ public class FavoritesManager { } if (result) { SkynetTransaction transaction = new SkynetTransaction(AtsUtil.getAtsBranch(), "Toggle Favorites"); - for (StateMachineArtifact sma : smas) { - ((IFavoriteableArtifact) sma).addFavorite(UserManager.getUser(), transaction); + for (AbstractWorkflowArtifact sma : smas) { + addFavorite(sma, UserManager.getUser(), transaction); } transaction.execute(); } @@ -78,4 +81,36 @@ public class FavoritesManager { OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex); } } + + public static boolean amIFavorite(AbstractWorkflowArtifact workflow) { + try { + return isFavorite(workflow, UserManager.getUser()); + } catch (OseeCoreException ex) { + return false; + } + } + + public static void addFavorite(AbstractWorkflowArtifact workflow, User user, SkynetTransaction transaction) throws OseeCoreException { + if (!workflow.getRelatedArtifacts(AtsRelationTypes.FavoriteUser_User).contains(user)) { + workflow.addRelation(AtsRelationTypes.FavoriteUser_User, user); + workflow.persist(transaction); + } + } + + public static void removeFavorite(AbstractWorkflowArtifact workflow, User user, SkynetTransaction transaction) throws OseeCoreException { + workflow.deleteRelation(AtsRelationTypes.FavoriteUser_User, user); + workflow.persist(transaction); + } + + public static boolean isFavorite(AbstractWorkflowArtifact workflow, User user) throws OseeCoreException { + return workflow.getRelatedArtifacts(AtsRelationTypes.FavoriteUser_User).contains(user); + } + + public static List<User> getFavorites(AbstractWorkflowArtifact workflow) throws OseeCoreException { + ArrayList<User> arts = new ArrayList<User>(); + for (Artifact art : workflow.getRelatedArtifacts(AtsRelationTypes.FavoriteUser_User)) { + arts.add((User) art); + } + return arts; + } } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/GoalManager.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/GoalManager.java new file mode 100644 index 00000000000..b024505c468 --- /dev/null +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/GoalManager.java @@ -0,0 +1,185 @@ +/* + * Created on Sep 28, 2010 + * + * PLACE_YOUR_DISTRIBUTION_STATEMENT_RIGHT_HERE + */ +package org.eclipse.osee.ats.util; + +import java.text.NumberFormat; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import org.eclipse.jface.window.Window; +import org.eclipse.nebula.widgets.xviewer.XViewerCells; +import org.eclipse.osee.ats.artifact.ATSLog.LogType; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; +import org.eclipse.osee.ats.artifact.GoalArtifact; +import org.eclipse.osee.ats.artifact.GoalArtifact.GoalState; +import org.eclipse.osee.framework.core.exception.OseeCoreException; +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.ui.plugin.util.AWorkbench; +import org.eclipse.osee.framework.ui.skynet.widgets.dialog.ArtifactListDialog; +import org.eclipse.osee.framework.ui.skynet.widgets.dialog.EntryDialog; +import org.eclipse.osee.framework.ui.swt.Displays; + +public final class GoalManager { + + private GoalManager() { + // private constructor + } + + /** + * change goal, prompt if member of two goals + */ + public static GoalArtifact promptChangeGoalOrder(Artifact artifact) throws OseeCoreException { + if (!isHasGoal(artifact)) { + AWorkbench.popup(String.format("No Goal set for artifact [%s]", artifact)); + return null; + } + Collection<Artifact> goals = getGoals(artifact, false); + GoalArtifact goal = null; + if (goals.size() == 1) { + goal = (GoalArtifact) goals.iterator().next(); + } else if (goals.size() > 1) { + ArtifactListDialog dialog = new ArtifactListDialog(Displays.getActiveShell()); + dialog.setTitle("Select Goal"); + dialog.setMessage("Artifact has multiple Goals\n\nSelect Goal to change order"); + dialog.setArtifacts(goals); + if (dialog.open() == 0) { + goal = (GoalArtifact) dialog.getSelection(); + } else { + return null; + } + } + return promptChangeGoalOrder(goal, artifact); + } + + public static boolean isHasGoal(Artifact artifact) throws OseeCoreException { + return artifact.getRelatedArtifactsCount(AtsRelationTypes.Goal_Goal) > 0; + } + + /** + * change goal order for artifact within given goal + */ + public static GoalArtifact promptChangeGoalOrder(GoalArtifact goalArtifact, Artifact artifact) throws OseeCoreException { + return promptChangeGoalOrder(goalArtifact, Arrays.asList(artifact)); + } + + public static void getGoals(Artifact artifact, Set<Artifact> goals, boolean recurse) throws OseeCoreException { + getGoals(Arrays.asList(artifact), goals, recurse); + } + + public static Collection<Artifact> getGoals(Artifact artifact, boolean recurse) throws OseeCoreException { + Set<Artifact> goals = new HashSet<Artifact>(); + getGoals(artifact, goals, recurse); + return goals; + } + + /** + * change goal order for artifacts within given goal + */ + public static GoalArtifact promptChangeGoalOrder(GoalArtifact goalArtifact, List<Artifact> artifacts) throws OseeCoreException { + StringBuilder currentOrder = new StringBuilder("Current Order: "); + for (Artifact artifact : artifacts) { + if (artifacts.size() == 1 && !isHasGoal(artifact) || goalArtifact == null) { + AWorkbench.popup(String.format("No Goal set for artifact [%s]", artifact)); + return null; + } + String currIndexStr = getGoalOrder(goalArtifact, artifact); + currentOrder.append(currIndexStr + ", "); + } + + List<Artifact> members = goalArtifact.getMembers(); + EntryDialog ed = + new EntryDialog( + "Change Goal Order", + String.format( + "Goal: %s\n\n%s\n\nEnter New Order Number from 1..%d or %d for last\n\nNote: Goal will be placed before number entered.", + goalArtifact, currentOrder.toString().replaceFirst(", $", ""), members.size(), members.size() + 1)); + ed.setNumberFormat(NumberFormat.getIntegerInstance()); + + if (ed.open() == Window.OK) { + String newIndexStr = ed.getEntry(); + Integer enteredIndex = Integer.valueOf(newIndexStr); + boolean insertLast = enteredIndex == members.size() + 1; + Integer membersIndex = insertLast ? members.size() - 1 : enteredIndex - 1; + if (membersIndex > members.size()) { + AWorkbench.popup(String.format("New Order Number [%s] out of range 1..%d", newIndexStr, members.size())); + return null; + } + for (Artifact artifact : artifacts) { + Artifact insertTarget = members.get(membersIndex); + goalArtifact.setRelationOrder(AtsRelationTypes.Goal_Member, insertTarget, insertLast ? true : false, + artifact); + } + goalArtifact.persist(); + return goalArtifact; + } + return null; + } + + public static String getGoalOrder(Artifact artifact) throws OseeCoreException { + if (artifact instanceof GoalArtifact) { + return ""; + } + if (!isHasGoal(artifact)) { + return ""; + } + Collection<Artifact> goals = getGoals(artifact, false); + if (goals.size() > 1) { + List<Artifact> goalsSorted = new ArrayList<Artifact>(goals); + Collections.sort(goalsSorted); + StringBuffer sb = new StringBuffer(); + for (Artifact goal : goalsSorted) { + sb.append(String.format("%s-[%s] ", getGoalOrder((GoalArtifact) goal, artifact), goal)); + } + return sb.toString(); + } + Artifact goal = goals.iterator().next(); + return getGoalOrder((GoalArtifact) goal, artifact); + } + + public static String getGoalOrder(GoalArtifact goalArtifact, Artifact member) throws OseeCoreException { + List<Artifact> members = goalArtifact.getMembers(); + if (!members.contains(member)) { + return ""; + } + try { + return String.valueOf(members.indexOf(member) + 1); + } catch (Exception ex) { + return XViewerCells.getCellExceptionString(ex); + } + } + + public static GoalArtifact createGoal(String title) throws OseeCoreException { + GoalArtifact goalArt = + (GoalArtifact) ArtifactTypeManager.addArtifact(AtsArtifactTypes.Goal, AtsUtil.getAtsBranch()); + goalArt.setName(title); + goalArt.getLog().addLog(LogType.Originated, "", ""); + + // Initialize state machine + goalArt.getStateMgr().initializeStateMachine(GoalState.InWork.name(), + Collections.singleton(UserManager.getUser())); + goalArt.getLog().addLog(LogType.StateEntered, GoalState.InWork.name(), ""); + return goalArt; + } + + public static void getGoals(Collection<Artifact> artifacts, Set<Artifact> goals, boolean recurse) throws OseeCoreException { + for (Artifact art : artifacts) { + if (art instanceof GoalArtifact) { + goals.add(art); + } + goals.addAll(art.getRelatedArtifacts(AtsRelationTypes.Goal_Goal, GoalArtifact.class)); + if (recurse && art instanceof AbstractWorkflowArtifact && ((AbstractWorkflowArtifact) art).getParentSMA() != null) { + getGoals(((AbstractWorkflowArtifact) art).getParentSMA(), goals, recurse); + } + } + } + +} 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 1a9c91149b5..caa498504cb 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 @@ -19,15 +19,15 @@ import java.util.Set; import java.util.logging.Level; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.NullProgressMonitor; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.artifact.AtsAttributeTypes; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; -import org.eclipse.osee.ats.artifact.StateMachineArtifact.TransitionOption; import org.eclipse.osee.ats.artifact.TaskArtifact; -import org.eclipse.osee.ats.artifact.TaskableStateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractTaskableArtifact; import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.ats.util.AtsNotifyUsers; import org.eclipse.osee.ats.util.AtsUtil; +import org.eclipse.osee.ats.util.TransitionOption; import org.eclipse.osee.framework.core.exception.OseeArgumentException; import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.core.exception.OseeExceptions; @@ -47,7 +47,7 @@ import org.xml.sax.helpers.XMLReaderFactory; */ public class ExcelAtsTaskArtifactExtractor { - private final StateMachineArtifact sma; + private final AbstractWorkflowArtifact sma; private final boolean emailPOCs; private final SkynetTransaction transaction; @@ -98,11 +98,11 @@ public class ExcelAtsTaskArtifactExtractor { private String[] headerRow; private int rowNum; private final IProgressMonitor monitor; - private final StateMachineArtifact sma; + private final AbstractWorkflowArtifact sma; private final SkynetTransaction transaction; private final boolean emailPOCs; - protected InternalRowProcessor(IProgressMonitor monitor, SkynetTransaction transaction, StateMachineArtifact sma, boolean emailPOCs) { + protected InternalRowProcessor(IProgressMonitor monitor, SkynetTransaction transaction, AbstractWorkflowArtifact sma, boolean emailPOCs) { this.monitor = monitor; this.transaction = transaction; this.emailPOCs = emailPOCs; @@ -144,7 +144,7 @@ public class ExcelAtsTaskArtifactExtractor { try { rowNum++; monitor.setTaskName("Processing Row " + rowNum); - TaskArtifact taskArt = ((TaskableStateMachineArtifact) sma).createNewTask(""); + TaskArtifact taskArt = ((AbstractTaskableArtifact) sma).createNewTask(""); monitor.subTask("Validating..."); boolean fullRow = false; @@ -234,8 +234,7 @@ public class ExcelAtsTaskArtifactExtractor { percent = percent * 100; } } catch (Exception ex) { - throw new OseeArgumentException("Invalid Percent Complete \"%s\" for row %d", - str, rowNum); + throw new OseeArgumentException("Invalid Percent Complete \"%s\" for row %d", str, rowNum); } int percentInt = percent.intValue(); sma.getStateMgr().updateMetrics(0, percentInt, true); @@ -247,8 +246,7 @@ public class ExcelAtsTaskArtifactExtractor { try { hours = new Double(str); } catch (Exception ex) { - throw new OseeArgumentException("Invalid Hours Spent \"%s\" for row %d", str, - rowNum); + throw new OseeArgumentException("Invalid Hours Spent \"%s\" for row %d", str, rowNum); } sma.getStateMgr().updateMetrics(hours, sma.getStateMgr().getPercentComplete(), true); } @@ -259,8 +257,7 @@ public class ExcelAtsTaskArtifactExtractor { try { hours = new Double(str); } catch (Exception ex) { - throw new OseeArgumentException("Invalid Estimated Hours \"%s\" for row %d", str, - rowNum); + throw new OseeArgumentException("Invalid Estimated Hours \"%s\" for row %d", str, rowNum); } taskArt.setSoleAttributeValue(AtsAttributeTypes.EstimatedHours, hours); } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/Overview.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/Overview.java index 42e70677ad0..7eaaa9deb53 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/Overview.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/Overview.java @@ -15,11 +15,11 @@ import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.logging.Level; -import org.eclipse.osee.ats.artifact.ATSArtifact; +import org.eclipse.osee.ats.artifact.AbstractAtsArtifact; import org.eclipse.osee.ats.artifact.ATSLog; import org.eclipse.osee.ats.artifact.ATSLog.LogType; import org.eclipse.osee.ats.artifact.LogItem; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.artifact.TaskArtifact; import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact; import org.eclipse.osee.ats.internal.AtsPlugin; @@ -134,7 +134,7 @@ public class Overview { } } - public void addHeader(StateMachineArtifact sma, PreviewStyle... styles) throws OseeCoreException { + public void addHeader(AbstractWorkflowArtifact sma, PreviewStyle... styles) throws OseeCoreException { startBorderTable(100, false, ""); addTable(getLabelValue("Title", sma.getName())); this.html.append(AHTML.multiColumnTable(new String[] { @@ -156,7 +156,7 @@ public class Overview { addTable(getLabelValue("Cancellation Reason", item.getMsg())); } if (sma instanceof TaskArtifact) { - StateMachineArtifact parentArt = ((TaskArtifact) sma).getParentSMA(); + AbstractWorkflowArtifact parentArt = ((TaskArtifact) sma).getParentSMA(); if (parentArt != null) { this.html.append(AHTML.multiColumnTable(new String[] {AHTML.getLabelStr(labelFont, "Parent Workflow: ") + parentArt.getName()})); this.html.append(AHTML.multiColumnTable(new String[] {AHTML.getLabelStr(labelFont, "Parent State: ") + ((TaskArtifact) sma).getStateMgr().getCurrentStateName()})); @@ -167,7 +167,7 @@ public class Overview { endBorderTable(); } - public void addFooter(StateMachineArtifact sma, PreviewStyle... styles) { + public void addFooter(AbstractWorkflowArtifact sma, PreviewStyle... styles) { this.html.append(AHTML.newline()); if (PreviewStyle.contains(styles, PreviewStyle.HYPEROPEN)) { @@ -175,7 +175,7 @@ public class Overview { } } - public void addRelationsBlock(ATSArtifact artifact) { + public void addRelationsBlock(AbstractAtsArtifact artifact) { addRelationTable("Is Superceded By", CoreRelationTypes.Supercedes_Supercedes, artifact); addRelationTable("Supercedes", CoreRelationTypes.Supercedes_Superceded, artifact); addRelationTable("Supports", CoreRelationTypes.SupportingInfo_SupportedBy, artifact); @@ -183,8 +183,8 @@ public class Overview { } public void addNotes(Artifact artifact) { - if (artifact instanceof StateMachineArtifact) { - String notesHtml = ((StateMachineArtifact) artifact).getNotes().getTable(null); + if (artifact instanceof AbstractWorkflowArtifact) { + String notesHtml = ((AbstractWorkflowArtifact) artifact).getNotes().getTable(null); if (notesHtml.equals("")) { return; } @@ -275,14 +275,14 @@ public class Overview { XResultBrowserHyperCmd.getHyperCmdStr(XResultBrowserHyperCmd.openAction, art.getGuid()), name); } - public void addLog(StateMachineArtifact artifact) throws OseeCoreException { + public void addLog(AbstractWorkflowArtifact artifact) throws OseeCoreException { ATSLog artifactLog = artifact.getLog(); if (artifactLog != null && artifactLog.getLogItems().size() > 0) { addTable(artifact.getLog().getTable()); } } - public void startStateBorderTable(StateMachineArtifact sma, SMAState state) throws OseeCoreException { + public void startStateBorderTable(AbstractWorkflowArtifact sma, SMAState state) throws OseeCoreException { String caption = state.getName(); String assgn = Artifacts.toString("; ", state.getAssignees()); startStateBorderTable(sma.getStateMgr().getCurrentStateName().equals(state.getName()), caption, assgn); diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/PriviledgedUserManager.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/PriviledgedUserManager.java new file mode 100644 index 00000000000..1f2a1473c59 --- /dev/null +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/PriviledgedUserManager.java @@ -0,0 +1,92 @@ +/* + * Created on Sep 28, 2010 + * + * PLACE_YOUR_DISTRIBUTION_STATEMENT_RIGHT_HERE + */ +package org.eclipse.osee.ats.util; + +import java.util.HashSet; +import java.util.Set; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; +import org.eclipse.osee.ats.artifact.ActionableItemArtifact; +import org.eclipse.osee.ats.artifact.TeamDefinitionArtifact; +import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact; +import org.eclipse.osee.ats.internal.AtsPlugin; +import org.eclipse.osee.ats.workflow.item.AtsWorkDefinitions.RuleWorkItemId; +import org.eclipse.osee.framework.core.exception.OseeCoreException; +import org.eclipse.osee.framework.logging.OseeLevel; +import org.eclipse.osee.framework.logging.OseeLog; +import org.eclipse.osee.framework.skynet.core.User; +import org.eclipse.osee.framework.skynet.core.UserManager; +import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkPageDefinition; + +public class PriviledgedUserManager { + + public static Set<User> getPrivilegedUsers(AbstractWorkflowArtifact workflow) throws OseeCoreException { + Set<User> users = new HashSet<User>(); + if (workflow.getParentTeamWorkflow() != null) { + users.addAll(getPrivilegedUsers(workflow.getParentTeamWorkflow())); + } else { + for (ActionableItemArtifact aia : workflow.getParentTeamWorkflow().getActionableItemsDam().getActionableItems()) { + for (TeamDefinitionArtifact teamDef : aia.getImpactedTeamDefs()) { + addPriviledgedUsersUpTeamDefinitionTree(teamDef, users); + } + } + } + AbstractWorkflowArtifact parentSma = workflow.getParentSMA(); + if (parentSma != null) { + users.addAll(parentSma.getStateMgr().getAssignees()); + } + if (AtsUtil.isAtsAdmin()) { + users.add(UserManager.getUser()); + } + return users; + } + + public static Set<User> getPrivilegedUsers(TeamWorkFlowArtifact teamArt) { + Set<User> users = new HashSet<User>(); + try { + addPriviledgedUsersUpTeamDefinitionTree(teamArt.getTeamDefinition(), users); + + WorkPageDefinition workPageDefinition = teamArt.getWorkPageDefinition(); + + // Add user if allowing privileged edit to all users + if (!users.contains(UserManager.getUser()) && (workPageDefinition.hasWorkRule(RuleWorkItemId.atsAllowPriviledgedEditToAll.name()) || teamArt.getTeamDefinition().hasWorkRule( + RuleWorkItemId.atsAllowPriviledgedEditToAll.name()))) { + users.add(UserManager.getUser()); + } + + // Add user if user is team member and rule exists + if (!users.contains(UserManager.getUser()) && (workPageDefinition.hasWorkRule(RuleWorkItemId.atsAllowPriviledgedEditToTeamMember.name()) || teamArt.getTeamDefinition().hasWorkRule( + RuleWorkItemId.atsAllowPriviledgedEditToTeamMember.name()))) { + if (teamArt.getTeamDefinition().getMembers().contains(UserManager.getUser())) { + users.add(UserManager.getUser()); + } + } + + // Add user if team member is originator and rule exists + if (!users.contains(UserManager.getUser()) && (workPageDefinition.hasWorkRule(RuleWorkItemId.atsAllowPriviledgedEditToTeamMemberAndOriginator.name()) || teamArt.getTeamDefinition().hasWorkRule( + RuleWorkItemId.atsAllowPriviledgedEditToTeamMemberAndOriginator.name()))) { + if (teamArt.getOriginator().equals(UserManager.getUser()) && teamArt.getTeamDefinition().getMembers().contains( + UserManager.getUser())) { + users.add(UserManager.getUser()); + } + } + + } catch (Exception ex) { + OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex); + } + return users; + } + + protected static void addPriviledgedUsersUpTeamDefinitionTree(TeamDefinitionArtifact tda, Set<User> users) throws OseeCoreException { + users.addAll(tda.getLeads()); + users.addAll(tda.getPrivilegedMembers()); + + // Walk up tree to get other editors + if (tda.getParent() instanceof TeamDefinitionArtifact) { + addPriviledgedUsersUpTeamDefinitionTree((TeamDefinitionArtifact) tda.getParent(), users); + } + } + +} diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/PromptChangeUtil.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/PromptChangeUtil.java index fd9928043f0..49dcab17c27 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/PromptChangeUtil.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/PromptChangeUtil.java @@ -17,7 +17,7 @@ import java.util.HashSet; import java.util.Set; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.osee.ats.artifact.AtsAttributeTypes; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.artifact.TeamDefinitionArtifact; import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact; import org.eclipse.osee.ats.artifact.VersionArtifact; @@ -58,13 +58,13 @@ public final class PromptChangeUtil { // Utility class } - public static boolean promptChangeGroups(StateMachineArtifact sma, boolean persist) throws OseeCoreException { + public static boolean promptChangeGroups(AbstractWorkflowArtifact sma, boolean persist) throws OseeCoreException { return promptChangeGroups(Arrays.asList(sma), persist); } - public static boolean promptChangeGroups(final Collection<? extends StateMachineArtifact> smas, boolean persist) throws OseeCoreException { + public static boolean promptChangeGroups(final Collection<? extends AbstractWorkflowArtifact> smas, boolean persist) throws OseeCoreException { Set<Artifact> selected = new HashSet<Artifact>(); - for (StateMachineArtifact sma : smas) { + for (AbstractWorkflowArtifact sma : smas) { selected.addAll(sma.getRelatedArtifacts(CoreRelationTypes.Universal_Grouping__Group)); } Collection<Artifact> allGroups = UniversalGroup.getGroupsNotRoot(AtsUtil.getAtsBranch()); @@ -73,7 +73,7 @@ public final class PromptChangeUtil { dialog.setInitialSelections(selected.toArray()); if (dialog.open() == 0) { SkynetTransaction transaction = new SkynetTransaction(AtsUtil.getAtsBranch(), "Set Groups"); - for (StateMachineArtifact sma : smas) { + for (AbstractWorkflowArtifact sma : smas) { sma.setRelations(CoreRelationTypes.Universal_Grouping__Group, dialog.getSelection()); sma.persist(transaction); } @@ -109,12 +109,12 @@ public final class PromptChangeUtil { return false; } - public static boolean promptChangeAssignees(StateMachineArtifact sma, boolean persist) throws OseeCoreException { + public static boolean promptChangeAssignees(AbstractWorkflowArtifact sma, boolean persist) throws OseeCoreException { return promptChangeAssignees(Arrays.asList(sma), persist); } - public static boolean promptChangeAssignees(final Collection<? extends StateMachineArtifact> smas, boolean persist) throws OseeCoreException { - for (StateMachineArtifact sma : smas) { + public static boolean promptChangeAssignees(final Collection<? extends AbstractWorkflowArtifact> smas, boolean persist) throws OseeCoreException { + for (AbstractWorkflowArtifact sma : smas) { if (sma.isCompleted()) { AWorkbench.popup("ERROR", "Can't assign completed " + sma.getArtifactTypeName() + " (" + sma.getHumanReadableId() + ")"); @@ -146,7 +146,7 @@ public final class PromptChangeUtil { if (users.size() > 1) { users.remove(UserManager.getUser(SystemUser.UnAssigned)); } - for (StateMachineArtifact sma : smas) { + for (AbstractWorkflowArtifact sma : smas) { sma.getStateMgr().setAssignees(users); } if (persist) { @@ -155,16 +155,16 @@ public final class PromptChangeUtil { return true; } - public static boolean promptChangeOriginator(StateMachineArtifact sma) throws OseeCoreException { + public static boolean promptChangeOriginator(AbstractWorkflowArtifact sma) throws OseeCoreException { return promptChangeOriginator(Arrays.asList(sma)); } - public static boolean promptChangeOriginator(final Collection<? extends StateMachineArtifact> smas) throws OseeCoreException { + public static boolean promptChangeOriginator(final Collection<? extends AbstractWorkflowArtifact> smas) throws OseeCoreException { UserListDialog ld = new UserListDialog(Displays.getActiveShell(), "Select New Originator", Active.Active); int result = ld.open(); if (result == 0) { User selectedUser = ld.getSelection(); - for (StateMachineArtifact sma : smas) { + for (AbstractWorkflowArtifact sma : smas) { sma.setOriginator(selectedUser); } return true; @@ -172,7 +172,7 @@ public final class PromptChangeUtil { return false; } - public static boolean promptChangeVersion(StateMachineArtifact sma, VersionReleaseType versionReleaseType, boolean persist) throws OseeCoreException { + public static boolean promptChangeVersion(AbstractWorkflowArtifact sma, VersionReleaseType versionReleaseType, boolean persist) throws OseeCoreException { if (AtsUtil.isAtsAdmin() && !sma.isTeamWorkflow()) { AWorkbench.popup("ERROR ", "Cannot set version for: \n\n" + sma.getName()); return false; @@ -250,7 +250,7 @@ public final class PromptChangeUtil { return true; } - public static boolean promptChangeType(StateMachineArtifact sma, boolean persist) { + public static boolean promptChangeType(AbstractWorkflowArtifact sma, boolean persist) { if (sma.isTeamWorkflow()) { return promptChangeType(Arrays.asList((TeamWorkFlowArtifact) sma), persist); } @@ -290,7 +290,7 @@ public final class PromptChangeUtil { } } - public static boolean promptChangePoints(StateMachineArtifact sma, boolean persist) { + public static boolean promptChangePoints(AbstractWorkflowArtifact sma, boolean persist) { if (sma.isTeamWorkflow()) { return promptChangePoints(Arrays.asList((TeamWorkFlowArtifact) sma), persist); } @@ -327,7 +327,7 @@ public final class PromptChangeUtil { } } - public static boolean promptChangePriority(StateMachineArtifact sma, boolean persist) { + public static boolean promptChangePriority(AbstractWorkflowArtifact sma, boolean persist) { if (sma.isTeamWorkflow()) { return promptChangePriority(Arrays.asList((TeamWorkFlowArtifact) sma), persist); } @@ -366,7 +366,7 @@ public final class PromptChangeUtil { } } - public static boolean promptChangePercentAttribute(StateMachineArtifact sma, IAttributeType attributeType, boolean persist) { + public static boolean promptChangePercentAttribute(AbstractWorkflowArtifact sma, IAttributeType attributeType, boolean persist) { try { return ArtifactPromptChange.promptChangeAttribute(attributeType, Arrays.asList(new Artifact[] {sma}), persist); } catch (Exception ex) { @@ -375,7 +375,7 @@ public final class PromptChangeUtil { return false; } - public static boolean promptChangeAttribute(final Collection<? extends StateMachineArtifact> smas, IAttributeType attributeType, boolean persist, boolean multiLine) { + public static boolean promptChangeAttribute(final Collection<? extends AbstractWorkflowArtifact> smas, IAttributeType attributeType, boolean persist, boolean multiLine) { return ArtifactPromptChange.promptChangeAttribute(attributeType, smas, persist, multiLine); } @@ -389,7 +389,7 @@ public final class PromptChangeUtil { return false; } - public static boolean promptChangeAttribute(StateMachineArtifact sma, IAttributeType attributeType, final boolean persist, boolean multiLine) { + public static boolean promptChangeAttribute(AbstractWorkflowArtifact sma, IAttributeType attributeType, final boolean persist, boolean multiLine) { try { return ArtifactPromptChange.promptChangeAttribute(attributeType, Arrays.asList(sma), persist, multiLine); } catch (Exception ex) { @@ -398,7 +398,7 @@ public final class PromptChangeUtil { return false; } - public static boolean promptChangeDate(StateMachineArtifact sma, IAttributeType attributeType, boolean persist) { + public static boolean promptChangeDate(AbstractWorkflowArtifact sma, IAttributeType attributeType, boolean persist) { try { return ArtifactPromptChange.promptChangeAttribute(attributeType, java.util.Collections.singleton(sma), persist); } catch (Exception ex) { @@ -408,7 +408,7 @@ public final class PromptChangeUtil { return false; } - public static boolean promptChangeReleaseDate(StateMachineArtifact sma) { + public static boolean promptChangeReleaseDate(AbstractWorkflowArtifact sma) { if (sma.isReleased() || sma.isVersionLocked()) { AWorkbench.popup("ERROR", "Team Workflow\n \"" + sma.getName() + "\"\n version is locked or already released."); return false; @@ -450,7 +450,7 @@ public final class PromptChangeUtil { return false; } - public static boolean promptChangeEstimatedReleaseDate(StateMachineArtifact sma) { + public static boolean promptChangeEstimatedReleaseDate(AbstractWorkflowArtifact sma) { try { VersionArtifact verArt = sma.getTargetedForVersion(); if (verArt != null) { diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/ReadOnlyHyperlinkListener.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/ReadOnlyHyperlinkListener.java index 458cec88b62..3aa6091aa8b 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/ReadOnlyHyperlinkListener.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/ReadOnlyHyperlinkListener.java @@ -10,7 +10,7 @@ *******************************************************************************/ package org.eclipse.osee.ats.util; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.framework.ui.plugin.util.AWorkbench; import org.eclipse.ui.forms.events.HyperlinkEvent; import org.eclipse.ui.forms.events.IHyperlinkListener; @@ -20,9 +20,9 @@ import org.eclipse.ui.forms.events.IHyperlinkListener; */ public class ReadOnlyHyperlinkListener implements IHyperlinkListener { - private final StateMachineArtifact sma; + private final AbstractWorkflowArtifact sma; - public ReadOnlyHyperlinkListener(StateMachineArtifact sma) { + public ReadOnlyHyperlinkListener(AbstractWorkflowArtifact sma) { this.sma = sma; } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/SMAMetrics.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/SMAMetrics.java index ff6b3f86a08..aa98f56c344 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/SMAMetrics.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/SMAMetrics.java @@ -19,8 +19,8 @@ import java.util.List; import java.util.Set; import org.eclipse.osee.ats.artifact.ActionArtifact; import org.eclipse.osee.ats.artifact.GoalArtifact; -import org.eclipse.osee.ats.artifact.ReviewSMArtifact; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractReviewArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.artifact.TaskArtifact; import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact; import org.eclipse.osee.ats.artifact.VersionArtifact; @@ -49,8 +49,8 @@ public class SMAMetrics { Set<TeamWorkFlowArtifact> teamArts = new HashSet<TeamWorkFlowArtifact>(); Set<ActionArtifact> actionArts = new HashSet<ActionArtifact>(); Set<TaskArtifact> taskArts = new HashSet<TaskArtifact>(); - Set<ReviewSMArtifact> reviewArts = new HashSet<ReviewSMArtifact>(); - Set<StateMachineArtifact> smas = new HashSet<StateMachineArtifact>(); + Set<AbstractReviewArtifact> reviewArts = new HashSet<AbstractReviewArtifact>(); + Set<AbstractWorkflowArtifact> smas = new HashSet<AbstractWorkflowArtifact>(); Set<User> assignees = new HashSet<User>(); Set<User> assigneesAssignedOrCompleted = new HashSet<User>(); @@ -84,19 +84,19 @@ public class SMAMetrics { teamArts.add((TeamWorkFlowArtifact) art); } else if (art instanceof TaskArtifact) { taskArts.add((TaskArtifact) art); - } else if (art instanceof ReviewSMArtifact) { - reviewArts.add((ReviewSMArtifact) art); + } else if (art instanceof AbstractReviewArtifact) { + reviewArts.add((AbstractReviewArtifact) art); } - if (art instanceof StateMachineArtifact) { - smas.add((StateMachineArtifact) art); - Collection<User> users = ((StateMachineArtifact) art).getStateMgr().getAssignees(); + if (art instanceof AbstractWorkflowArtifact) { + smas.add((AbstractWorkflowArtifact) art); + Collection<User> users = ((AbstractWorkflowArtifact) art).getStateMgr().getAssignees(); assignees.addAll(users); assigneesAssignedOrCompleted.addAll(users); for (User user : users) { userToAssignedSmas.put(user, art); } - if (((StateMachineArtifact) art).isCompleted()) { - Collection<User> implementers = ((StateMachineArtifact) art).getImplementers(); + if (((AbstractWorkflowArtifact) art).isCompleted()) { + Collection<User> implementers = ((AbstractWorkflowArtifact) art).getImplementers(); assigneesAssignedOrCompleted.addAll(implementers); for (User user : implementers) { userToCompletedSmas.put(user, art); @@ -110,7 +110,7 @@ public class SMAMetrics { manDaysNeeded = 0; cummulativeWorkflowPercentComplete = 0; manDaysNeeded = 0; - for (StateMachineArtifact team : smas) { + for (AbstractWorkflowArtifact team : smas) { hrsRemainFromEstimates += team.getWorldViewRemainHours(); estHours += team.getWorldViewEstimatedHours(); hrsSpent += team.getWorldViewHoursSpentTotal(); @@ -156,12 +156,12 @@ public class SMAMetrics { return userToCompletedSmas; } - public <A extends StateMachineArtifact> Collection<A> getUserToCompletedSmas(User user) { + public <A extends AbstractWorkflowArtifact> Collection<A> getUserToCompletedSmas(User user) { return getUserToCompletedSmas(user, null); } @SuppressWarnings("unchecked") - public <A extends StateMachineArtifact> Collection<A> getUserToCompletedSmas(User user, Class<A> clazz) { + public <A extends AbstractWorkflowArtifact> Collection<A> getUserToCompletedSmas(User user, Class<A> clazz) { if (!userToCompletedSmas.containsKey(user)) { return Collections.emptyList(); } @@ -175,7 +175,7 @@ public class SMAMetrics { } @SuppressWarnings("unchecked") - public <A extends StateMachineArtifact> Collection<A> getUserToAssignedSmas(User user, Class<A> clazz) { + public <A extends AbstractWorkflowArtifact> Collection<A> getUserToAssignedSmas(User user, Class<A> clazz) { if (!userToAssignedSmas.containsKey(user)) { return Collections.emptyList(); } @@ -198,9 +198,9 @@ public class SMAMetrics { return teams; } - public Collection<StateMachineArtifact> getCompletedWorkflows() throws OseeCoreException { - Set<StateMachineArtifact> completed = new HashSet<StateMachineArtifact>(); - for (StateMachineArtifact sma : smas) { + public Collection<AbstractWorkflowArtifact> getCompletedWorkflows() throws OseeCoreException { + Set<AbstractWorkflowArtifact> completed = new HashSet<AbstractWorkflowArtifact>(); + for (AbstractWorkflowArtifact sma : smas) { if (sma.isCancelledOrCompleted()) { completed.add(sma); } @@ -367,7 +367,7 @@ public class SMAMetrics { public int getNumNotEstimated() throws OseeCoreException { int count = 0; - for (StateMachineArtifact sma : smas) { + for (AbstractWorkflowArtifact sma : smas) { if (sma.getWorldViewEstimatedHours() == 0) { count++; } @@ -469,7 +469,7 @@ public class SMAMetrics { /** * @return the reviewArts */ - public Set<ReviewSMArtifact> getReviewArts() { + public Set<AbstractReviewArtifact> getReviewArts() { return reviewArts; } @@ -482,7 +482,7 @@ public class SMAMetrics { return userToAssignedSmas; } - public <A extends StateMachineArtifact> Collection<A> getUserToAssignedSmas(User user) { + public <A extends AbstractWorkflowArtifact> Collection<A> getUserToAssignedSmas(User user) { return getUserToAssignedSmas(user, null); } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/SMAUtil.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/SMAUtil.java index 619d7c1995b..c58ecb7c532 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/SMAUtil.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/SMAUtil.java @@ -15,7 +15,7 @@ import java.util.Collection; import java.util.Date; import java.util.List; import org.eclipse.osee.ats.artifact.LogItem; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.artifact.TeamDefinitionArtifact; import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact; import org.eclipse.osee.ats.artifact.VersionArtifact; @@ -32,9 +32,9 @@ import org.eclipse.osee.framework.ui.skynet.util.ChangeType; */ public class SMAUtil { - public static Collection<StateMachineArtifact> getCompletedCancelled(Collection<StateMachineArtifact> smas) throws OseeCoreException { - List<StateMachineArtifact> artifactsToReturn = new ArrayList<StateMachineArtifact>(smas.size()); - for (StateMachineArtifact sma : smas) { + public static Collection<AbstractWorkflowArtifact> getCompletedCancelled(Collection<AbstractWorkflowArtifact> smas) throws OseeCoreException { + List<AbstractWorkflowArtifact> artifactsToReturn = new ArrayList<AbstractWorkflowArtifact>(smas.size()); + for (AbstractWorkflowArtifact sma : smas) { if (sma.isCancelledOrCompleted()) { artifactsToReturn.add(sma); } @@ -42,9 +42,9 @@ public class SMAUtil { return artifactsToReturn; } - public static Collection<StateMachineArtifact> getInWork(Collection<StateMachineArtifact> smas) throws OseeCoreException { - List<StateMachineArtifact> artifactsToReturn = new ArrayList<StateMachineArtifact>(smas.size()); - for (StateMachineArtifact sma : smas) { + public static Collection<AbstractWorkflowArtifact> getInWork(Collection<AbstractWorkflowArtifact> smas) throws OseeCoreException { + List<AbstractWorkflowArtifact> artifactsToReturn = new ArrayList<AbstractWorkflowArtifact>(smas.size()); + for (AbstractWorkflowArtifact sma : smas) { if (!sma.isCancelledOrCompleted()) { artifactsToReturn.add(sma); } @@ -52,9 +52,9 @@ public class SMAUtil { return artifactsToReturn; } - public static Collection<StateMachineArtifact> filterOutState(Collection<StateMachineArtifact> smas, Collection<String> stateNames) throws OseeCoreException { - List<StateMachineArtifact> artifactsToReturn = new ArrayList<StateMachineArtifact>(smas.size()); - for (StateMachineArtifact sma : smas) { + public static Collection<AbstractWorkflowArtifact> filterOutState(Collection<AbstractWorkflowArtifact> smas, Collection<String> stateNames) throws OseeCoreException { + List<AbstractWorkflowArtifact> artifactsToReturn = new ArrayList<AbstractWorkflowArtifact>(smas.size()); + for (AbstractWorkflowArtifact sma : smas) { if (!stateNames.contains(sma.getStateMgr().getCurrentStateName())) { artifactsToReturn.add(sma); } @@ -62,9 +62,9 @@ public class SMAUtil { return artifactsToReturn; } - public static Collection<StateMachineArtifact> filterOutTypes(Collection<StateMachineArtifact> smas, Collection<Class<?>> classes) { - List<StateMachineArtifact> artifactsToReturn = new ArrayList<StateMachineArtifact>(smas.size()); - for (StateMachineArtifact sma : smas) { + public static Collection<AbstractWorkflowArtifact> filterOutTypes(Collection<AbstractWorkflowArtifact> smas, Collection<Class<?>> classes) { + List<AbstractWorkflowArtifact> artifactsToReturn = new ArrayList<AbstractWorkflowArtifact>(smas.size()); + for (AbstractWorkflowArtifact sma : smas) { boolean found = false; for (Class<?> clazz : classes) { if (clazz.isInstance(sma)) { @@ -78,9 +78,9 @@ public class SMAUtil { return artifactsToReturn; } - public static Collection<StateMachineArtifact> getOpenAtDate(Date date, Collection<StateMachineArtifact> artifacts) throws OseeCoreException { - List<StateMachineArtifact> smas = new ArrayList<StateMachineArtifact>(); - for (StateMachineArtifact sma : artifacts) { + public static Collection<AbstractWorkflowArtifact> getOpenAtDate(Date date, Collection<AbstractWorkflowArtifact> artifacts) throws OseeCoreException { + List<AbstractWorkflowArtifact> smas = new ArrayList<AbstractWorkflowArtifact>(); + for (AbstractWorkflowArtifact sma : artifacts) { Date createDate = sma.getWorldViewCreatedDate(); Date completedCancelDate = null; if (sma.isCancelledOrCompleted()) { @@ -97,9 +97,9 @@ public class SMAUtil { return smas; } - public static Collection<StateMachineArtifact> getCompletedCancelledBetweenDate(Date startDate, Date endDate, Collection<StateMachineArtifact> artifacts) throws OseeCoreException { - List<StateMachineArtifact> smas = new ArrayList<StateMachineArtifact>(); - for (StateMachineArtifact sma : artifacts) { + public static Collection<AbstractWorkflowArtifact> getCompletedCancelledBetweenDate(Date startDate, Date endDate, Collection<AbstractWorkflowArtifact> artifacts) throws OseeCoreException { + List<AbstractWorkflowArtifact> smas = new ArrayList<AbstractWorkflowArtifact>(); + for (AbstractWorkflowArtifact sma : artifacts) { Date completedCancelDate = null; if (sma.isCancelledOrCompleted()) { if (sma.isCancelled()) { @@ -118,17 +118,17 @@ public class SMAUtil { return smas; } - public static Double getHoursSpent(Collection<StateMachineArtifact> artifacts) throws OseeCoreException { + public static Double getHoursSpent(Collection<AbstractWorkflowArtifact> artifacts) throws OseeCoreException { Double hoursSpent = 0.0; - for (StateMachineArtifact sma : artifacts) { + for (AbstractWorkflowArtifact sma : artifacts) { hoursSpent += sma.getWorldViewHoursSpentTotal(); } return hoursSpent; } - public static Collection<StateMachineArtifact> getStateAtDate(Date date, Collection<String> states, Collection<StateMachineArtifact> artifacts) throws OseeCoreException { - List<StateMachineArtifact> smas = new ArrayList<StateMachineArtifact>(); - for (StateMachineArtifact sma : artifacts) { + public static Collection<AbstractWorkflowArtifact> getStateAtDate(Date date, Collection<String> states, Collection<AbstractWorkflowArtifact> artifacts) throws OseeCoreException { + List<AbstractWorkflowArtifact> smas = new ArrayList<AbstractWorkflowArtifact>(); + for (AbstractWorkflowArtifact sma : artifacts) { Date createDate = sma.getWorldViewCreatedDate(); if (createDate.after(date)) { continue; @@ -150,9 +150,9 @@ public class SMAUtil { /** * Returns sma if change type, or parent team workflow's change type is in specified set */ - public static Collection<StateMachineArtifact> getChangeType(Collection<ChangeType> changeTypes, Collection<StateMachineArtifact> artifacts) throws OseeCoreException { - List<StateMachineArtifact> smas = new ArrayList<StateMachineArtifact>(); - for (StateMachineArtifact sma : artifacts) { + public static Collection<AbstractWorkflowArtifact> getChangeType(Collection<ChangeType> changeTypes, Collection<AbstractWorkflowArtifact> artifacts) throws OseeCoreException { + List<AbstractWorkflowArtifact> smas = new ArrayList<AbstractWorkflowArtifact>(); + for (AbstractWorkflowArtifact sma : artifacts) { TeamWorkFlowArtifact teamArt = sma.getParentTeamWorkflow(); if (changeTypes.contains(teamArt.getChangeType())) { smas.add(sma); @@ -165,9 +165,9 @@ public class SMAUtil { /** * Returns sma if priority type, or parent team workflow's priority type is in specified set */ - public static Collection<StateMachineArtifact> getPriorityType(Collection<PriorityType> priorityTypes, Collection<StateMachineArtifact> artifacts) throws OseeCoreException { - List<StateMachineArtifact> smas = new ArrayList<StateMachineArtifact>(); - for (StateMachineArtifact sma : artifacts) { + public static Collection<AbstractWorkflowArtifact> getPriorityType(Collection<PriorityType> priorityTypes, Collection<AbstractWorkflowArtifact> artifacts) throws OseeCoreException { + List<AbstractWorkflowArtifact> smas = new ArrayList<AbstractWorkflowArtifact>(); + for (AbstractWorkflowArtifact sma : artifacts) { TeamWorkFlowArtifact teamArt = sma.getParentTeamWorkflow(); if (priorityTypes.contains(teamArt.getPriority())) { smas.add(sma); @@ -177,9 +177,9 @@ public class SMAUtil { } - public static Collection<StateMachineArtifact> getTeamDefinitionWorkflows(Collection<? extends Artifact> artifacts, Collection<TeamDefinitionArtifact> teamDefs) throws OseeCoreException { - List<StateMachineArtifact> returnSmas = new ArrayList<StateMachineArtifact>(); - for (StateMachineArtifact sma : getSMAs(artifacts)) { + public static Collection<AbstractWorkflowArtifact> getTeamDefinitionWorkflows(Collection<? extends Artifact> artifacts, Collection<TeamDefinitionArtifact> teamDefs) throws OseeCoreException { + List<AbstractWorkflowArtifact> returnSmas = new ArrayList<AbstractWorkflowArtifact>(); + for (AbstractWorkflowArtifact sma : getSMAs(artifacts)) { if (sma.getParentTeamWorkflow() == null) { continue; } @@ -190,9 +190,9 @@ public class SMAUtil { return returnSmas; } - public static Collection<StateMachineArtifact> getVersionWorkflows(Collection<? extends Artifact> artifacts, Collection<VersionArtifact> versionArts) throws OseeCoreException { - List<StateMachineArtifact> returnSmas = new ArrayList<StateMachineArtifact>(); - for (StateMachineArtifact sma : getSMAs(artifacts)) { + public static Collection<AbstractWorkflowArtifact> getVersionWorkflows(Collection<? extends Artifact> artifacts, Collection<VersionArtifact> versionArts) throws OseeCoreException { + List<AbstractWorkflowArtifact> returnSmas = new ArrayList<AbstractWorkflowArtifact>(); + for (AbstractWorkflowArtifact sma : getSMAs(artifacts)) { if (sma.getParentTeamWorkflow() == null) { continue; } @@ -206,8 +206,8 @@ public class SMAUtil { return returnSmas; } - public static Collection<StateMachineArtifact> getSMAs(Collection<? extends Artifact> artifacts) { - return Collections.castMatching(StateMachineArtifact.class, artifacts); + public static Collection<AbstractWorkflowArtifact> getSMAs(Collection<? extends Artifact> artifacts) { + return Collections.castMatching(AbstractWorkflowArtifact.class, artifacts); } } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/StateManager.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/StateManager.java index dae9ec2f783..07e4fd33d90 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/StateManager.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/StateManager.java @@ -11,16 +11,16 @@ package org.eclipse.osee.ats.util; +import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.Date; import java.util.HashSet; import java.util.Set; import org.eclipse.osee.ats.artifact.ATSLog.LogType; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.artifact.AtsAttributeTypes; import org.eclipse.osee.ats.artifact.LogItem; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; -import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact.DefaultTeamState; import org.eclipse.osee.ats.util.widgets.SMAState; import org.eclipse.osee.ats.util.widgets.XCurrentStateDam; import org.eclipse.osee.ats.util.widgets.XStateDam; @@ -41,9 +41,9 @@ public class StateManager { private final XCurrentStateDam currentStateDam; private final XStateDam stateDam; - private final StateMachineArtifact sma; + private final AbstractWorkflowArtifact sma; - public StateManager(StateMachineArtifact sma) throws OseeCoreException { + public StateManager(AbstractWorkflowArtifact sma) throws OseeCoreException { super(); this.sma = sma; currentStateDam = new XCurrentStateDam(sma); @@ -124,8 +124,12 @@ public class StateManager { return getPercentComplete(getCurrentStateName()); } - public String getCurrentStateName() throws OseeCoreException { - return currentStateDam.getState().getName(); + public String getCurrentStateName() { + try { + return currentStateDam.getState().getName(); + } catch (OseeCoreException ex) { + return ex.getLocalizedMessage(); + } } public String getAssigneesStr() throws OseeCoreException { @@ -146,10 +150,10 @@ public class StateManager { public Collection<User> getAssignees(String stateName) throws OseeCoreException { SMAState state = getSMAState(stateName, false); - if (state != null) { - return state.getAssignees(); - } else { + if (state == null) { return Collections.emptyList(); + } else { + return state.getAssignees(); } } @@ -251,13 +255,13 @@ public class StateManager { // Set XCurrentState; If been to this state, copy state info from prev state; else create new SMAState previousState = stateDam.getState(toStateName, false); - if (previousState != null) { + if (previousState == null) { + currentStateDam.setState(new SMAState(toStateName, toAssignees)); + } else { if (toAssignees.size() > 0) { previousState.setAssignees(toAssignees); } currentStateDam.setState(previousState); - } else { - currentStateDam.setState(new SMAState(toStateName, toAssignees)); } } @@ -351,4 +355,16 @@ public class StateManager { } + public static Collection<User> getImplementersByState(AbstractWorkflowArtifact workflow, String stateName) throws OseeCoreException { + if (workflow.isCancelled()) { + return Arrays.asList(workflow.getLog().getCancelledLogItem().getUser()); + } + Collection<User> users = new HashSet<User>(workflow.getStateMgr().getAssignees(stateName)); + LogItem item = workflow.getLog().getCompletedLogItem(); + if (item != null) { + users.add(item.getUser()); + } + return users; + } + } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/SubscribeManager.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/SubscribeManager.java index 2cb99ed6233..5fa23c5cfc2 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/SubscribeManager.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/SubscribeManager.java @@ -10,16 +10,19 @@ *******************************************************************************/ package org.eclipse.osee.ats.util; +import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; +import java.util.List; import org.eclipse.jface.dialogs.MessageDialog; -import org.eclipse.osee.ats.artifact.ISubscribableArtifact; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.logging.OseeLevel; import org.eclipse.osee.framework.logging.OseeLog; +import org.eclipse.osee.framework.skynet.core.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.transaction.SkynetTransaction; import org.eclipse.ui.PlatformUI; @@ -28,13 +31,13 @@ import org.eclipse.ui.PlatformUI; */ public class SubscribeManager { - private final Collection<StateMachineArtifact> smas; + private final Collection<AbstractWorkflowArtifact> smas; - public SubscribeManager(StateMachineArtifact sma) { + public SubscribeManager(AbstractWorkflowArtifact sma) { this(Arrays.asList(sma)); } - public SubscribeManager(Collection<StateMachineArtifact> smas) { + public SubscribeManager(Collection<AbstractWorkflowArtifact> smas) { super(); this.smas = smas; } @@ -45,7 +48,7 @@ public class SubscribeManager { public void toggleSubscribe(boolean prompt) { try { - if (((ISubscribableArtifact) smas.iterator().next()).amISubscribed()) { + if (amISubscribed(smas.iterator().next())) { boolean result = true; if (prompt) { result = @@ -56,8 +59,8 @@ public class SubscribeManager { } if (result) { SkynetTransaction transaction = new SkynetTransaction(AtsUtil.getAtsBranch(), "Toggle Subscribed"); - for (StateMachineArtifact sma : smas) { - ((ISubscribableArtifact) sma).removeSubscribed(UserManager.getUser(), transaction); + for (AbstractWorkflowArtifact sma : smas) { + removeSubscribed(sma, UserManager.getUser(), transaction); } transaction.execute(); } @@ -71,8 +74,8 @@ public class SubscribeManager { } if (result) { SkynetTransaction transaction = new SkynetTransaction(AtsUtil.getAtsBranch(), "Toggle Subscribed"); - for (StateMachineArtifact sma : smas) { - ((ISubscribableArtifact) sma).addSubscribed(UserManager.getUser(), transaction); + for (AbstractWorkflowArtifact sma : smas) { + addSubscribed(sma, UserManager.getUser(), transaction); } transaction.execute(); } @@ -82,4 +85,37 @@ public class SubscribeManager { OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex); } } + + public static void addSubscribed(AbstractWorkflowArtifact workflow, User user, SkynetTransaction transaction) throws OseeCoreException { + if (!workflow.getRelatedArtifacts(AtsRelationTypes.SubscribedUser_User).contains(user)) { + workflow.addRelation(AtsRelationTypes.SubscribedUser_User, user); + workflow.persist(transaction); + } + } + + public static void removeSubscribed(AbstractWorkflowArtifact workflow, User user, SkynetTransaction transaction) throws OseeCoreException { + workflow.deleteRelation(AtsRelationTypes.SubscribedUser_User, user); + workflow.persist(transaction); + } + + public static boolean isSubscribed(AbstractWorkflowArtifact workflow, User user) throws OseeCoreException { + return workflow.getRelatedArtifacts(AtsRelationTypes.SubscribedUser_User).contains(user); + } + + public static List<User> getSubscribed(AbstractWorkflowArtifact workflow) throws OseeCoreException { + ArrayList<User> arts = new ArrayList<User>(); + for (Artifact art : workflow.getRelatedArtifacts(AtsRelationTypes.SubscribedUser_User)) { + arts.add((User) art); + } + return arts; + } + + public static boolean amISubscribed(AbstractWorkflowArtifact workflow) { + try { + return isSubscribed(workflow, UserManager.getUser()); + } catch (OseeCoreException ex) { + return false; + } + } + } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/TransitionOption.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/TransitionOption.java new file mode 100644 index 00000000000..64aebe9150a --- /dev/null +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/TransitionOption.java @@ -0,0 +1,10 @@ +package org.eclipse.osee.ats.util;
+
+public enum TransitionOption {
+ None,
+ Persist,
+ // Override check whether workflow allows transition to state
+ OverrideTransitionValidityCheck,
+ // Allows transition to occur with UnAssigned, OseeSystem or Guest
+ OverrideAssigneeCheck
+};
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/XCancellationReasonTextWidget.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/XCancellationReasonTextWidget.java index 02ab794967a..d6420d2c250 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/XCancellationReasonTextWidget.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/XCancellationReasonTextWidget.java @@ -10,7 +10,7 @@ *******************************************************************************/ package org.eclipse.osee.ats.util; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.jdk.core.util.Strings; import org.eclipse.osee.framework.skynet.core.artifact.Artifact; @@ -24,9 +24,9 @@ import org.eclipse.osee.framework.ui.swt.Widgets; */ public class XCancellationReasonTextWidget extends XText implements IArtifactWidget { - private StateMachineArtifact sma; + private AbstractWorkflowArtifact sma; - public XCancellationReasonTextWidget(StateMachineArtifact sma) throws OseeCoreException { + public XCancellationReasonTextWidget(AbstractWorkflowArtifact sma) throws OseeCoreException { super("Cancallation Reason"); setArtifact(sma); } @@ -56,14 +56,14 @@ public class XCancellationReasonTextWidget extends XText implements IArtifactWid @Override public void setArtifact(Artifact artifact) throws OseeCoreException { - if (artifact instanceof StateMachineArtifact) { - this.sma = (StateMachineArtifact) artifact; + if (artifact instanceof AbstractWorkflowArtifact) { + this.sma = (AbstractWorkflowArtifact) artifact; setText(sma.getLog().getCancellationReason()); } } @Override - public StateMachineArtifact getArtifact() { + public AbstractWorkflowArtifact getArtifact() { return sma; } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/ReviewManager.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/ReviewManager.java index b7bb43962fe..8221c88dd98 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/ReviewManager.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/ReviewManager.java @@ -16,17 +16,17 @@ import java.util.HashSet; import java.util.Set; import java.util.logging.Level; import org.eclipse.osee.ats.artifact.ATSLog.LogType; +import org.eclipse.osee.ats.artifact.AbstractReviewArtifact; +import org.eclipse.osee.ats.artifact.AbstractReviewArtifact.ReviewBlockType; import org.eclipse.osee.ats.artifact.AtsAttributeTypes; import org.eclipse.osee.ats.artifact.DecisionReviewArtifact; import org.eclipse.osee.ats.artifact.PeerToPeerReviewArtifact; -import org.eclipse.osee.ats.artifact.ReviewSMArtifact; -import org.eclipse.osee.ats.artifact.ReviewSMArtifact.ReviewBlockType; -import org.eclipse.osee.ats.artifact.StateMachineArtifact.TransitionOption; import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.ats.util.AtsArtifactTypes; import org.eclipse.osee.ats.util.AtsRelationTypes; import org.eclipse.osee.ats.util.AtsUtil; +import org.eclipse.osee.ats.util.TransitionOption; import org.eclipse.osee.ats.workflow.item.AtsWorkDefinitions; import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.jdk.core.util.Strings; @@ -62,7 +62,7 @@ public class ReviewManager { } // If validate review already created for this state, return if (!force && getReviewsFromCurrentState(teamArt).size() > 0) { - for (ReviewSMArtifact rev : getReviewsFromCurrentState(teamArt)) { + for (AbstractReviewArtifact rev : getReviewsFromCurrentState(teamArt)) { if (rev.getName().equals(VALIDATE_REVIEW_TITLE)) { return null; } @@ -144,7 +144,7 @@ public class ReviewManager { */ public static double getRemainHours(TeamWorkFlowArtifact teamArt) throws OseeCoreException { double hours = 0; - for (ReviewSMArtifact reviewArt : getReviews(teamArt)) { + for (AbstractReviewArtifact reviewArt : getReviews(teamArt)) { hours += reviewArt.getRemainHoursFromArtifact(); } return hours; @@ -159,7 +159,7 @@ public class ReviewManager { */ public static double getEstimatedHours(TeamWorkFlowArtifact teamArt, String relatedToStateName) throws OseeCoreException { double hours = 0; - for (ReviewSMArtifact revArt : getReviews(teamArt, relatedToStateName)) { + for (AbstractReviewArtifact revArt : getReviews(teamArt, relatedToStateName)) { hours += revArt.getEstimatedHoursTotal(); } return hours; @@ -172,7 +172,7 @@ public class ReviewManager { */ public static double getEstimatedHours(TeamWorkFlowArtifact teamArt) throws OseeCoreException { double hours = 0; - for (ReviewSMArtifact revArt : getReviews(teamArt)) { + for (AbstractReviewArtifact revArt : getReviews(teamArt)) { hours += revArt.getEstimatedHoursTotal(); } return hours; @@ -199,17 +199,17 @@ public class ReviewManager { } - public static Collection<ReviewSMArtifact> getReviews(TeamWorkFlowArtifact teamArt) throws OseeCoreException { - return teamArt.getRelatedArtifacts(AtsRelationTypes.TeamWorkflowToReview_Review, ReviewSMArtifact.class); + public static Collection<AbstractReviewArtifact> getReviews(TeamWorkFlowArtifact teamArt) throws OseeCoreException { + return teamArt.getRelatedArtifacts(AtsRelationTypes.TeamWorkflowToReview_Review, AbstractReviewArtifact.class); } - public static Collection<ReviewSMArtifact> getReviewsFromCurrentState(TeamWorkFlowArtifact teamArt) throws OseeCoreException { + public static Collection<AbstractReviewArtifact> getReviewsFromCurrentState(TeamWorkFlowArtifact teamArt) throws OseeCoreException { return getReviews(teamArt, teamArt.getStateMgr().getCurrentStateName()); } - public static Collection<ReviewSMArtifact> getReviews(TeamWorkFlowArtifact teamArt, String stateName) throws OseeCoreException { - Set<ReviewSMArtifact> arts = new HashSet<ReviewSMArtifact>(); - for (ReviewSMArtifact revArt : getReviews(teamArt)) { + public static Collection<AbstractReviewArtifact> getReviews(TeamWorkFlowArtifact teamArt, String stateName) throws OseeCoreException { + Set<AbstractReviewArtifact> arts = new HashSet<AbstractReviewArtifact>(); + for (AbstractReviewArtifact revArt : getReviews(teamArt)) { if (revArt.getSoleAttributeValue(AtsAttributeTypes.RelatedToState, "").equals(stateName)) { arts.add(revArt); } @@ -232,7 +232,7 @@ public class ReviewManager { public static Result areReviewsComplete(TeamWorkFlowArtifact teamArt, boolean popup) { try { - for (ReviewSMArtifact reviewArt : getReviews(teamArt)) { + for (AbstractReviewArtifact reviewArt : getReviews(teamArt)) { if (!reviewArt.isCompleted() && reviewArt.isCancelled()) { return new Result("Not Complete"); } @@ -251,7 +251,7 @@ public class ReviewManager { */ public static double getHoursSpent(TeamWorkFlowArtifact teamArt, String relatedToStateName) throws OseeCoreException { double spent = 0; - for (ReviewSMArtifact reviewArt : getReviews(teamArt, relatedToStateName)) { + for (AbstractReviewArtifact reviewArt : getReviews(teamArt, relatedToStateName)) { spent += reviewArt.getHoursSpentSMATotal(); } return spent; @@ -265,8 +265,8 @@ public class ReviewManager { */ public static int getPercentComplete(TeamWorkFlowArtifact teamArt, String relatedToStateName) throws OseeCoreException { int spent = 0; - Collection<ReviewSMArtifact> reviewArts = getReviews(teamArt, relatedToStateName); - for (ReviewSMArtifact reviewArt : reviewArts) { + Collection<AbstractReviewArtifact> reviewArts = getReviews(teamArt, relatedToStateName); + for (AbstractReviewArtifact reviewArt : reviewArts) { spent += reviewArt.getPercentCompleteSMATotal(); } if (spent == 0) { diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/SMAState.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/SMAState.java index 48db5005ac9..89712b04125 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/SMAState.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/SMAState.java @@ -14,7 +14,7 @@ import java.util.Collection; import java.util.HashSet; import java.util.regex.Matcher; import java.util.regex.Pattern; -import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact.DefaultTeamState; +import org.eclipse.osee.ats.util.DefaultTeamState; import org.eclipse.osee.framework.core.data.SystemUser; import org.eclipse.osee.framework.core.exception.OseeArgumentException; import org.eclipse.osee.framework.core.exception.OseeCoreException; diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/XCurrentStateDam.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/XCurrentStateDam.java index 7c8cf4329d9..96471c8a02f 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/XCurrentStateDam.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/XCurrentStateDam.java @@ -15,7 +15,7 @@ import java.util.Set; import org.eclipse.osee.ats.artifact.ATSLog.LogType; import org.eclipse.osee.ats.artifact.AtsAttributeTypes; import org.eclipse.osee.ats.artifact.LogItem; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.framework.core.exception.OseeArgumentException; import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.skynet.core.User; @@ -25,7 +25,7 @@ import org.eclipse.osee.framework.skynet.core.User; */ public class XCurrentStateDam extends XStateAssigneesDam { - public XCurrentStateDam(StateMachineArtifact sma) throws OseeCoreException { + public XCurrentStateDam(AbstractWorkflowArtifact sma) throws OseeCoreException { super(sma, AtsAttributeTypes.CurrentState); } @@ -45,7 +45,7 @@ public class XCurrentStateDam extends XStateAssigneesDam { @Override public void setState(SMAState state) throws OseeCoreException { - StateMachineArtifact sma = getArtifact(); + AbstractWorkflowArtifact sma = getArtifact(); sma.setSoleAttributeValue(getAttributeType(), state.toXml()); } @@ -73,7 +73,7 @@ public class XCurrentStateDam extends XStateAssigneesDam { logMetrics(""); } - public static void logMetrics(StateMachineArtifact sma, String percent, String hours, String stateName, User user, Date date) throws OseeCoreException { + public static void logMetrics(AbstractWorkflowArtifact sma, String percent, String hours, String stateName, User user, Date date) throws OseeCoreException { LogItem logItem = new LogItem(LogType.Metrics, date, user, stateName, String.format("Percent %s Hours %s", percent, hours), sma.getHumanReadableId()); diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/XDecisionOptions.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/XDecisionOptions.java index 85ca03f92fb..39e615fc73c 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/XDecisionOptions.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/XDecisionOptions.java @@ -15,7 +15,7 @@ import java.util.HashSet; import java.util.Set; import java.util.logging.Level; import org.eclipse.osee.ats.artifact.AtsAttributeTypes; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.framework.core.data.IAttributeType; import org.eclipse.osee.framework.core.exception.OseeCoreException; @@ -28,11 +28,11 @@ import org.eclipse.osee.framework.ui.plugin.util.Result; */ public class XDecisionOptions { - private final WeakReference<StateMachineArtifact> smaRef; + private final WeakReference<AbstractWorkflowArtifact> smaRef; private final IAttributeType attributeType; - public XDecisionOptions(StateMachineArtifact sma) { - this.smaRef = new WeakReference<StateMachineArtifact>(sma); + public XDecisionOptions(AbstractWorkflowArtifact sma) { + this.smaRef = new WeakReference<AbstractWorkflowArtifact>(sma); this.attributeType = AtsAttributeTypes.DecisionReviewOptions; } @@ -45,7 +45,7 @@ public class XDecisionOptions { return getDecisionOptions(decString); } - public StateMachineArtifact getSma() throws OseeStateException { + public AbstractWorkflowArtifact getSma() throws OseeStateException { if (smaRef.get() == null) { throw new OseeStateException("Artifact has been garbage collected"); } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/XStateAssigneesDam.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/XStateAssigneesDam.java index 4472d2b47ab..98ba164eb06 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/XStateAssigneesDam.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/XStateAssigneesDam.java @@ -15,7 +15,7 @@ import java.util.Date; import java.util.HashSet; import java.util.Set; import java.util.logging.Level; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.ats.util.AtsUtil; import org.eclipse.osee.framework.core.data.IAttributeType; @@ -30,7 +30,7 @@ import org.eclipse.osee.framework.ui.skynet.widgets.XTextDam; */ public abstract class XStateAssigneesDam extends XTextDam { - public XStateAssigneesDam(StateMachineArtifact sma, IAttributeType attributeType) throws OseeCoreException { + public XStateAssigneesDam(AbstractWorkflowArtifact sma, IAttributeType attributeType) throws OseeCoreException { super(attributeType.getName(), true); setAttributeType(sma, attributeType); } @@ -42,8 +42,8 @@ public abstract class XStateAssigneesDam extends XTextDam { } @Override - public StateMachineArtifact getArtifact() throws OseeCoreException { - return (StateMachineArtifact) super.getArtifact(); + public AbstractWorkflowArtifact getArtifact() throws OseeCoreException { + return (AbstractWorkflowArtifact) super.getArtifact(); } public SMAState getState(String stateName, boolean create) { @@ -89,7 +89,7 @@ public abstract class XStateAssigneesDam extends XTextDam { } protected void logMetrics(String stateName) throws OseeCoreException { - StateMachineArtifact sma = getArtifact(); + AbstractWorkflowArtifact sma = getArtifact(); String hoursSpent = AtsUtil.doubleToI18nString(sma.getHoursSpentSMATotal()); XCurrentStateDam.logMetrics(sma, sma.getPercentCompleteSMATotal() + "", hoursSpent, stateName, UserManager.getUser(), new Date()); @@ -115,7 +115,7 @@ public abstract class XStateAssigneesDam extends XTextDam { public void setState(SMAState state) throws OseeCoreException { // Update attribute if it already exists - StateMachineArtifact sma = getArtifact(); + AbstractWorkflowArtifact sma = getArtifact(); try { Collection<Attribute<String>> attrs = sma.getAttributes(getAttributeType()); for (Attribute<String> attr : attrs) { diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/XStateDam.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/XStateDam.java index 33532810740..ea24a84132d 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/XStateDam.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/XStateDam.java @@ -11,7 +11,7 @@ package org.eclipse.osee.ats.util.widgets; import org.eclipse.osee.ats.artifact.AtsAttributeTypes; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.framework.core.exception.OseeCoreException; /** @@ -19,7 +19,7 @@ import org.eclipse.osee.framework.core.exception.OseeCoreException; */ public class XStateDam extends XStateAssigneesDam { - public XStateDam(StateMachineArtifact sma) throws OseeCoreException { + public XStateDam(AbstractWorkflowArtifact sma) throws OseeCoreException { super(sma, AtsAttributeTypes.State); } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/dialog/SMAStatusDialog.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/dialog/SMAStatusDialog.java index ca55ff2c10d..64754495a20 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/dialog/SMAStatusDialog.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/dialog/SMAStatusDialog.java @@ -14,7 +14,7 @@ import java.util.Collection; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.jface.dialogs.MessageDialog; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.artifact.TaskArtifact; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.framework.logging.OseeLevel; @@ -44,13 +44,13 @@ public class SMAStatusDialog extends MessageDialog { protected XRadioButton eachRadio = new XRadioButton("Apply Hours Spent to each Task"); private Button okButton; private final boolean showPercent; - protected final Collection<? extends StateMachineArtifact> smas; + protected final Collection<? extends AbstractWorkflowArtifact> smas; - public SMAStatusDialog(Shell parentShell, String dialogTitle, String dialogMessage, Collection<? extends StateMachineArtifact> smas) { + public SMAStatusDialog(Shell parentShell, String dialogTitle, String dialogMessage, Collection<? extends AbstractWorkflowArtifact> smas) { this(parentShell, dialogTitle, dialogMessage, true, smas); } - public SMAStatusDialog(Shell parentShell, String dialogTitle, String dialogMessage, boolean showPercent, Collection<? extends StateMachineArtifact> smas) { + public SMAStatusDialog(Shell parentShell, String dialogTitle, String dialogMessage, boolean showPercent, Collection<? extends AbstractWorkflowArtifact> smas) { super(parentShell, dialogTitle, null, dialogMessage, MessageDialog.NONE, new String[] {"OK", "Cancel"}, 0); this.showPercent = showPercent; this.smas = smas; @@ -64,7 +64,7 @@ public class SMAStatusDialog extends MessageDialog { protected Control createCustomArea(Composite parent) { boolean hasTask = false; - for (StateMachineArtifact sma : smas) { + for (AbstractWorkflowArtifact sma : smas) { if (sma instanceof TaskArtifact) { hasTask = true; } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/dialog/TaskOptionStatusDialog.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/dialog/TaskOptionStatusDialog.java index a54908addbe..b0f1846162f 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/dialog/TaskOptionStatusDialog.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/dialog/TaskOptionStatusDialog.java @@ -20,7 +20,7 @@ import org.eclipse.core.runtime.Status; import org.eclipse.jface.viewers.ArrayContentProvider; import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.jface.viewers.ILabelProviderListener; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.framework.jdk.core.util.Strings; import org.eclipse.osee.framework.logging.OseeLevel; @@ -45,7 +45,7 @@ public class TaskOptionStatusDialog extends SMAStatusDialog { private static String OPTION_MESSAGE = "Select resolution, enter percent complete and number of hours you spent since last status."; - public TaskOptionStatusDialog(Shell parentShell, String dialogTitle, String dialogMessage, boolean showPercent, List<TaskResOptionDefinition> options, Collection<? extends StateMachineArtifact> tasks) { + public TaskOptionStatusDialog(Shell parentShell, String dialogTitle, String dialogMessage, boolean showPercent, List<TaskResOptionDefinition> options, Collection<? extends AbstractWorkflowArtifact> tasks) { super(parentShell, dialogTitle, options == null ? MESSAGE : OPTION_MESSAGE, showPercent, tasks); this.options = options; if (options != null) { diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/role/UserRoleManager.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/role/UserRoleManager.java index 9d08db7cd30..7a06ee6fd23 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/role/UserRoleManager.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/role/UserRoleManager.java @@ -17,8 +17,8 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; import org.eclipse.osee.ats.artifact.AtsAttributeTypes; import org.eclipse.osee.ats.artifact.IReviewArtifact; -import org.eclipse.osee.ats.artifact.ReviewSMArtifact; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractReviewArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.ats.util.widgets.defect.DefectItem; import org.eclipse.osee.ats.util.widgets.defect.DefectItem.Severity; @@ -41,7 +41,7 @@ import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction; */ public class UserRoleManager { - private final WeakReference<ReviewSMArtifact> artifactRef; + private final WeakReference<AbstractReviewArtifact> artifactRef; private boolean enabled = true; private static String ROLE_ITEM_TAG = "Role"; private static final IAttributeType ATS_ROLE_STORAGE_TYPE = AtsAttributeTypes.Role; @@ -49,8 +49,8 @@ public class UserRoleManager { private final Matcher roleMatcher = java.util.regex.Pattern.compile( "<" + ROLE_ITEM_TAG + ">(.*?)</" + ROLE_ITEM_TAG + ">", Pattern.DOTALL | Pattern.MULTILINE).matcher(""); - public UserRoleManager(ReviewSMArtifact artifact) { - this.artifactRef = new WeakReference<ReviewSMArtifact>(artifact); + public UserRoleManager(AbstractReviewArtifact artifact) { + this.artifactRef = new WeakReference<AbstractReviewArtifact>(artifact); } public String getHtml() throws OseeCoreException { @@ -63,7 +63,7 @@ public class UserRoleManager { return sb.toString(); } - public ReviewSMArtifact getArtifact() throws OseeStateException { + public AbstractReviewArtifact getArtifact() throws OseeStateException { if (artifactRef.get() == null) { throw new OseeStateException("Artifact has been garbage collected"); } @@ -275,7 +275,7 @@ public class UserRoleManager { for (UserRole role : getUserRoles()) { hoursSpent += role.getHoursSpent() == null ? 0 : role.getHoursSpent(); } - StateMachineArtifact sma = getArtifact(); + AbstractWorkflowArtifact sma = getArtifact(); sma.getStateMgr().setMetrics(hoursSpent, sma.getStateMgr().getPercentComplete(), true); if (persist) { getArtifact().persist(transaction); diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/xviewer/RelatedToStateColumn.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/xviewer/RelatedToStateColumn.java index f0675621887..d8e82653c43 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/xviewer/RelatedToStateColumn.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/xviewer/RelatedToStateColumn.java @@ -11,7 +11,7 @@ import java.util.Collection; import java.util.Collections; import java.util.List; import org.eclipse.osee.ats.artifact.AtsAttributeTypes; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.artifact.TaskArtifact; import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact; import org.eclipse.osee.ats.internal.AtsPlugin; @@ -25,7 +25,7 @@ import org.eclipse.osee.framework.ui.plugin.util.AWorkbench; public class RelatedToStateColumn { - public static boolean promptChangeRelatedToState(StateMachineArtifact sma, boolean persist) { + public static boolean promptChangeRelatedToState(AbstractWorkflowArtifact sma, boolean persist) { if (sma.isTask()) { return promptChangeRelatedToState(Arrays.asList((TaskArtifact) sma), persist); } else { diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/xviewer/column/XViewerReviewRoleColumn.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/xviewer/column/XViewerReviewRoleColumn.java index 1ff4287df2f..17d3b79c286 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/xviewer/column/XViewerReviewRoleColumn.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/xviewer/column/XViewerReviewRoleColumn.java @@ -13,7 +13,7 @@ package org.eclipse.osee.ats.util.xviewer.column; import org.eclipse.nebula.widgets.xviewer.XViewerColumn; import org.eclipse.nebula.widgets.xviewer.XViewerValueColumn; import org.eclipse.nebula.widgets.xviewer.util.XViewerException; -import org.eclipse.osee.ats.artifact.ReviewSMArtifact; +import org.eclipse.osee.ats.artifact.AbstractReviewArtifact; import org.eclipse.osee.ats.util.widgets.role.UserRole; import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.skynet.core.User; @@ -49,8 +49,8 @@ public class XViewerReviewRoleColumn extends XViewerValueColumn { @Override public String getColumnText(Object element, XViewerColumn column, int columnIndex) throws XViewerException { try { - if (element instanceof ReviewSMArtifact) { - return getRolesStr((ReviewSMArtifact) element, user); + if (element instanceof AbstractReviewArtifact) { + return getRolesStr((AbstractReviewArtifact) element, user); } return ""; } catch (OseeCoreException ex) { @@ -58,7 +58,7 @@ public class XViewerReviewRoleColumn extends XViewerValueColumn { } } - private static String getRolesStr(ReviewSMArtifact reviewArt, User user) throws OseeCoreException { + private static String getRolesStr(AbstractReviewArtifact reviewArt, User user) throws OseeCoreException { StringBuilder builder = new StringBuilder(); for (UserRole role : reviewArt.getUserRoleManager().getUserRoles()) { if (role.getUser().equals(user)) { diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/xviewer/column/XViewerSmaCompletedDateColumn.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/xviewer/column/XViewerSmaCompletedDateColumn.java index 308db31b155..77e8e243399 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/xviewer/column/XViewerSmaCompletedDateColumn.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/xviewer/column/XViewerSmaCompletedDateColumn.java @@ -13,7 +13,7 @@ package org.eclipse.osee.ats.util.xviewer.column; import org.eclipse.nebula.widgets.xviewer.XViewerColumn; import org.eclipse.nebula.widgets.xviewer.XViewerValueColumn; import org.eclipse.nebula.widgets.xviewer.util.XViewerException; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.world.WorldXViewerFactory; import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.swt.SWT; @@ -49,8 +49,8 @@ public class XViewerSmaCompletedDateColumn extends XViewerValueColumn { @Override public String getColumnText(Object element, XViewerColumn column, int columnIndex) throws XViewerException { try { - if (element instanceof StateMachineArtifact) { - return ((StateMachineArtifact) element).getWorldViewCompletedDateStr(); + if (element instanceof AbstractWorkflowArtifact) { + return ((AbstractWorkflowArtifact) element).getWorldViewCompletedDateStr(); } return super.getColumnText(element, column, columnIndex); } catch (OseeCoreException ex) { diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/ATSXWidgetOptionResolver.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/ATSXWidgetOptionResolver.java index 18898a47178..41c8d0d2109 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/ATSXWidgetOptionResolver.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/ATSXWidgetOptionResolver.java @@ -21,7 +21,7 @@ import org.eclipse.osee.framework.ui.skynet.widgets.workflow.DynamicXWidgetLayou /** * @author Donald G. Dunne */ -public class ATSXWidgetOptionResolver extends DefaultXWidgetOptionResolver { +public final class ATSXWidgetOptionResolver extends DefaultXWidgetOptionResolver { private static ATSXWidgetOptionResolver instance = new ATSXWidgetOptionResolver(); public static String OPTIONS_FROM_ATTRIBUTE_VALIDITY = "OPTIONS_FROM_ATTRIBUTE_VALIDITY"; diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/AtsWorkPage.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/AtsWorkPage.java index 0f3098e13cd..692c972175a 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/AtsWorkPage.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/AtsWorkPage.java @@ -12,10 +12,11 @@ package org.eclipse.osee.ats.workflow; import org.eclipse.osee.ats.artifact.ATSAttributes; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; -import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact.DefaultTeamState; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; +import org.eclipse.osee.ats.editor.stateItem.AtsStateItemManager; import org.eclipse.osee.ats.editor.stateItem.IAtsStateItem; import org.eclipse.osee.ats.internal.AtsPlugin; +import org.eclipse.osee.ats.util.DefaultTeamState; import org.eclipse.osee.ats.util.widgets.dialog.TaskResolutionOptionRule; import org.eclipse.osee.ats.workflow.item.AtsWorkDefinitions; import org.eclipse.osee.framework.core.exception.OseeCoreException; @@ -41,7 +42,7 @@ import org.eclipse.ui.forms.widgets.FormToolkit; public class AtsWorkPage extends WorkPage { protected TaskResolutionOptionRule taskResolutionOptions; - private StateMachineArtifact sma; + private AbstractWorkflowArtifact sma; public AtsWorkPage(WorkFlowDefinition workFlowDefinition, WorkPageDefinition workPageDefinition, String xWidgetsXml, IXWidgetOptionResolver optionResolver) { super(workFlowDefinition, workPageDefinition, xWidgetsXml, optionResolver, null); @@ -51,11 +52,11 @@ public class AtsWorkPage extends WorkPage { this(null, null, null, optionResolver); } - public boolean isCurrentState(StateMachineArtifact sma) throws OseeCoreException { + public boolean isCurrentState(AbstractWorkflowArtifact sma) throws OseeCoreException { return sma.isCurrentState(getName()); } - public boolean isCurrentNonCompleteCancelledState(StateMachineArtifact sma) throws OseeCoreException { + public boolean isCurrentNonCompleteCancelledState(AbstractWorkflowArtifact sma) throws OseeCoreException { return sma.isCurrentState(getName()) && !isCompleteCancelledState(); } @@ -68,7 +69,7 @@ public class AtsWorkPage extends WorkPage { super.widgetCreated(xWidget, toolkit, art, page, xModListener, isEditable); // Check extenstion points for page creation if (sma != null) { - for (IAtsStateItem item : sma.getStateItems().getStateItems(page.getId())) { + for (IAtsStateItem item : AtsStateItemManager.getStateItems(page.getId())) { item.xWidgetCreated(xWidget, toolkit, (AtsWorkPage) page, art, xModListener, isEditable); } } @@ -98,7 +99,7 @@ public class AtsWorkPage extends WorkPage { super.widgetCreating(xWidget, toolkit, art, page, xModListener, isEditable); // Check extenstion points for page creation if (sma != null) { - for (IAtsStateItem item : sma.getStateItems().getStateItems(page.getId())) { + for (IAtsStateItem item : AtsStateItemManager.getStateItems(page.getId())) { Result result = item.xWidgetCreating(xWidget, toolkit, (AtsWorkPage) page, art, xModListener, isEditable); if (result.isFalse()) { OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, "Error in page creation => " + result.getText()); @@ -135,7 +136,7 @@ public class AtsWorkPage extends WorkPage { return workFlowDefinition.getStartPage().getId().equals(getId()); } - public void generateLayoutDatas(StateMachineArtifact sma) throws OseeCoreException { + public void generateLayoutDatas(AbstractWorkflowArtifact sma) throws OseeCoreException { this.sma = sma; // Add static layoutDatas to atsWorkPage for (WorkItemDefinition workItemDefinition : getWorkPageDefinition().getWorkItems(true)) { @@ -148,11 +149,11 @@ public class AtsWorkPage extends WorkPage { } } - public StateMachineArtifact getSma() { + public AbstractWorkflowArtifact getSma() { return sma; } - public void setsma(StateMachineArtifact sma) { + public void setsma(AbstractWorkflowArtifact sma) { this.sma = sma; } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/flow/DecisionWorkflowDefinition.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/flow/DecisionWorkflowDefinition.java index 719a334394e..774688f0619 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/flow/DecisionWorkflowDefinition.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/flow/DecisionWorkflowDefinition.java @@ -12,7 +12,7 @@ package org.eclipse.osee.ats.workflow.flow; import java.util.ArrayList; import java.util.List; -import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact.DefaultTeamState; +import org.eclipse.osee.ats.util.DefaultTeamState; import org.eclipse.osee.ats.workflow.item.AtsStatePercentCompleteWeightDecisionReviewRule; import org.eclipse.osee.ats.workflow.item.AtsWorkDefinitions; import org.eclipse.osee.ats.workflow.page.AtsCancelledWorkPageDefinition; diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/flow/PeerToPeerWorkflowDefinition.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/flow/PeerToPeerWorkflowDefinition.java index 43a55ae24fd..7fee726ff29 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/flow/PeerToPeerWorkflowDefinition.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/flow/PeerToPeerWorkflowDefinition.java @@ -12,7 +12,7 @@ package org.eclipse.osee.ats.workflow.flow; import java.util.ArrayList; import java.util.List; -import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact.DefaultTeamState; +import org.eclipse.osee.ats.util.DefaultTeamState; import org.eclipse.osee.ats.workflow.item.AtsStatePercentCompleteWeightPeerToPeerReviewRule; import org.eclipse.osee.ats.workflow.item.AtsWorkDefinitions; import org.eclipse.osee.ats.workflow.page.AtsCancelledWorkPageDefinition; diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/flow/SimpleWorkflowDefinition.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/flow/SimpleWorkflowDefinition.java index 38dad271536..ee8dcb39ca3 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/flow/SimpleWorkflowDefinition.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/flow/SimpleWorkflowDefinition.java @@ -12,7 +12,7 @@ package org.eclipse.osee.ats.workflow.flow; import java.util.ArrayList; import java.util.List; -import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact.DefaultTeamState; +import org.eclipse.osee.ats.util.DefaultTeamState; import org.eclipse.osee.ats.workflow.item.AtsStatePercentCompleteWeightSimpleWorkflowRule; import org.eclipse.osee.ats.workflow.item.AtsWorkDefinitions; import org.eclipse.osee.ats.workflow.page.AtsCancelledWorkPageDefinition; diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/flow/TaskWorkflowDefinition.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/flow/TaskWorkflowDefinition.java index 75ba55b6d5f..cda88f41869 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/flow/TaskWorkflowDefinition.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/flow/TaskWorkflowDefinition.java @@ -13,7 +13,7 @@ package org.eclipse.osee.ats.workflow.flow; import java.util.ArrayList; import java.util.List; import org.eclipse.osee.ats.artifact.TaskArtifact.TaskStates; -import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact.DefaultTeamState; +import org.eclipse.osee.ats.util.DefaultTeamState; import org.eclipse.osee.ats.workflow.item.AtsWorkDefinitions; import org.eclipse.osee.ats.workflow.page.AtsCancelledWorkPageDefinition; import org.eclipse.osee.ats.workflow.page.AtsCompletedWorkPageDefinition; diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/flow/TeamWorkflowDefinition.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/flow/TeamWorkflowDefinition.java index f3a24ab65a7..656b0d10cc4 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/flow/TeamWorkflowDefinition.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/flow/TeamWorkflowDefinition.java @@ -12,7 +12,7 @@ package org.eclipse.osee.ats.workflow.flow; import java.util.ArrayList; import java.util.List; -import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact.DefaultTeamState; +import org.eclipse.osee.ats.util.DefaultTeamState; import org.eclipse.osee.ats.workflow.item.AtsStatePercentCompleteWeightDefaultWorkflowRule; import org.eclipse.osee.ats.workflow.item.AtsWorkDefinitions; import org.eclipse.osee.ats.workflow.page.AtsAnalyzeWorkPageDefinition; diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/item/AtsAddDecisionReviewRule.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/item/AtsAddDecisionReviewRule.java index 9d29775fa93..0e9f6684e60 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/item/AtsAddDecisionReviewRule.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/item/AtsAddDecisionReviewRule.java @@ -15,7 +15,7 @@ import java.util.Collection; import java.util.logging.Level; import org.eclipse.osee.ats.artifact.ATSLog.LogType; import org.eclipse.osee.ats.artifact.DecisionReviewArtifact; -import org.eclipse.osee.ats.artifact.ReviewSMArtifact.ReviewBlockType; +import org.eclipse.osee.ats.artifact.AbstractReviewArtifact.ReviewBlockType; import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.ats.util.widgets.ReviewManager; diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/item/AtsAddPeerToPeerReviewRule.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/item/AtsAddPeerToPeerReviewRule.java index 6638643e47c..e058f7838c9 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/item/AtsAddPeerToPeerReviewRule.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/item/AtsAddPeerToPeerReviewRule.java @@ -16,7 +16,7 @@ import java.util.logging.Level; import org.eclipse.osee.ats.artifact.ATSLog.LogType; import org.eclipse.osee.ats.artifact.AtsAttributeTypes; import org.eclipse.osee.ats.artifact.PeerToPeerReviewArtifact; -import org.eclipse.osee.ats.artifact.ReviewSMArtifact.ReviewBlockType; +import org.eclipse.osee.ats.artifact.AbstractReviewArtifact.ReviewBlockType; import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.ats.util.widgets.ReviewManager; diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/item/AtsCancellationReasonStateWorkItem.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/item/AtsCancellationReasonStateWorkItem.java index e1e6df60507..1e684f6cbe1 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/item/AtsCancellationReasonStateWorkItem.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/item/AtsCancellationReasonStateWorkItem.java @@ -12,7 +12,7 @@ package org.eclipse.osee.ats.workflow.item; import org.eclipse.osee.ats.artifact.ATSLog.LogType; import org.eclipse.osee.ats.artifact.LogItem; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.ui.skynet.widgets.XOption; import org.eclipse.osee.framework.ui.skynet.widgets.workflow.DynamicXWidgetLayoutData; @@ -25,7 +25,7 @@ public class AtsCancellationReasonStateWorkItem extends WorkWidgetDefinition { public static String ID = "ats.CancellationReason"; - protected AtsCancellationReasonStateWorkItem(StateMachineArtifact sma) throws OseeCoreException { + protected AtsCancellationReasonStateWorkItem(AbstractWorkflowArtifact sma) throws OseeCoreException { super("Cancellation Reason", ID); DynamicXWidgetLayoutData data = new DynamicXWidgetLayoutData(null); data.setName(getName()); diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/item/AtsCancelledFromStateWorkItem.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/item/AtsCancelledFromStateWorkItem.java index 2e97728c8b7..47652938971 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/item/AtsCancelledFromStateWorkItem.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/item/AtsCancelledFromStateWorkItem.java @@ -12,7 +12,7 @@ package org.eclipse.osee.ats.workflow.item; import org.eclipse.osee.ats.artifact.ATSLog.LogType; import org.eclipse.osee.ats.artifact.LogItem; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.ui.skynet.widgets.XOption; import org.eclipse.osee.framework.ui.skynet.widgets.workflow.DynamicXWidgetLayoutData; @@ -23,7 +23,7 @@ import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkWidgetDefinitio */ public class AtsCancelledFromStateWorkItem extends WorkWidgetDefinition { - protected AtsCancelledFromStateWorkItem(StateMachineArtifact sma) throws OseeCoreException { + protected AtsCancelledFromStateWorkItem(AbstractWorkflowArtifact sma) throws OseeCoreException { super("Cancelled from State", "ats.CancelledFromState"); DynamicXWidgetLayoutData data = new DynamicXWidgetLayoutData(null); data.setName(getName()); diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/item/AtsCompletedFromStateWorkItem.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/item/AtsCompletedFromStateWorkItem.java index 11a6b16bdd7..02810ea4d05 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/item/AtsCompletedFromStateWorkItem.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/item/AtsCompletedFromStateWorkItem.java @@ -12,7 +12,7 @@ package org.eclipse.osee.ats.workflow.item; import org.eclipse.osee.ats.artifact.ATSLog.LogType; import org.eclipse.osee.ats.artifact.LogItem; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.ui.skynet.widgets.XOption; import org.eclipse.osee.framework.ui.skynet.widgets.workflow.DynamicXWidgetLayoutData; @@ -23,7 +23,7 @@ import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkWidgetDefinitio */ public class AtsCompletedFromStateWorkItem extends WorkWidgetDefinition { - protected AtsCompletedFromStateWorkItem(StateMachineArtifact sma) throws OseeCoreException { + protected AtsCompletedFromStateWorkItem(AbstractWorkflowArtifact sma) throws OseeCoreException { super("Completed from State", "ats.CompletedFromState"); DynamicXWidgetLayoutData data = new DynamicXWidgetLayoutData(null); data.setName(getName()); diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/item/AtsStatePercentCompleteWeightDefaultWorkflowRule.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/item/AtsStatePercentCompleteWeightDefaultWorkflowRule.java index ebfaa999977..37d10734af8 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/item/AtsStatePercentCompleteWeightDefaultWorkflowRule.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/item/AtsStatePercentCompleteWeightDefaultWorkflowRule.java @@ -10,7 +10,7 @@ *******************************************************************************/ package org.eclipse.osee.ats.workflow.item; -import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact.DefaultTeamState; +import org.eclipse.osee.ats.util.DefaultTeamState; /** * @author Donald G. Dunne diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/page/AtsAnalyzeWorkPageDefinition.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/page/AtsAnalyzeWorkPageDefinition.java index 2edec3358e5..a3478d92781 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/page/AtsAnalyzeWorkPageDefinition.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/page/AtsAnalyzeWorkPageDefinition.java @@ -11,7 +11,7 @@ package org.eclipse.osee.ats.workflow.page; import org.eclipse.osee.ats.artifact.AtsAttributeTypes; -import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact.DefaultTeamState; +import org.eclipse.osee.ats.util.DefaultTeamState; import org.eclipse.osee.ats.workflow.flow.TeamWorkflowDefinition; import org.eclipse.osee.ats.workflow.item.AtsWorkDefinitions.RuleWorkItemId; import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkPageDefinition; diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/page/AtsAuthorizeWorkPageDefinition.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/page/AtsAuthorizeWorkPageDefinition.java index 5d90bbe2c18..c7c22dcde56 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/page/AtsAuthorizeWorkPageDefinition.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/page/AtsAuthorizeWorkPageDefinition.java @@ -11,7 +11,7 @@ package org.eclipse.osee.ats.workflow.page; import org.eclipse.osee.ats.artifact.AtsAttributeTypes; -import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact.DefaultTeamState; +import org.eclipse.osee.ats.util.DefaultTeamState; import org.eclipse.osee.ats.workflow.flow.TeamWorkflowDefinition; import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkPageDefinition; diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/page/AtsCancelledWorkPageDefinition.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/page/AtsCancelledWorkPageDefinition.java index e7d626e1d62..25878600b8d 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/page/AtsCancelledWorkPageDefinition.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/page/AtsCancelledWorkPageDefinition.java @@ -10,7 +10,7 @@ *******************************************************************************/ package org.eclipse.osee.ats.workflow.page; -import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact.DefaultTeamState; +import org.eclipse.osee.ats.util.DefaultTeamState; import org.eclipse.osee.ats.workflow.flow.TeamWorkflowDefinition; import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkPageDefinition; diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/page/AtsCompletedWorkPageDefinition.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/page/AtsCompletedWorkPageDefinition.java index 79f77bd2f8a..6dbe2c89226 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/page/AtsCompletedWorkPageDefinition.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/page/AtsCompletedWorkPageDefinition.java @@ -10,7 +10,7 @@ *******************************************************************************/ package org.eclipse.osee.ats.workflow.page; -import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact.DefaultTeamState; +import org.eclipse.osee.ats.util.DefaultTeamState; import org.eclipse.osee.ats.workflow.flow.TeamWorkflowDefinition; import org.eclipse.osee.ats.workflow.item.AtsWorkDefinitions.RuleWorkItemId; import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkPageDefinition; diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/page/AtsDecisionCompletedWorkPageDefinition.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/page/AtsDecisionCompletedWorkPageDefinition.java index d55b218cbf7..34f39b57b3e 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/page/AtsDecisionCompletedWorkPageDefinition.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/page/AtsDecisionCompletedWorkPageDefinition.java @@ -11,7 +11,7 @@ package org.eclipse.osee.ats.workflow.page; import org.eclipse.osee.ats.artifact.AtsAttributeTypes; -import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact.DefaultTeamState; +import org.eclipse.osee.ats.util.DefaultTeamState; import org.eclipse.osee.ats.workflow.flow.DecisionWorkflowDefinition; import org.eclipse.osee.ats.workflow.item.AtsWorkDefinitions.RuleWorkItemId; import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkPageDefinition; diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/page/AtsEndorseWorkPageDefinition.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/page/AtsEndorseWorkPageDefinition.java index aa42ce5b4f5..38740c2ef93 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/page/AtsEndorseWorkPageDefinition.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/page/AtsEndorseWorkPageDefinition.java @@ -11,7 +11,7 @@ package org.eclipse.osee.ats.workflow.page; import org.eclipse.osee.ats.artifact.AtsAttributeTypes; -import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact.DefaultTeamState; +import org.eclipse.osee.ats.util.DefaultTeamState; import org.eclipse.osee.ats.workflow.flow.TeamWorkflowDefinition; import org.eclipse.osee.ats.workflow.item.AtsWorkDefinitions.RuleWorkItemId; import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkPageDefinition; diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/page/AtsImplementWorkPageDefinition.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/page/AtsImplementWorkPageDefinition.java index 983db39b22b..d20b88a5130 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/page/AtsImplementWorkPageDefinition.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/page/AtsImplementWorkPageDefinition.java @@ -11,7 +11,7 @@ package org.eclipse.osee.ats.workflow.page; import org.eclipse.osee.ats.artifact.AtsAttributeTypes; -import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact.DefaultTeamState; +import org.eclipse.osee.ats.util.DefaultTeamState; import org.eclipse.osee.ats.workflow.flow.TeamWorkflowDefinition; import org.eclipse.osee.ats.workflow.item.AtsWorkDefinitions.RuleWorkItemId; import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkPageDefinition; diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/AtsMetricsComposite.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/AtsMetricsComposite.java index 7c8d0816681..0df262478af 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/AtsMetricsComposite.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/AtsMetricsComposite.java @@ -18,7 +18,7 @@ import java.util.List; import java.util.Set; import java.util.logging.Level; import org.eclipse.osee.ats.artifact.AtsAttributeTypes; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact; import org.eclipse.osee.ats.artifact.VersionArtifact; import org.eclipse.osee.ats.internal.AtsPlugin; @@ -276,7 +276,7 @@ public class AtsMetricsComposite extends ScrolledComposite { if (sMet.getUserToAssignedSmas().getValues(user) != null) { for (Artifact sma : sMet.getUserToAssignedSmas().getValues(user)) { if (!processedArts.contains(sma) && !sMet.getUserToCompletedSmas().containsValue(sma)) { - cummulativePercentComplete += ((StateMachineArtifact) sma).getWorldViewPercentCompleteTotal(); + cummulativePercentComplete += ((AbstractWorkflowArtifact) sma).getWorldViewPercentCompleteTotal(); processedArts.add(sma); } } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/IWorldViewArtifact.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/IWorldViewArtifact.java index f8a422ac19b..71040163183 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/IWorldViewArtifact.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/IWorldViewArtifact.java @@ -21,177 +21,177 @@ import org.eclipse.swt.graphics.Image; public interface IWorldViewArtifact { - public Image getAssigneeImage() throws OseeCoreException; + Image getAssigneeImage() throws OseeCoreException; - public String getWorldViewActionableItems() throws OseeCoreException; + String getWorldViewActionableItems() throws OseeCoreException; - public String getWorldViewActivePoc() throws OseeCoreException; + String getWorldViewActivePoc() throws OseeCoreException; - public double getWorldViewAnnualCostAvoidance() throws OseeCoreException; + double getWorldViewAnnualCostAvoidance() throws OseeCoreException; - public String getWorldViewBranchStatus() throws OseeCoreException; + String getWorldViewBranchStatus() throws OseeCoreException; - public String getWorldViewOriginatingWorkflowStr() throws OseeCoreException; + String getWorldViewOriginatingWorkflowStr() throws OseeCoreException; - public Collection<TeamWorkFlowArtifact> getWorldViewOriginatingWorkflows() throws OseeCoreException; + Collection<TeamWorkFlowArtifact> getWorldViewOriginatingWorkflows() throws OseeCoreException; - public Date getWorldViewCancelledDate() throws OseeCoreException; + Date getWorldViewCancelledDate() throws OseeCoreException; - public String getWorldViewCancelledDateStr() throws OseeCoreException; + String getWorldViewCancelledDateStr() throws OseeCoreException; - public String getWorldViewPoint() throws OseeCoreException; + String getWorldViewPoint() throws OseeCoreException; - public String getWorldViewNumeric1() throws OseeCoreException; + String getWorldViewNumeric1() throws OseeCoreException; - public String getWorldViewNumeric2() throws OseeCoreException; + String getWorldViewNumeric2() throws OseeCoreException; - public String getWorldViewGoalOrderVote() throws OseeCoreException; + String getWorldViewGoalOrderVote() throws OseeCoreException; - public String getWorldViewGoalOrder() throws OseeCoreException; + String getWorldViewGoalOrder() throws OseeCoreException; - public String getWorldViewCategory() throws OseeCoreException; + String getWorldViewCategory() throws OseeCoreException; - public String getWorldViewCategory2() throws OseeCoreException; + String getWorldViewCategory2() throws OseeCoreException; - public String getWorldViewCategory3() throws OseeCoreException; + String getWorldViewCategory3() throws OseeCoreException; - public ChangeType getWorldViewChangeType() throws OseeCoreException; + ChangeType getWorldViewChangeType() throws OseeCoreException; - public String getWorldViewChangeTypeStr() throws OseeCoreException; + String getWorldViewChangeTypeStr() throws OseeCoreException; - public Date getWorldViewCompletedDate() throws OseeCoreException; + Date getWorldViewCompletedDate() throws OseeCoreException; - public String getWorldViewCompletedDateStr() throws OseeCoreException; + String getWorldViewCompletedDateStr() throws OseeCoreException; - public Date getWorldViewCreatedDate() throws OseeCoreException; + Date getWorldViewCreatedDate() throws OseeCoreException; - public String getWorldViewCreatedDateStr() throws OseeCoreException; + String getWorldViewCreatedDateStr() throws OseeCoreException; - public Date getWorldViewDeadlineDate() throws OseeCoreException; + Date getWorldViewDeadlineDate() throws OseeCoreException; - public String getWorldViewDeadlineDateStr() throws OseeCoreException; + String getWorldViewDeadlineDateStr() throws OseeCoreException; - public String getWorldViewDecision() throws OseeCoreException; + String getWorldViewDecision() throws OseeCoreException; - public String getWorldViewDescription() throws OseeCoreException; + String getWorldViewDescription() throws OseeCoreException; /** * @return estimated hours from workflow attribute, tasks and reviews */ - public double getWorldViewEstimatedHours() throws OseeCoreException; + double getWorldViewEstimatedHours() throws OseeCoreException; - public Date getWorldViewEstimatedReleaseDate() throws OseeCoreException; + Date getWorldViewEstimatedReleaseDate() throws OseeCoreException; - public String getWorldViewEstimatedReleaseDateStr() throws OseeCoreException; + String getWorldViewEstimatedReleaseDateStr() throws OseeCoreException; - public Date getWorldViewEstimatedCompletionDate() throws OseeCoreException; + Date getWorldViewEstimatedCompletionDate() throws OseeCoreException; - public String getWorldViewEstimatedCompletionDateStr() throws OseeCoreException; + String getWorldViewEstimatedCompletionDateStr() throws OseeCoreException; - public double getWorldViewHoursSpentState() throws OseeCoreException; + double getWorldViewHoursSpentState() throws OseeCoreException; - public double getWorldViewHoursSpentStateReview() throws OseeCoreException; + double getWorldViewHoursSpentStateReview() throws OseeCoreException; - public double getWorldViewHoursSpentStateTask() throws OseeCoreException; + double getWorldViewHoursSpentStateTask() throws OseeCoreException; - public double getWorldViewHoursSpentStateTotal() throws OseeCoreException; + double getWorldViewHoursSpentStateTotal() throws OseeCoreException; - public double getWorldViewHoursSpentTotal() throws OseeCoreException; + double getWorldViewHoursSpentTotal() throws OseeCoreException; - public String getWorldViewID() throws OseeCoreException; + String getWorldViewID() throws OseeCoreException; - public String getWorldViewParentID() throws OseeCoreException; + String getWorldViewParentID() throws OseeCoreException; - public String getWorldViewParentState() throws OseeCoreException; + String getWorldViewParentState() throws OseeCoreException; - public String getWorldViewDaysInCurrentState() throws OseeCoreException; + String getWorldViewDaysInCurrentState() throws OseeCoreException; - public String getWorldViewImplementer() throws OseeCoreException; + String getWorldViewImplementer() throws OseeCoreException; - public String getWorldViewLegacyPCR() throws OseeCoreException; + String getWorldViewLegacyPCR() throws OseeCoreException; - public double getWorldViewManDaysNeeded() throws OseeCoreException; + double getWorldViewManDaysNeeded() throws OseeCoreException; - public String getWorldViewNotes() throws OseeCoreException; + String getWorldViewNotes() throws OseeCoreException; - public String getWorldViewNumberOfTasks() throws OseeCoreException; + String getWorldViewNumberOfTasks() throws OseeCoreException; - public String getWorldViewNumberOfTasksRemaining() throws OseeCoreException; + String getWorldViewNumberOfTasksRemaining() throws OseeCoreException; - public String getWorldViewLastStatused() throws OseeCoreException; + String getWorldViewLastStatused() throws OseeCoreException; - public String getWorldViewOriginator() throws OseeCoreException; + String getWorldViewOriginator() throws OseeCoreException; - public int getWorldViewPercentCompleteState() throws OseeCoreException; + int getWorldViewPercentCompleteState() throws OseeCoreException; - public int getWorldViewPercentCompleteStateReview() throws OseeCoreException; + int getWorldViewPercentCompleteStateReview() throws OseeCoreException; - public int getWorldViewPercentCompleteStateTask() throws OseeCoreException; + int getWorldViewPercentCompleteStateTask() throws OseeCoreException; - public int getWorldViewPercentCompleteTotal() throws OseeCoreException; + int getWorldViewPercentCompleteTotal() throws OseeCoreException; - public int getWorldViewPercentRework() throws OseeCoreException; + int getWorldViewPercentRework() throws OseeCoreException; - public String getWorldViewPercentReworkStr() throws OseeCoreException; + String getWorldViewPercentReworkStr() throws OseeCoreException; - public String getWorldViewPriority() throws OseeCoreException; + String getWorldViewPriority() throws OseeCoreException; - public String getWorldViewRelatedToState() throws OseeCoreException; + String getWorldViewRelatedToState() throws OseeCoreException; - public Date getWorldViewReleaseDate() throws OseeCoreException; + Date getWorldViewReleaseDate() throws OseeCoreException; - public String getWorldViewReleaseDateStr() throws OseeCoreException; + String getWorldViewReleaseDateStr() throws OseeCoreException; - public double getWorldViewRemainHours() throws OseeCoreException; + double getWorldViewRemainHours() throws OseeCoreException; - public String getWorldViewResolution() throws OseeCoreException; + String getWorldViewResolution() throws OseeCoreException; - public String getWorldViewGroups() throws OseeCoreException; + String getWorldViewGroups() throws OseeCoreException; - public String getWorldViewGoals() throws OseeCoreException; + String getWorldViewGoals() throws OseeCoreException; - public String getWorldViewReviewAuthor() throws OseeCoreException; + String getWorldViewReviewAuthor() throws OseeCoreException; - public String getWorldViewReviewDecider() throws OseeCoreException; + String getWorldViewReviewDecider() throws OseeCoreException; - public String getWorldViewReviewModerator() throws OseeCoreException; + String getWorldViewReviewModerator() throws OseeCoreException; - public String getWorldViewReviewReviewer() throws OseeCoreException; + String getWorldViewReviewReviewer() throws OseeCoreException; - public String getWorldViewState() throws OseeCoreException; + String getWorldViewState() throws OseeCoreException; - public String getWorldViewTeam() throws OseeCoreException; + String getWorldViewTeam() throws OseeCoreException; - public String getWorldViewTitle() throws OseeCoreException; + String getWorldViewTitle() throws OseeCoreException; - public String getWorldViewType() throws OseeCoreException; + String getWorldViewType() throws OseeCoreException; - public String getWorldViewUserCommunity() throws OseeCoreException; + String getWorldViewUserCommunity() throws OseeCoreException; - public String getWorldViewValidationRequiredStr() throws OseeCoreException; + String getWorldViewValidationRequiredStr() throws OseeCoreException; - public String getWorldViewTargetedVersionStr() throws OseeCoreException; + String getWorldViewTargetedVersionStr() throws OseeCoreException; - public VersionArtifact getWorldViewTargetedVersion() throws OseeCoreException; + VersionArtifact getWorldViewTargetedVersion() throws OseeCoreException; - public double getWorldViewWeeklyBenefit() throws OseeCoreException; + double getWorldViewWeeklyBenefit() throws OseeCoreException; - public String getWorldViewWorkPackage() throws OseeCoreException; + String getWorldViewWorkPackage() throws OseeCoreException; - public Result isWorldViewAnnualCostAvoidanceValid() throws OseeCoreException; + Result isWorldViewAnnualCostAvoidanceValid() throws OseeCoreException; - public Result isWorldViewDeadlineAlerting() throws OseeCoreException; + Result isWorldViewDeadlineAlerting() throws OseeCoreException; - public Result isWorldViewManDaysNeededValid() throws OseeCoreException; + Result isWorldViewManDaysNeededValid() throws OseeCoreException; - public Result isWorldViewRemainHoursValid() throws OseeCoreException; + Result isWorldViewRemainHoursValid() throws OseeCoreException; - public String getWorldViewNumberOfReviewIssueDefects() throws OseeCoreException; + String getWorldViewNumberOfReviewIssueDefects() throws OseeCoreException; - public String getWorldViewNumberOfReviewMajorDefects() throws OseeCoreException; + String getWorldViewNumberOfReviewMajorDefects() throws OseeCoreException; - public String getWorldViewNumberOfReviewMinorDefects() throws OseeCoreException; + String getWorldViewNumberOfReviewMinorDefects() throws OseeCoreException; - public String getWorldViewActionsIntiatingWorkflow() throws OseeCoreException; + String getWorldViewActionsIntiatingWorkflow() throws OseeCoreException; } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/WorldComposite.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/WorldComposite.java index a4ac2bc10e4..89694e118ba 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/WorldComposite.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/WorldComposite.java @@ -23,9 +23,10 @@ import org.eclipse.nebula.widgets.xviewer.IXViewerFactory; import org.eclipse.nebula.widgets.xviewer.customize.CustomizeData; import org.eclipse.osee.ats.actions.OpenNewAtsWorldEditorAction.IOpenNewAtsWorldEditorHandler; import org.eclipse.osee.ats.actions.OpenNewAtsWorldEditorSelectedAction.IOpenNewAtsWorldEditorSelectedHandler; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.artifact.ActionArtifact; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; import org.eclipse.osee.ats.internal.AtsPlugin; +import org.eclipse.osee.ats.util.AtsUtil; import org.eclipse.osee.ats.world.search.WorldSearchItem; import org.eclipse.osee.ats.world.search.WorldSearchItem.SearchType; import org.eclipse.osee.framework.core.exception.OseeCoreException; @@ -103,9 +104,9 @@ public class WorldComposite extends ScrolledComposite implements IWorldViewerEve if (artifact instanceof ActionArtifact) { artifact = ((ActionArtifact) artifact).getTeamWorkFlowArtifacts().iterator().next(); } - return ((StateMachineArtifact) artifact).getManHrsPerDayPreference(); + return ((AbstractWorkflowArtifact) artifact).getManHrsPerDayPreference(); } - return StateMachineArtifact.DEFAULT_HOURS_PER_WORK_DAY; + return AtsUtil.DEFAULT_HOURS_PER_WORK_DAY; } public void setCustomizeData(CustomizeData customizeData) { diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/WorldContentProvider.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/WorldContentProvider.java index 22aa3a83c1d..27c7e000ef2 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/WorldContentProvider.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/WorldContentProvider.java @@ -20,15 +20,16 @@ import java.util.Set; import java.util.logging.Level; import org.eclipse.jface.viewers.ITreeContentProvider; import org.eclipse.jface.viewers.Viewer; +import org.eclipse.osee.ats.artifact.AbstractReviewArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.artifact.ActionArtifact; import org.eclipse.osee.ats.artifact.GoalArtifact; -import org.eclipse.osee.ats.artifact.ReviewSMArtifact; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; import org.eclipse.osee.ats.artifact.TaskArtifact; import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.ats.util.AtsRelationTypes; import org.eclipse.osee.ats.util.widgets.ReviewManager; +import org.eclipse.osee.framework.core.enums.IRelationEnumeration; import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.logging.OseeLog; import org.eclipse.osee.framework.skynet.core.artifact.Artifact; @@ -90,8 +91,8 @@ public class WorldContentProvider implements ITreeContentProvider { relatedArts.addAll(arts); return arts.toArray(); } - if (artifact instanceof ReviewSMArtifact) { - ReviewSMArtifact reviewArt = (ReviewSMArtifact) artifact; + if (artifact instanceof AbstractReviewArtifact) { + AbstractReviewArtifact reviewArt = (AbstractReviewArtifact) artifact; List<Artifact> arts = new ArrayList<Artifact>(); arts.addAll(reviewArt.getTaskArtifactsSorted()); relatedArts.addAll(arts); @@ -118,8 +119,8 @@ public class WorldContentProvider implements ITreeContentProvider { if (artifact instanceof TaskArtifact) { return ((TaskArtifact) artifact).getParentSMA(); } - if (artifact instanceof ReviewSMArtifact) { - return ((ReviewSMArtifact) artifact).getParentSMA(); + if (artifact instanceof AbstractReviewArtifact) { + return ((AbstractReviewArtifact) artifact).getParentSMA(); } if (artifact instanceof GoalArtifact) { return ((GoalArtifact) artifact).getParentSMA(); @@ -145,9 +146,9 @@ public class WorldContentProvider implements ITreeContentProvider { if (element instanceof ActionArtifact) { return true; } - if (element instanceof StateMachineArtifact) { + if (element instanceof AbstractWorkflowArtifact) { try { - return ((StateMachineArtifact) element).hasAtsWorldChildren(); + return hasAtsWorldChildren((AbstractWorkflowArtifact) element); } catch (Exception ex) { // do nothing } @@ -155,6 +156,18 @@ public class WorldContentProvider implements ITreeContentProvider { return true; } + private boolean hasAtsWorldChildren(AbstractWorkflowArtifact workflow) throws OseeCoreException { + if (workflow instanceof TaskArtifact) { + return false; + } + for (IRelationEnumeration iRelationEnumeration : workflow.getAtsWorldRelations()) { + if (workflow.getRelatedArtifactsCount(iRelationEnumeration) > 0) { + return true; + } + } + return false; + } + @Override public Object[] getElements(Object inputElement) { if (inputElement instanceof String) { diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/WorldEditor.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/WorldEditor.java index 0d5bad89dac..4e66e39829f 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/WorldEditor.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/WorldEditor.java @@ -16,7 +16,7 @@ import java.util.List; import java.util.logging.Level; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.jface.action.Action; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.artifact.VersionArtifact; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.ats.util.AtsUtil; @@ -49,7 +49,6 @@ import org.eclipse.ui.part.MultiPageEditorPart; */ public class WorldEditor extends FormEditor implements IWorldEditor, IDirtiableEditor, IAtsMetricsProvider, IActionable { public static final String EDITOR_ID = "org.eclipse.osee.ats.world.WorldEditor"; - private int mainPageIndex, metricsPageIndex; private WorldXWidgetActionPage worldXWidgetActionPage; public static final String HELP_CONTEXT_ID = "atsWorldView"; public static int TITLE_MAX_LENGTH = 80; @@ -152,9 +151,9 @@ public class WorldEditor extends FormEditor implements IWorldEditor, IDirtiableE createMainTab(); createMetricsTab(); + setActivePage(0); setPartName(provider.getSelectedName(SearchType.Search)); - setActivePage(mainPageIndex); // Until WorldEditor has different help, just use WorldView's help HelpUtil.setHelp(worldXWidgetActionPage.getWorldComposite().getControl(), HELP_CONTEXT_ID, @@ -199,14 +198,14 @@ public class WorldEditor extends FormEditor implements IWorldEditor, IDirtiableE private void createMainTab() throws PartInitException { worldXWidgetActionPage = new WorldXWidgetActionPage(this); - mainPageIndex = addPage(worldXWidgetActionPage); + addPage(worldXWidgetActionPage); } private void createMetricsTab() { Composite comp = AtsUtil.createCommonPageComposite(getContainer()); AtsUtil.createCommonToolBar(comp); new AtsMetricsComposite(this, comp, SWT.NONE); - metricsPageIndex = addPage(comp); + int metricsPageIndex = addPage(comp); setPageText(metricsPageIndex, "Metrics"); } @@ -226,9 +225,9 @@ public class WorldEditor extends FormEditor implements IWorldEditor, IDirtiableE return verArt; } for (Artifact artifact : getLoadedArtifacts()) { - if (artifact instanceof StateMachineArtifact) { - if (((StateMachineArtifact) artifact).getWorldViewTargetedVersion() != null) { - return ((StateMachineArtifact) artifact).getWorldViewTargetedVersion(); + if (artifact instanceof AbstractWorkflowArtifact) { + if (((AbstractWorkflowArtifact) artifact).getWorldViewTargetedVersion() != null) { + return ((AbstractWorkflowArtifact) artifact).getWorldViewTargetedVersion(); } } } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/WorldLabelProvider.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/WorldLabelProvider.java index 64e13c2233f..786bc85f568 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/WorldLabelProvider.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/WorldLabelProvider.java @@ -19,6 +19,7 @@ import org.eclipse.osee.ats.artifact.GoalArtifact; import org.eclipse.osee.ats.artifact.TaskArtifact; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.ats.util.AtsUtil; +import org.eclipse.osee.ats.util.GoalManager; import org.eclipse.osee.ats.util.widgets.dialog.TaskResOptionDefinition; import org.eclipse.osee.framework.logging.OseeLog; import org.eclipse.osee.framework.skynet.core.artifact.Artifact; @@ -251,7 +252,7 @@ public class WorldLabelProvider extends XViewerLabelProvider { } if (xCol.equals(WorldXViewerFactory.Goal_Order)) { if (parentGoalArtifact != null) { - return GoalArtifact.getGoalOrder(parentGoalArtifact, art); + return GoalManager.getGoalOrder(parentGoalArtifact, art); } return wva.getWorldViewGoalOrder(); } 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 d79850739bc..db9f0998fc9 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 @@ -40,13 +40,12 @@ import org.eclipse.osee.ats.actions.OpenInArtifactEditorAction; import org.eclipse.osee.ats.actions.OpenInAtsWorkflowEditor; import org.eclipse.osee.ats.actions.OpenInMassEditorAction; import org.eclipse.osee.ats.actions.SubscribedAction; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.artifact.ActionArtifact; import org.eclipse.osee.ats.artifact.AtsAttributeTypes; import org.eclipse.osee.ats.artifact.GoalArtifact; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; import org.eclipse.osee.ats.artifact.TaskArtifact; import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact; -import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact.DefaultTeamState; import org.eclipse.osee.ats.artifact.VersionArtifact.VersionReleaseType; import org.eclipse.osee.ats.editor.SMAPromptChangeStatus; import org.eclipse.osee.ats.goal.GoalXViewerFactory; @@ -57,6 +56,8 @@ import org.eclipse.osee.ats.task.TaskXViewer; import org.eclipse.osee.ats.util.ArtifactEmailWizard; import org.eclipse.osee.ats.util.AtsArtifactTypes; import org.eclipse.osee.ats.util.AtsUtil; +import org.eclipse.osee.ats.util.DefaultTeamState; +import org.eclipse.osee.ats.util.GoalManager; import org.eclipse.osee.ats.util.PromptChangeUtil; import org.eclipse.osee.ats.util.xviewer.RelatedToStateColumn; import org.eclipse.osee.ats.util.xviewer.column.XViewerAtsAttributeColumn; @@ -223,7 +224,7 @@ public class WorldXViewer extends XViewer implements ISelectedAtsArtifacts { @Override public void run() { try { - Set<StateMachineArtifact> artifacts = getSelectedSMAArtifacts(); + Set<AbstractWorkflowArtifact> artifacts = getSelectedSMAArtifacts(); if (PromptChangeUtil.promptChangeAssignees(artifacts, false)) { Artifacts.persistInTransaction(artifacts); update(getSelectedArtifactItems().toArray(), null); @@ -332,11 +333,11 @@ public class WorldXViewer extends XViewer implements ISelectedAtsArtifacts { public void handleColumnMultiEdit(TreeColumn treeColumn, Collection<TreeItem> treeItems, final boolean persist) { if (treeColumn.getData().equals(WorldXViewerFactory.Groups_Col)) { try { - Set<StateMachineArtifact> smas = new HashSet<StateMachineArtifact>(); + Set<AbstractWorkflowArtifact> smas = new HashSet<AbstractWorkflowArtifact>(); for (TreeItem item : treeItems) { Artifact art = (Artifact) item.getData(); if (art instanceof TeamWorkFlowArtifact) { - smas.add((StateMachineArtifact) art); + smas.add((AbstractWorkflowArtifact) art); } } PromptChangeUtil.promptChangeGroups(smas, true); @@ -346,11 +347,11 @@ public class WorldXViewer extends XViewer implements ISelectedAtsArtifacts { } } else if (treeColumn.getData().equals(WorldXViewerFactory.Goals_Col)) { try { - Set<StateMachineArtifact> smas = new HashSet<StateMachineArtifact>(); + Set<AbstractWorkflowArtifact> smas = new HashSet<AbstractWorkflowArtifact>(); for (TreeItem item : treeItems) { Artifact art = (Artifact) item.getData(); - if (art instanceof StateMachineArtifact) { - smas.add((StateMachineArtifact) art); + if (art instanceof AbstractWorkflowArtifact) { + smas.add((AbstractWorkflowArtifact) art); } } PromptChangeUtil.promptChangeGoals(smas, true); @@ -490,20 +491,20 @@ public class WorldXViewer extends XViewer implements ISelectedAtsArtifacts { } } if (art != null) { - ArtifactEmailWizard ew = new ArtifactEmailWizard((StateMachineArtifact) art); + ArtifactEmailWizard ew = new ArtifactEmailWizard((AbstractWorkflowArtifact) art); WizardDialog dialog = new WizardDialog(Displays.getActiveShell(), ew); dialog.create(); dialog.open(); } } - public StateMachineArtifact getSelectedSMA() { + public AbstractWorkflowArtifact getSelectedSMA() { Object obj = null; if (getSelectedArtifactItems().isEmpty()) { return null; } obj = getTree().getSelection()[0].getData(); - return obj != null && obj instanceof StateMachineArtifact ? (StateMachineArtifact) obj : null; + return obj != null && obj instanceof AbstractWorkflowArtifact ? (AbstractWorkflowArtifact) obj : null; } public void updateEditMenuActions() { @@ -713,14 +714,14 @@ public class WorldXViewer extends XViewer implements ISelectedAtsArtifacts { * @return all selected Workflow and any workflow that have Actions with single workflow */ @Override - public Set<StateMachineArtifact> getSelectedSMAArtifacts() { - Set<StateMachineArtifact> smaArts = new HashSet<StateMachineArtifact>(); + public Set<AbstractWorkflowArtifact> getSelectedSMAArtifacts() { + Set<AbstractWorkflowArtifact> smaArts = new HashSet<AbstractWorkflowArtifact>(); try { Iterator<?> i = ((IStructuredSelection) getSelection()).iterator(); while (i.hasNext()) { Object obj = i.next(); - if (obj instanceof StateMachineArtifact) { - smaArts.add((StateMachineArtifact) obj); + if (obj instanceof AbstractWorkflowArtifact) { + smaArts.add((AbstractWorkflowArtifact) obj); } else if (obj instanceof ActionArtifact) { smaArts.addAll(((ActionArtifact) obj).getTeamWorkFlowArtifacts()); } @@ -852,7 +853,7 @@ public class WorldXViewer extends XViewer implements ISelectedAtsArtifacts { return false; } } - StateMachineArtifact sma = (StateMachineArtifact) useArt; + AbstractWorkflowArtifact sma = (AbstractWorkflowArtifact) useArt; boolean modified = false; if (xCol.equals(WorldXViewerFactory.Version_Target_Col)) { modified = @@ -931,9 +932,9 @@ public class WorldXViewer extends XViewer implements ISelectedAtsArtifacts { } GoalArtifact changedGoal = null; if (parentGoalArtifact != null) { - changedGoal = GoalArtifact.promptChangeGoalOrder(parentGoalArtifact, (Artifact) treeItem.getData()); + changedGoal = GoalManager.promptChangeGoalOrder(parentGoalArtifact, (Artifact) treeItem.getData()); } else { - changedGoal = GoalArtifact.promptChangeGoalOrder((Artifact) treeItem.getData()); + changedGoal = GoalManager.promptChangeGoalOrder((Artifact) treeItem.getData()); } if (changedGoal != null) { refresh(changedGoal); @@ -981,8 +982,8 @@ public class WorldXViewer extends XViewer implements ISelectedAtsArtifacts { Iterator<?> i = ((IStructuredSelection) getSelection()).iterator(); while (i.hasNext()) { Object obj = i.next(); - if (obj instanceof StateMachineArtifact) { - artifacts.add((StateMachineArtifact) obj); + if (obj instanceof AbstractWorkflowArtifact) { + artifacts.add((AbstractWorkflowArtifact) obj); } } return artifacts; diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/WorldXViewerEventManager.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/WorldXViewerEventManager.java index dc4901ac9c2..6b19365b70b 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/WorldXViewerEventManager.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/WorldXViewerEventManager.java @@ -15,7 +15,7 @@ import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; import java.util.logging.Level; import org.eclipse.jface.viewers.IContentProvider; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.ats.util.AtsUtil; import org.eclipse.osee.framework.core.exception.OseeCoreException; @@ -121,8 +121,8 @@ public class WorldXViewerEventManager { if (artifact instanceof IWorldViewArtifact) { worldViewer.refresh(artifact); // If parent is loaded and child changed, refresh parent - if (artifact instanceof StateMachineArtifact) { - StateMachineArtifact smaArt = (StateMachineArtifact) artifact; + if (artifact instanceof AbstractWorkflowArtifact) { + AbstractWorkflowArtifact smaArt = (AbstractWorkflowArtifact) artifact; Artifact smaParent = smaArt.getParentAtsArtifact(); if (smaParent instanceof IWorldViewArtifact) { worldViewer.refresh(smaParent); diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/WorldXWidgetActionPage.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/WorldXWidgetActionPage.java index 9b4d90b2b7a..77321d0cfe9 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/WorldXWidgetActionPage.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/WorldXWidgetActionPage.java @@ -27,12 +27,12 @@ import org.eclipse.osee.ats.AtsImage; import org.eclipse.osee.ats.actions.NewAction; import org.eclipse.osee.ats.actions.OpenNewAtsWorldEditorAction; import org.eclipse.osee.ats.actions.OpenNewAtsWorldEditorSelectedAction; +import org.eclipse.osee.ats.artifact.AbstractTaskableArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.artifact.ActionArtifact; -import org.eclipse.osee.ats.artifact.GoalArtifact; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; -import org.eclipse.osee.ats.artifact.TaskableStateMachineArtifact; import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact; import org.eclipse.osee.ats.internal.AtsPlugin; +import org.eclipse.osee.ats.util.GoalManager; import org.eclipse.osee.ats.util.SMAMetrics; import org.eclipse.osee.ats.util.widgets.ReviewManager; import org.eclipse.osee.ats.world.search.WorldSearchItem.SearchType; @@ -450,8 +450,8 @@ public class WorldXWidgetActionPage extends AtsXWidgetActionFormPage { for (Artifact art : artifacts) { if (art instanceof ActionArtifact) { arts.add(art); - } else if (art instanceof StateMachineArtifact) { - Artifact parentArt = ((StateMachineArtifact) art).getParentActionArtifact(); + } else if (art instanceof AbstractWorkflowArtifact) { + Artifact parentArt = ((AbstractWorkflowArtifact) art).getParentActionArtifact(); if (parentArt != null) { arts.add(parentArt); } @@ -479,7 +479,7 @@ public class WorldXWidgetActionPage extends AtsXWidgetActionFormPage { protected IStatus run(IProgressMonitor monitor) { try { final Set<Artifact> goals = new HashSet<Artifact>(); - GoalArtifact.getGoals(artifacts, goals, true); + GoalManager.getGoals(artifacts, goals, true); Displays.ensureInDisplayThread(new Runnable() { @Override public void run() { @@ -505,8 +505,8 @@ public class WorldXWidgetActionPage extends AtsXWidgetActionFormPage { for (Artifact art : artifacts) { if (art instanceof ActionArtifact) { arts.addAll(((ActionArtifact) art).getTeamWorkFlowArtifacts()); - } else if (art instanceof StateMachineArtifact) { - Artifact parentArt = ((StateMachineArtifact) art).getParentTeamWorkflow(); + } else if (art instanceof AbstractWorkflowArtifact) { + Artifact parentArt = ((AbstractWorkflowArtifact) art).getParentTeamWorkflow(); if (parentArt != null) { arts.add(parentArt); } @@ -539,8 +539,8 @@ public class WorldXWidgetActionPage extends AtsXWidgetActionFormPage { for (TeamWorkFlowArtifact team : ((ActionArtifact) art).getTeamWorkFlowArtifacts()) { arts.addAll(team.getTaskArtifacts()); } - } else if (art instanceof TaskableStateMachineArtifact) { - arts.addAll(((TaskableStateMachineArtifact) art).getTaskArtifacts()); + } else if (art instanceof AbstractTaskableArtifact) { + arts.addAll(((AbstractTaskableArtifact) art).getTaskArtifacts()); } } Displays.ensureInDisplayThread(new Runnable() { diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/search/ActionableItemWorldSearchItem.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/search/ActionableItemWorldSearchItem.java index 9a28ed9db29..2e496c38939 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/search/ActionableItemWorldSearchItem.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/search/ActionableItemWorldSearchItem.java @@ -17,14 +17,14 @@ import java.util.HashSet; import java.util.List; import java.util.Set; import org.eclipse.osee.ats.AtsImage; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.artifact.ActionArtifact; import org.eclipse.osee.ats.artifact.ActionableItemArtifact; import org.eclipse.osee.ats.artifact.AtsAttributeTypes; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; -import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact.DefaultTeamState; import org.eclipse.osee.ats.config.AtsCacheManager; import org.eclipse.osee.ats.util.AtsArtifactTypes; import org.eclipse.osee.ats.util.AtsUtil; +import org.eclipse.osee.ats.util.DefaultTeamState; import org.eclipse.osee.ats.util.widgets.dialog.ActionActionableItemListDialog; import org.eclipse.osee.framework.core.enums.Active; import org.eclipse.osee.framework.core.exception.OseeCoreException; @@ -152,8 +152,8 @@ public class ActionableItemWorldSearchItem extends WorldUISearchItem { for (Artifact art : artifacts) { if (art instanceof ActionArtifact) { arts.add(art); - } else if (art instanceof StateMachineArtifact) { - Artifact parentArt = ((StateMachineArtifact) art).getParentActionArtifact(); + } else if (art instanceof AbstractWorkflowArtifact) { + Artifact parentArt = ((AbstractWorkflowArtifact) art).getParentActionArtifact(); if (parentArt != null) { arts.add(parentArt); } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/search/GoalSearchItem.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/search/GoalSearchItem.java index e7455c6215b..2067a0ffee4 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/search/GoalSearchItem.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/search/GoalSearchItem.java @@ -18,14 +18,14 @@ import java.util.HashSet; import java.util.List; import java.util.Set; import org.eclipse.osee.ats.AtsImage; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.artifact.AtsAttributeTypes; -import org.eclipse.osee.ats.artifact.GoalArtifact; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; import org.eclipse.osee.ats.artifact.TeamDefinitionArtifact; -import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact.DefaultTeamState; import org.eclipse.osee.ats.config.AtsCacheManager; import org.eclipse.osee.ats.util.AtsArtifactTypes; import org.eclipse.osee.ats.util.AtsUtil; +import org.eclipse.osee.ats.util.DefaultTeamState; +import org.eclipse.osee.ats.util.GoalManager; import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.jdk.core.util.Strings; import org.eclipse.osee.framework.skynet.core.User; @@ -136,8 +136,8 @@ public class GoalSearchItem extends WorldUISearchItem { Set<Artifact> resultGoalArtifacts = new HashSet<Artifact>(); for (Artifact art : artifacts) { - for (Artifact goalArt : GoalArtifact.getGoals(art, true)) { - StateMachineArtifact sma = (StateMachineArtifact) goalArt; + for (Artifact goalArt : GoalManager.getGoals(art, true)) { + AbstractWorkflowArtifact sma = (AbstractWorkflowArtifact) goalArt; // don't include if userArt specified and userArt not assignee if (userArt != null && !sma.getStateMgr().getAssignees().contains(userArt)) { continue; diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/search/MyGoalWorkflowItem.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/search/MyGoalWorkflowItem.java index e4a0d1eb2f0..173face0514 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/search/MyGoalWorkflowItem.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/search/MyGoalWorkflowItem.java @@ -18,7 +18,7 @@ import java.util.Set; import org.eclipse.osee.ats.AtsImage; import org.eclipse.osee.ats.artifact.AtsAttributeTypes; import org.eclipse.osee.ats.artifact.GoalArtifact; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.util.AtsRelationTypes; import org.eclipse.osee.ats.util.AtsUtil; import org.eclipse.osee.framework.core.exception.OseeCoreException; @@ -68,7 +68,7 @@ public class MyGoalWorkflowItem extends UserSearchItem { List<Artifact> artifactsToReturn = new ArrayList<Artifact>(artifacts.size()); for (Artifact artifact : artifacts) { if (artifact instanceof GoalArtifact) { - if (goalSearchState == GoalSearchState.All || goalSearchState == GoalSearchState.InWork && !((StateMachineArtifact) artifact).isCancelledOrCompleted()) { + if (goalSearchState == GoalSearchState.All || goalSearchState == GoalSearchState.InWork && !((AbstractWorkflowArtifact) artifact).isCancelledOrCompleted()) { artifactsToReturn.add(artifact); } } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/search/MyReviewWorkflowItem.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/search/MyReviewWorkflowItem.java index beca16ba159..52ed23c5dc9 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/search/MyReviewWorkflowItem.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/search/MyReviewWorkflowItem.java @@ -17,8 +17,8 @@ import java.util.List; import java.util.Set; import org.eclipse.osee.ats.AtsImage; import org.eclipse.osee.ats.artifact.AtsAttributeTypes; -import org.eclipse.osee.ats.artifact.ReviewSMArtifact; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractReviewArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.util.AtsRelationTypes; import org.eclipse.osee.ats.util.AtsUtil; import org.eclipse.osee.framework.core.exception.OseeCoreException; @@ -67,8 +67,8 @@ public class MyReviewWorkflowItem extends UserSearchItem { List<Artifact> artifactsToReturn = new ArrayList<Artifact>(artifacts.size()); for (Artifact artifact : artifacts) { - if (artifact instanceof ReviewSMArtifact) { - if (reviewState == ReviewState.All || reviewState == ReviewState.InWork && !((StateMachineArtifact) artifact).isCancelledOrCompleted()) { + if (artifact instanceof AbstractReviewArtifact) { + if (reviewState == ReviewState.All || reviewState == ReviewState.InWork && !((AbstractWorkflowArtifact) artifact).isCancelledOrCompleted()) { artifactsToReturn.add(artifact); } } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/search/MyWorldSearchItem.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/search/MyWorldSearchItem.java index 5a25cf728cf..7cea791092e 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/search/MyWorldSearchItem.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/search/MyWorldSearchItem.java @@ -15,7 +15,7 @@ import java.util.Collection; import java.util.List; import java.util.Set; import org.eclipse.osee.ats.AtsImage; -import org.eclipse.osee.ats.artifact.ReviewSMArtifact; +import org.eclipse.osee.ats.artifact.AbstractReviewArtifact; import org.eclipse.osee.ats.artifact.TaskArtifact; import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact; import org.eclipse.osee.ats.util.AtsUtil; @@ -50,7 +50,7 @@ public class MyWorldSearchItem extends UserSearchItem { List<Artifact> artifactsToReturn = new ArrayList<Artifact>(assigned.size()); for (Artifact artifact : assigned) { - if (artifact instanceof TeamWorkFlowArtifact || artifact instanceof ReviewSMArtifact) { + if (artifact instanceof TeamWorkFlowArtifact || artifact instanceof AbstractReviewArtifact) { artifactsToReturn.add(artifact); } if (artifact instanceof TaskArtifact) { diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/search/ShowOpenWorkflowsByArtifactType.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/search/ShowOpenWorkflowsByArtifactType.java index 50e621b42f5..6a04ecedd1a 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/search/ShowOpenWorkflowsByArtifactType.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/search/ShowOpenWorkflowsByArtifactType.java @@ -14,9 +14,9 @@ import java.util.ArrayList; import java.util.Collection; import java.util.List; import org.eclipse.osee.ats.artifact.AtsAttributeTypes; -import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact.DefaultTeamState; import org.eclipse.osee.ats.util.AtsRelationTypes; import org.eclipse.osee.ats.util.AtsUtil; +import org.eclipse.osee.ats.util.DefaultTeamState; import org.eclipse.osee.framework.core.data.IArtifactType; import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.skynet.core.artifact.Artifact; diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/search/TaskSearchWorldSearchItem.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/search/TaskSearchWorldSearchItem.java index b9170d36386..6f47c0661fd 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/search/TaskSearchWorldSearchItem.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/search/TaskSearchWorldSearchItem.java @@ -17,7 +17,7 @@ import java.util.List; import java.util.Set; import org.eclipse.nebula.widgets.xviewer.customize.CustomizeData; import org.eclipse.osee.ats.artifact.TaskArtifact; -import org.eclipse.osee.ats.artifact.TaskableStateMachineArtifact; +import org.eclipse.osee.ats.artifact.AbstractTaskableArtifact; import org.eclipse.osee.ats.artifact.TeamDefinitionArtifact; import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact; import org.eclipse.osee.ats.artifact.VersionArtifact; @@ -123,8 +123,8 @@ public class TaskSearchWorldSearchItem extends TaskEditorParameterSearchItem { for (Artifact art : groupArt.getRelatedArtifacts(CoreRelationTypes.Universal_Grouping__Members)) { if (art instanceof TaskArtifact) { taskArts.add((TaskArtifact) art); - } else if (art instanceof TaskableStateMachineArtifact) { - taskArts.addAll(((TaskableStateMachineArtifact) art).getTaskArtifacts()); + } else if (art instanceof AbstractTaskableArtifact) { + taskArts.addAll(((AbstractTaskableArtifact) art).getTaskArtifacts()); } } } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/search/TeamWorldSearchItem.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/search/TeamWorldSearchItem.java index bc48c512815..8cfee0e63f8 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/search/TeamWorldSearchItem.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/search/TeamWorldSearchItem.java @@ -18,16 +18,16 @@ import java.util.HashSet; import java.util.List; import java.util.Set; import org.eclipse.osee.ats.AtsImage; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.artifact.AtsAttributeTypes; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; import org.eclipse.osee.ats.artifact.TeamDefinitionArtifact; import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact; -import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact.DefaultTeamState; import org.eclipse.osee.ats.artifact.VersionArtifact; import org.eclipse.osee.ats.config.AtsCacheManager; import org.eclipse.osee.ats.util.AtsArtifactTypes; import org.eclipse.osee.ats.util.AtsRelationTypes; import org.eclipse.osee.ats.util.AtsUtil; +import org.eclipse.osee.ats.util.DefaultTeamState; import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.skynet.core.User; import org.eclipse.osee.framework.skynet.core.artifact.Artifact; @@ -167,7 +167,7 @@ public class TeamWorldSearchItem extends WorldUISearchItem { Set<Artifact> resultSet = new HashSet<Artifact>(); for (Artifact art : artifacts) { - StateMachineArtifact sma = (StateMachineArtifact) art; + AbstractWorkflowArtifact sma = (AbstractWorkflowArtifact) art; // don't include if userArt specified and userArt not assignee if (userArt != null && !sma.getStateMgr().getAssignees().contains(userArt)) { continue; diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/search/UserWorldSearchItem.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/search/UserWorldSearchItem.java index c62d1c50717..f0db47fee8e 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/search/UserWorldSearchItem.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/search/UserWorldSearchItem.java @@ -14,16 +14,16 @@ import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; import java.util.Set; +import org.eclipse.osee.ats.artifact.AbstractReviewArtifact; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.artifact.AtsAttributeTypes; -import org.eclipse.osee.ats.artifact.ReviewSMArtifact; -import org.eclipse.osee.ats.artifact.StateMachineArtifact; import org.eclipse.osee.ats.artifact.TaskArtifact; import org.eclipse.osee.ats.artifact.TeamDefinitionArtifact; import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact; -import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact.DefaultTeamState; import org.eclipse.osee.ats.artifact.VersionArtifact; import org.eclipse.osee.ats.util.AtsRelationTypes; import org.eclipse.osee.ats.util.AtsUtil; +import org.eclipse.osee.ats.util.DefaultTeamState; import org.eclipse.osee.ats.util.SMAUtil; import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.jdk.core.util.Collections; @@ -60,8 +60,8 @@ public class UserWorldSearchItem { this.options = Collections.getAggregate(userSearchOption); } - public Collection<StateMachineArtifact> performSearch() throws OseeCoreException { - Set<StateMachineArtifact> searchArts = new HashSet<StateMachineArtifact>(); + public Collection<AbstractWorkflowArtifact> performSearch() throws OseeCoreException { + Set<AbstractWorkflowArtifact> searchArts = new HashSet<AbstractWorkflowArtifact>(); if (options.contains(UserSearchOption.Originator)) { searchArts.addAll(getOriginatorArtifacts()); } else if (options.contains(UserSearchOption.Subscribed)) { @@ -69,7 +69,7 @@ public class UserWorldSearchItem { } else if (options.contains(UserSearchOption.Favorites)) { searchArts.addAll(getFavoritesArtifacts()); } else if (options.contains(UserSearchOption.Assignee)) { - searchArts.addAll(Collections.castMatching(StateMachineArtifact.class, AtsUtil.getAssigned(user))); + searchArts.addAll(Collections.castMatching(AbstractWorkflowArtifact.class, AtsUtil.getAssigned(user))); // If include cancelled or completed, need to perform extra search // Note: Don't need to do this for Originator, Subscribed or Favorites, cause it does completed canceled in it's own searches if (options.contains(UserSearchOption.IncludeCancelled) || options.contains(UserSearchOption.IncludeCompleted)) { @@ -80,7 +80,7 @@ public class UserWorldSearchItem { Collection<Class<?>> filterClasses = new ArrayList<Class<?>>(); if (!options.contains(UserSearchOption.IncludeReviews)) { - filterClasses.add(ReviewSMArtifact.class); + filterClasses.add(AbstractReviewArtifact.class); } if (!options.contains(UserSearchOption.IncludeTeamWorkflows)) { filterClasses.add(TeamWorkFlowArtifact.class); @@ -89,7 +89,7 @@ public class UserWorldSearchItem { filterClasses.add(TaskArtifact.class); } - Collection<StateMachineArtifact> filteredArts = SMAUtil.filterOutTypes(searchArts, filterClasses); + Collection<AbstractWorkflowArtifact> filteredArts = SMAUtil.filterOutTypes(searchArts, filterClasses); if (teamDefs != null && teamDefs.size() > 0) { filteredArts = SMAUtil.getTeamDefinitionWorkflows(filteredArts, teamDefs); @@ -117,13 +117,13 @@ public class UserWorldSearchItem { return filteredArts; } - private Collection<StateMachineArtifact> getOriginatorArtifacts() throws OseeCoreException { - Collection<StateMachineArtifact> originators = new ArrayList<StateMachineArtifact>(); - Collection<StateMachineArtifact> artifacts = + private Collection<AbstractWorkflowArtifact> getOriginatorArtifacts() throws OseeCoreException { + Collection<AbstractWorkflowArtifact> originators = new ArrayList<AbstractWorkflowArtifact>(); + Collection<AbstractWorkflowArtifact> artifacts = Collections.castAll(ArtifactQuery.getArtifactListFromAttribute(AtsAttributeTypes.Log, "%type=\"Originated\" userId=\"" + user.getUserId() + "\"%", AtsUtil.getAtsBranch())); // omit historical originators; list current originators - for (StateMachineArtifact art : artifacts) { + for (AbstractWorkflowArtifact art : artifacts) { if (art.getWorldViewOriginator().equals(user.getName())) { originators.add(art); } @@ -131,12 +131,12 @@ public class UserWorldSearchItem { return originators; } - private Collection<StateMachineArtifact> getSubscribedArtifacts() throws OseeCoreException { - return user.getRelatedArtifactsOfType(AtsRelationTypes.SubscribedUser_Artifact, StateMachineArtifact.class); + private Collection<AbstractWorkflowArtifact> getSubscribedArtifacts() throws OseeCoreException { + return user.getRelatedArtifactsOfType(AtsRelationTypes.SubscribedUser_Artifact, AbstractWorkflowArtifact.class); } - private Collection<StateMachineArtifact> getFavoritesArtifacts() throws OseeCoreException { - return user.getRelatedArtifactsOfType(AtsRelationTypes.FavoriteUser_Artifact, StateMachineArtifact.class); + private Collection<AbstractWorkflowArtifact> getFavoritesArtifacts() throws OseeCoreException { + return user.getRelatedArtifactsOfType(AtsRelationTypes.FavoriteUser_Artifact, AbstractWorkflowArtifact.class); } } |