diff options
author | donald.g.dunne | 2013-11-14 16:47:40 +0000 |
---|---|---|
committer | Roberto E. Escobar | 2013-11-25 23:45:45 +0000 |
commit | 2df533bcff7abd33fb59b17a6ffcbcea96b259d8 (patch) | |
tree | 983a8cceb9f986d7b098e081f6644c1b33fa667a /plugins/org.eclipse.osee.ats.core.client | |
parent | 36fca032d160199d6b964ed5046015ae7fb83f99 (diff) | |
download | org.eclipse.osee-2df533bcff7abd33fb59b17a6ffcbcea96b259d8.tar.gz org.eclipse.osee-2df533bcff7abd33fb59b17a6ffcbcea96b259d8.tar.xz org.eclipse.osee-2df533bcff7abd33fb59b17a6ffcbcea96b259d8.zip |
feature[ats_S5JDQ]: Implement ATS transition on server
Change-Id: I4f5293e0cd7f28f3a035dcfe3852c926dc46d3ef
Diffstat (limited to 'plugins/org.eclipse.osee.ats.core.client')
37 files changed, 290 insertions, 868 deletions
diff --git a/plugins/org.eclipse.osee.ats.core.client/META-INF/MANIFEST.MF b/plugins/org.eclipse.osee.ats.core.client/META-INF/MANIFEST.MF index c907ea660ee..acd51966196 100644 --- a/plugins/org.eclipse.osee.ats.core.client/META-INF/MANIFEST.MF +++ b/plugins/org.eclipse.osee.ats.core.client/META-INF/MANIFEST.MF @@ -103,7 +103,6 @@ Export-Package: org.eclipse.osee.ats.core.client, org.eclipse.osee.ats.core.client.util, org.eclipse.osee.ats.core.client.validator, org.eclipse.osee.ats.core.client.workflow, - org.eclipse.osee.ats.core.client.workflow.log, org.eclipse.osee.ats.core.client.workflow.note, org.eclipse.osee.ats.core.client.workflow.stateitem, org.eclipse.osee.ats.core.client.workflow.transition diff --git a/plugins/org.eclipse.osee.ats.core.client/OSGI-INF/ats.notify.service.xml b/plugins/org.eclipse.osee.ats.core.client/OSGI-INF/ats.notify.service.xml index bb016d7ea93..20a39865c1a 100644 --- a/plugins/org.eclipse.osee.ats.core.client/OSGI-INF/ats.notify.service.xml +++ b/plugins/org.eclipse.osee.ats.core.client/OSGI-INF/ats.notify.service.xml @@ -2,6 +2,7 @@ <scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.eclipse.osee.ats.core.client.internal.notify.AtsNotificationServiceImpl"> <implementation class="org.eclipse.osee.ats.core.client.internal.notify.AtsNotificationServiceImpl"/> <service> + <provide interface="org.eclipse.osee.ats.api.notify.IAtsNotificationServiceProvider"/> <provide interface="org.eclipse.osee.ats.api.notify.IAtsNotificationService"/> </service> </scr:component> diff --git a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/IAtsClient.java b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/IAtsClient.java index 65c2ebaf83e..24f0d7a635d 100644 --- a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/IAtsClient.java +++ b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/IAtsClient.java @@ -27,6 +27,7 @@ import org.eclipse.osee.ats.api.workflow.IAtsBranchService; import org.eclipse.osee.ats.api.workflow.IAtsBranchServiceProvider; import org.eclipse.osee.ats.api.workflow.IAtsWorkItemService; import org.eclipse.osee.ats.api.workflow.IAtsWorkItemServiceProvider; +import org.eclipse.osee.ats.core.client.internal.IArtifactProvider; import org.eclipse.osee.ats.core.client.internal.IAtsWorkItemArtifactServiceProvider; import org.eclipse.osee.ats.core.client.workflow.AbstractWorkflowArtifact; import org.eclipse.osee.ats.core.config.IActionableItemFactory; @@ -40,7 +41,7 @@ import org.eclipse.osee.framework.skynet.core.artifact.Artifact; /** * @author Donald G. Dunne */ -public interface IAtsClient extends IAttributeResolverProvider, IAtsReviewServiceProvider, IAtsBranchServiceProvider, IAtsWorkItemArtifactServiceProvider, IAtsWorkItemServiceProvider, IAtsConfigProvider, ITeamDefinitionFactory, IActionableItemFactory, IVersionFactory, IAtsQueryService, IAtsVersionServiceProvider, IAtsEarnedValueServiceProvider { +public interface IAtsClient extends IAttributeResolverProvider, IAtsReviewServiceProvider, IAtsBranchServiceProvider, IAtsWorkItemArtifactServiceProvider, IAtsWorkItemServiceProvider, IAtsConfigProvider, ITeamDefinitionFactory, IActionableItemFactory, IArtifactProvider, IVersionFactory, IAtsQueryService, IAtsVersionServiceProvider, IAtsEarnedValueServiceProvider { <T extends IAtsConfigObject> Artifact storeConfigObject(T configObject, IAtsChangeSet changes) throws OseeCoreException; @@ -51,6 +52,7 @@ public interface IAtsClient extends IAttributeResolverProvider, IAtsReviewServic /** * @return corresponding Artifact or null if not found */ + @Override Artifact getArtifact(IAtsObject atsObject) throws OseeCoreException; AbstractWorkflowArtifact getWorkflowArtifact(IAtsObject atsObject) throws OseeCoreException; diff --git a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/action/ActionArtifact.java b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/action/ActionArtifact.java index 23b2a8cf0e9..e568e8518b9 100644 --- a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/action/ActionArtifact.java +++ b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/action/ActionArtifact.java @@ -77,4 +77,9 @@ public class ActionArtifact extends Artifact implements IAtsAction { setSoleAttributeFromString(AtsAttributeTypes.AtsId, atsId); } + @Override + public Object getStoreObject() { + return this; + } + } diff --git a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/action/ActionManager.java b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/action/ActionManager.java index 637f71ec4c4..d11ba29da80 100644 --- a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/action/ActionManager.java +++ b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/action/ActionManager.java @@ -21,9 +21,9 @@ import org.eclipse.osee.ats.api.data.AtsAttributeTypes; import org.eclipse.osee.ats.api.data.AtsRelationTypes; import org.eclipse.osee.ats.api.team.CreateTeamOption; import org.eclipse.osee.ats.api.team.IAtsTeamDefinition; +import org.eclipse.osee.ats.api.team.ITeamWorkflowProvider; import org.eclipse.osee.ats.api.user.IAtsUser; import org.eclipse.osee.ats.api.util.IAtsChangeSet; -import org.eclipse.osee.ats.core.AtsCore; import org.eclipse.osee.ats.core.client.internal.AtsClientService; import org.eclipse.osee.ats.core.client.notify.AtsNotificationManager; import org.eclipse.osee.ats.core.client.team.TeamWorkFlowArtifact; @@ -31,7 +31,6 @@ import org.eclipse.osee.ats.core.client.team.TeamWorkFlowManager; import org.eclipse.osee.ats.core.client.util.AtsUtilCore; import org.eclipse.osee.ats.core.client.workflow.ChangeType; import org.eclipse.osee.ats.core.client.workflow.ChangeTypeUtil; -import org.eclipse.osee.ats.core.client.workflow.ITeamWorkflowProvider; import org.eclipse.osee.ats.core.config.TeamDefinitions; import org.eclipse.osee.framework.core.data.IArtifactType; import org.eclipse.osee.framework.core.util.Conditions; @@ -79,8 +78,6 @@ public class ActionManager { TeamWorkFlowArtifact teamWf = createTeamWorkflow(actionArt, teamDef, actionableItems, leads, changes, createdDate, createdBy, newActionListener); - - AtsCore.getLogFactory().writeToStore(teamWf); changes.add(teamWf); } diff --git a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/AtsClientImpl.java b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/AtsClientImpl.java index 1066e7f4c71..2014c7e0539 100644 --- a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/AtsClientImpl.java +++ b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/AtsClientImpl.java @@ -24,6 +24,7 @@ import org.eclipse.osee.ats.api.ev.IAtsEarnedValueService; import org.eclipse.osee.ats.api.query.IAtsQuery; import org.eclipse.osee.ats.api.review.IAtsReviewService; import org.eclipse.osee.ats.api.team.IAtsTeamDefinition; +import org.eclipse.osee.ats.api.team.ITeamWorkflowProviders; import org.eclipse.osee.ats.api.user.IAtsUserService; import org.eclipse.osee.ats.api.util.IAtsChangeSet; import org.eclipse.osee.ats.api.version.IAtsVersion; @@ -53,14 +54,11 @@ import org.eclipse.osee.ats.core.client.internal.store.TeamDefinitionArtifactWri import org.eclipse.osee.ats.core.client.internal.store.VersionArtifactReader; import org.eclipse.osee.ats.core.client.internal.store.VersionArtifactWriter; import org.eclipse.osee.ats.core.client.internal.user.AtsUserAdminImpl; -import org.eclipse.osee.ats.core.client.internal.workdef.AtsWorkDefinitionAdminImpl; -import org.eclipse.osee.ats.core.client.internal.workdef.AtsWorkDefinitionCache; import org.eclipse.osee.ats.core.client.internal.workdef.AtsWorkDefinitionCacheProvider; import org.eclipse.osee.ats.core.client.internal.workdef.AtsWorkItemArtifactProviderImpl; import org.eclipse.osee.ats.core.client.internal.workflow.AtsAttributeResolverServiceImpl; import org.eclipse.osee.ats.core.client.internal.workflow.AtsWorkItemServiceImpl; import org.eclipse.osee.ats.core.client.search.AtsArtifactQuery; -import org.eclipse.osee.ats.core.client.team.ITeamWorkflowProviders; import org.eclipse.osee.ats.core.client.team.TeamWorkFlowManager; import org.eclipse.osee.ats.core.client.workflow.AbstractWorkflowArtifact; import org.eclipse.osee.ats.core.client.workflow.AtsBranchServiceImpl; @@ -68,6 +66,9 @@ import org.eclipse.osee.ats.core.config.IActionableItemFactory; import org.eclipse.osee.ats.core.config.IAtsConfig; import org.eclipse.osee.ats.core.config.ITeamDefinitionFactory; import org.eclipse.osee.ats.core.config.IVersionFactory; +import org.eclipse.osee.ats.core.util.CacheProvider; +import org.eclipse.osee.ats.core.workdef.AtsWorkDefinitionAdminImpl; +import org.eclipse.osee.ats.core.workdef.AtsWorkDefinitionCache; import org.eclipse.osee.framework.core.data.IArtifactType; import org.eclipse.osee.framework.core.exception.ArtifactDoesNotExist; import org.eclipse.osee.framework.core.util.Conditions; @@ -154,7 +155,7 @@ public class AtsClientImpl implements IAtsClient { new AtsWorkDefinitionAdminImpl(workDefCacheProvider, workItemService, workDefService, teamWorkflowProvider, attributeResolverService); branchService = new AtsBranchServiceImpl(); - reviewService = new AtsReviewServiceImpl(); + reviewService = new AtsReviewServiceImpl(this); started = true; } @@ -367,13 +368,17 @@ public class AtsClientImpl implements IAtsClient { @Override public Artifact getArtifact(IAtsObject atsObject) throws OseeCoreException { Artifact results = null; - if (atsObject instanceof Artifact) { - results = (Artifact) atsObject; + if (atsObject.getStoreObject() != null) { + results = (Artifact) atsObject.getStoreObject(); } else { - try { - results = AtsArtifactQuery.getArtifactFromId(atsObject.getGuid()); - } catch (ArtifactDoesNotExist ex) { - // do nothing + if (atsObject instanceof Artifact) { + results = (Artifact) atsObject; + } else { + try { + results = AtsArtifactQuery.getArtifactFromId(atsObject.getGuid()); + } catch (ArtifactDoesNotExist ex) { + // do nothing + } } } return results; diff --git a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/CacheProvider.java b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/IArtifactProvider.java index 7b4dab0cb71..105e98c59eb 100644 --- a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/CacheProvider.java +++ b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/IArtifactProvider.java @@ -10,15 +10,14 @@ *******************************************************************************/ package org.eclipse.osee.ats.core.client.internal; +import org.eclipse.osee.ats.api.IAtsObject; import org.eclipse.osee.framework.jdk.core.type.OseeCoreException; +import org.eclipse.osee.framework.skynet.core.artifact.Artifact; /** - * @author Donald G. Dunne + * @author Donald G Dunne */ -public interface CacheProvider<T> { +public interface IArtifactProvider { - T get() throws OseeCoreException; - - void invalidate(); - -}
\ No newline at end of file + Artifact getArtifact(IAtsObject atsObject) throws OseeCoreException; +} diff --git a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/config/AtsConfigCacheProvider.java b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/config/AtsConfigCacheProvider.java index 3835bd3a5be..b628811eb3c 100644 --- a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/config/AtsConfigCacheProvider.java +++ b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/config/AtsConfigCacheProvider.java @@ -12,8 +12,8 @@ package org.eclipse.osee.ats.core.client.internal.config; import java.util.concurrent.Callable; import java.util.concurrent.FutureTask; -import org.eclipse.osee.ats.core.client.internal.CacheProvider; import org.eclipse.osee.ats.core.client.internal.IAtsArtifactStore; +import org.eclipse.osee.ats.core.util.CacheProvider; import org.eclipse.osee.framework.core.data.LazyObject; /** diff --git a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/notify/AtsNotificationServiceImpl.java b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/notify/AtsNotificationServiceImpl.java index 8e7d5b53d58..4380ccfb722 100644 --- a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/notify/AtsNotificationServiceImpl.java +++ b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/notify/AtsNotificationServiceImpl.java @@ -17,6 +17,7 @@ import org.eclipse.osee.ats.api.IAtsWorkItem; import org.eclipse.osee.ats.api.notify.AtsNotificationEvent; import org.eclipse.osee.ats.api.notify.AtsNotifyType; import org.eclipse.osee.ats.api.notify.IAtsNotificationService; +import org.eclipse.osee.ats.api.notify.IAtsNotificationServiceProvider; import org.eclipse.osee.ats.api.user.IAtsUser; import org.eclipse.osee.ats.core.client.internal.AtsClientService; import org.eclipse.osee.ats.core.client.notify.AtsNotificationManager; @@ -28,7 +29,7 @@ import org.eclipse.osee.framework.ui.skynet.notify.OseeNotificationManager; /** * @author Donald G. Dunne */ -public class AtsNotificationServiceImpl implements IAtsNotificationService { +public class AtsNotificationServiceImpl implements IAtsNotificationService, IAtsNotificationServiceProvider { public AtsNotificationServiceImpl() { } @@ -66,4 +67,9 @@ public class AtsNotificationServiceImpl implements IAtsNotificationService { notifyUsers, notifyTypes); } + @Override + public IAtsNotificationService getNotifyService() { + return this; + } + } diff --git a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/review/AtsReviewServiceImpl.java b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/review/AtsReviewServiceImpl.java index 6a22635c435..2800709b2d8 100644 --- a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/review/AtsReviewServiceImpl.java +++ b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/review/AtsReviewServiceImpl.java @@ -13,6 +13,7 @@ package org.eclipse.osee.ats.core.client.internal.review; import java.util.Collection; import java.util.Date; import org.eclipse.osee.ats.api.IAtsWorkItem; +import org.eclipse.osee.ats.api.data.AtsAttributeTypes; import org.eclipse.osee.ats.api.review.IAtsAbstractReview; import org.eclipse.osee.ats.api.review.IAtsDecisionReview; import org.eclipse.osee.ats.api.review.IAtsReviewService; @@ -20,18 +21,32 @@ import org.eclipse.osee.ats.api.user.IAtsUser; import org.eclipse.osee.ats.api.util.IAtsChangeSet; import org.eclipse.osee.ats.api.workdef.ReviewBlockType; import org.eclipse.osee.ats.api.workflow.IAtsTeamWorkflow; +import org.eclipse.osee.ats.core.client.internal.IArtifactProvider; import org.eclipse.osee.ats.core.client.review.AbstractReviewArtifact; import org.eclipse.osee.ats.core.client.review.ReviewManager; import org.eclipse.osee.ats.core.client.review.ValidateReviewManager; import org.eclipse.osee.ats.core.client.team.TeamWorkFlowArtifact; -import org.eclipse.osee.ats.core.client.workflow.AbstractWorkflowArtifact; import org.eclipse.osee.framework.jdk.core.type.OseeCoreException; +/** + * @author Donald G Dunne + */ public class AtsReviewServiceImpl implements IAtsReviewService { + private final IArtifactProvider artifactProvider; + + public AtsReviewServiceImpl(IArtifactProvider artifactProvider) { + this.artifactProvider = artifactProvider; + } + @Override public boolean isValidationReviewRequired(IAtsWorkItem workItem) throws OseeCoreException { - return ((AbstractWorkflowArtifact) workItem).isValidationRequired(); + boolean required = false; + if (workItem.isTeamWorkflow()) { + required = + artifactProvider.getArtifact(workItem).getSoleAttributeValue(AtsAttributeTypes.ValidationRequired, false); + } + return required; } @Override diff --git a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/store/AtsVersionCache.java b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/store/AtsVersionCache.java index af2cdb81338..7c2eca942a6 100644 --- a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/store/AtsVersionCache.java +++ b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/store/AtsVersionCache.java @@ -12,8 +12,8 @@ package org.eclipse.osee.ats.core.client.internal.store; import org.eclipse.osee.ats.api.version.IAtsVersion; import org.eclipse.osee.ats.api.workflow.IAtsTeamWorkflow; -import org.eclipse.osee.ats.core.client.internal.CacheProvider; import org.eclipse.osee.ats.core.client.internal.config.AtsArtifactConfigCache; +import org.eclipse.osee.ats.core.util.CacheProvider; import org.eclipse.osee.framework.jdk.core.type.OseeCoreException; /** diff --git a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/store/AtsVersionServiceImpl.java b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/store/AtsVersionServiceImpl.java index 8fa4d33d691..b3831170e4f 100644 --- a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/store/AtsVersionServiceImpl.java +++ b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/store/AtsVersionServiceImpl.java @@ -22,13 +22,13 @@ import org.eclipse.osee.ats.api.version.IAtsVersion; import org.eclipse.osee.ats.api.workflow.IAtsTeamWorkflow; import org.eclipse.osee.ats.core.client.IAtsVersionAdmin; import org.eclipse.osee.ats.core.client.internal.Activator; -import org.eclipse.osee.ats.core.client.internal.CacheProvider; import org.eclipse.osee.ats.core.client.internal.IAtsArtifactStore; import org.eclipse.osee.ats.core.client.internal.config.AtsArtifactConfigCache; import org.eclipse.osee.ats.core.client.team.TeamWorkFlowArtifact; import org.eclipse.osee.ats.core.client.team.TeamWorkFlowManager; import org.eclipse.osee.ats.core.client.util.AtsUtilCore; import org.eclipse.osee.ats.core.client.workflow.AbstractWorkflowArtifact; +import org.eclipse.osee.ats.core.util.CacheProvider; import org.eclipse.osee.framework.core.exception.ArtifactDoesNotExist; import org.eclipse.osee.framework.jdk.core.type.Identity; import org.eclipse.osee.framework.jdk.core.type.OseeCoreException; diff --git a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/user/AtsUser.java b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/user/AtsUser.java index ac515508598..ed975c4dca3 100644 --- a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/user/AtsUser.java +++ b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/user/AtsUser.java @@ -144,4 +144,9 @@ public class AtsUser implements IAtsUser { return String.format("[%s][%s]", getName(), getGuid()); } + @Override + public Object getStoreObject() { + return user; + } + } diff --git a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/workdef/AtsWorkDefinitionAdminImpl.java b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/workdef/AtsWorkDefinitionAdminImpl.java deleted file mode 100644 index b36eb0aca64..00000000000 --- a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/workdef/AtsWorkDefinitionAdminImpl.java +++ /dev/null @@ -1,424 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2010 Boeing. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Boeing - initial API and implementation - *******************************************************************************/ -package org.eclipse.osee.ats.core.client.internal.workdef; - -import java.util.Collection; -import java.util.List; -import java.util.logging.Level; -import org.eclipse.osee.ats.api.IAtsWorkItem; -import org.eclipse.osee.ats.api.ai.IAtsActionableItem; -import org.eclipse.osee.ats.api.data.AtsAttributeTypes; -import org.eclipse.osee.ats.api.review.IAtsDecisionReview; -import org.eclipse.osee.ats.api.review.IAtsPeerToPeerReview; -import org.eclipse.osee.ats.api.team.IAtsTeamDefinition; -import org.eclipse.osee.ats.api.workdef.IAtsStateDefinition; -import org.eclipse.osee.ats.api.workdef.IAtsWidgetDefinition; -import org.eclipse.osee.ats.api.workdef.IAtsWorkDefinition; -import org.eclipse.osee.ats.api.workdef.IAtsWorkDefinitionAdmin; -import org.eclipse.osee.ats.api.workdef.IAtsWorkDefinitionService; -import org.eclipse.osee.ats.api.workdef.IAttributeResolver; -import org.eclipse.osee.ats.api.workdef.IWorkDefinitionMatch; -import org.eclipse.osee.ats.api.workflow.IAtsGoal; -import org.eclipse.osee.ats.api.workflow.IAtsTask; -import org.eclipse.osee.ats.api.workflow.IAtsTeamWorkflow; -import org.eclipse.osee.ats.api.workflow.IAtsWorkItemService; -import org.eclipse.osee.ats.core.client.internal.Activator; -import org.eclipse.osee.ats.core.client.internal.CacheProvider; -import org.eclipse.osee.ats.core.client.team.ITeamWorkflowProviders; -import org.eclipse.osee.ats.core.client.workflow.ITeamWorkflowProvider; -import org.eclipse.osee.ats.core.workdef.WorkDefinitionMatch; -import org.eclipse.osee.framework.core.exception.MultipleAttributesExist; -import org.eclipse.osee.framework.core.util.Conditions; -import org.eclipse.osee.framework.core.util.XResultData; -import org.eclipse.osee.framework.jdk.core.type.OseeCoreException; -import org.eclipse.osee.framework.jdk.core.util.Strings; -import org.eclipse.osee.framework.logging.OseeLog; - -/** - * @author Donald G. Dunne - */ -public class AtsWorkDefinitionAdminImpl implements IAtsWorkDefinitionAdmin { - - private final CacheProvider<AtsWorkDefinitionCache> cacheProvider; - private final IAtsWorkItemService workItemService; - private final IAtsWorkDefinitionService workDefinitionService; - private final ITeamWorkflowProviders teamWorkflowProviders; - private final IAttributeResolver attributeResolver; - - public AtsWorkDefinitionAdminImpl(CacheProvider<AtsWorkDefinitionCache> workDefCacheProvider, IAtsWorkItemService workItemService, IAtsWorkDefinitionService workDefinitionService, ITeamWorkflowProviders teamWorkflowProviders, IAttributeResolver attributeResolver) { - this.cacheProvider = workDefCacheProvider; - this.workItemService = workItemService; - this.workDefinitionService = workDefinitionService; - this.teamWorkflowProviders = teamWorkflowProviders; - this.attributeResolver = attributeResolver; - } - - private AtsWorkDefinitionCache getCache() throws OseeCoreException { - return cacheProvider.get(); - } - - @Override - public void clearCaches() { - cacheProvider.invalidate(); - } - - @Override - public void addWorkDefinition(IAtsWorkDefinition workDef) throws OseeCoreException { - WorkDefinitionMatch match = - new WorkDefinitionMatch(workDef.getId(), "programatically added via WorkDefinitionFactory.addWorkDefinition"); - match.setWorkDefinition(workDef); - getCache().cache(workDef, match); - } - - @Override - public void removeWorkDefinition(IAtsWorkDefinition workDef) throws OseeCoreException { - getCache().invalidate(workDef); - } - - @Override - public IWorkDefinitionMatch getWorkDefinition(IAtsWorkItem workItem) throws OseeCoreException { - AtsWorkDefinitionCache cache = getCache(); - IWorkDefinitionMatch toReturn = cache.getWorkDefinition(workItem); - if (toReturn == null) { - toReturn = getWorkDefinitionNew(workItem); - getCache().cache(workItem, toReturn); - } - return toReturn; - } - - @Override - public IWorkDefinitionMatch getWorkDefinition(String id) throws OseeCoreException { - IWorkDefinitionMatch toReturn = getCache().getWorkDefinition(id); - if (toReturn == null) { - WorkDefinitionMatch match = new WorkDefinitionMatch(); - // Try to get from new DSL provider if configured to use it - if (!match.isMatched()) { - try { - XResultData resultData = new XResultData(false); - if (workDefinitionService == null) { - throw new IllegalStateException("ATS Work Definition Service is not found."); - } - IAtsWorkDefinition workDef = workDefinitionService.getWorkDef(id, resultData); - if (workDef != null) { - match.setWorkDefinition(workDef); - if (!resultData.isEmpty()) { - match.addTrace((String.format("from DSL provider loaded id [%s] [%s]", id, resultData.toString()))); - } else { - match.addTrace((String.format("from DSL provider loaded id [%s]", id))); - } - } - } catch (Exception ex) { - return new WorkDefinitionMatch(null, ex.getLocalizedMessage()); - } - } - if (match.isMatched()) { - OseeLog.logf(Activator.class, Level.INFO, "Loaded Work Definition [%s]", match); - getCache().cache(id, match); - toReturn = match; - } else { - OseeLog.logf(Activator.class, Level.INFO, "Unable to load Work Definition [%s]", id); - } - } - if (toReturn == null) { - toReturn = new WorkDefinitionMatch(); - } - return toReturn; - } - - private IWorkDefinitionMatch getWorkDefinitionFromArtifactsAttributeValue(IAtsTeamDefinition teamDef) throws OseeCoreException { - // If this artifact specifies it's own workflow definition, use it - String workFlowDefId = teamDef.getWorkflowDefinition(); - if (Strings.isValid(workFlowDefId)) { - IWorkDefinitionMatch match = getWorkDefinition(workFlowDefId); - if (match.isMatched()) { - match.addTrace(String.format("from artifact [%s] for id [%s]", teamDef, workFlowDefId)); - return match; - } - } - return new WorkDefinitionMatch(); - } - - private IWorkDefinitionMatch getTaskWorkDefinitionFromArtifactsAttributeValue(IAtsTeamDefinition teamDef) throws OseeCoreException { - // If this artifact specifies it's own workflow definition, use it - String workFlowDefId = teamDef.getRelatedTaskWorkDefinition(); - if (Strings.isValid(workFlowDefId)) { - IWorkDefinitionMatch match = getWorkDefinition(workFlowDefId); - if (match.isMatched()) { - match.addTrace(String.format("from artifact [%s] for id [%s]", teamDef, workFlowDefId)); - return match; - } - } - return new WorkDefinitionMatch(); - } - - private IWorkDefinitionMatch getWorkDefinitionFromArtifactsAttributeValue(IAtsWorkItem workItem) throws OseeCoreException { - // If this artifact specifies it's own workflow definition, use it - String workFlowDefId = null; - Collection<Object> attributeValues = - workItemService.getAttributeValues(workItem, AtsAttributeTypes.WorkflowDefinition); - if (!attributeValues.isEmpty()) { - workFlowDefId = (String) attributeValues.iterator().next(); - } - if (Strings.isValid(workFlowDefId)) { - IWorkDefinitionMatch match = getWorkDefinition(workFlowDefId); - if (match.isMatched()) { - match.addTrace(String.format("from artifact [%s] for id [%s]", workItem, workFlowDefId)); - return match; - } - } - return new WorkDefinitionMatch(); - } - - private IWorkDefinitionMatch getTaskWorkDefinitionFromArtifactsAttributeValue(IAtsWorkItem workItem) throws OseeCoreException { - // If this artifact specifies it's own workflow definition, use it - String workFlowDefId = null; - Collection<Object> attributeValues = - workItemService.getAttributeValues(workItem, AtsAttributeTypes.RelatedTaskWorkDefinition); - if (!attributeValues.isEmpty()) { - workFlowDefId = (String) attributeValues.iterator().next(); - } - if (Strings.isValid(workFlowDefId)) { - IWorkDefinitionMatch match = getWorkDefinition(workFlowDefId); - if (match.isMatched()) { - match.addTrace(String.format("from artifact [%s] for id [%s]", workItem, workFlowDefId)); - return match; - } - } - return new WorkDefinitionMatch(); - } - - /** - * Look at team def's attribute for Work Definition setting, otherwise, walk up team tree for setting - */ - private IWorkDefinitionMatch getWorkDefinitionFromTeamDefinitionAttributeInherited(IAtsTeamDefinition teamDef) throws OseeCoreException { - IWorkDefinitionMatch match = getWorkDefinitionFromArtifactsAttributeValue(teamDef); - if (match.isMatched()) { - return match; - } - IAtsTeamDefinition parentArt = teamDef.getParentTeamDef(); - if (parentArt != null) { - return getWorkDefinitionFromTeamDefinitionAttributeInherited(parentArt); - } - return new WorkDefinitionMatch(); - } - - @Override - public IWorkDefinitionMatch getWorkDefinitionForTask(IAtsTask task) throws OseeCoreException { - IAtsTeamWorkflow teamWf = workItemService.getParentTeamWorkflow(task); - return getWorkDefinitionForTask(teamWf, task); - } - - /** - * Return the WorkDefinition that would be assigned to a new Task. This is not necessarily the actual WorkDefinition - * used because it can be overridden once the Task artifact is created. - */ - @Override - public IWorkDefinitionMatch getWorkDefinitionForTaskNotYetCreated(IAtsTeamWorkflow teamWf) throws OseeCoreException { - return getWorkDefinitionForTask(teamWf, null); - } - - /** - * @param task - if null, returned WorkDefinition will be proposed; else returned will be actual - */ - private IWorkDefinitionMatch getWorkDefinitionForTask(IAtsTeamWorkflow teamWf, IAtsTask task) throws OseeCoreException { - IWorkDefinitionMatch match = new WorkDefinitionMatch(); - for (ITeamWorkflowProvider provider : teamWorkflowProviders.getTeamWorkflowProviders()) { - String workFlowDefId = provider.getRelatedTaskWorkflowDefinitionId(teamWf); - if (Strings.isValid(workFlowDefId)) { - match = getWorkDefinition(workFlowDefId); - match.addTrace((String.format("from provider [%s] for id [%s]", provider.getClass().getSimpleName(), - workFlowDefId))); - break; - } - } - if (!match.isMatched() && task != null) { - // If task specifies it's own workflow id, use it - match = getWorkDefinitionFromArtifactsAttributeValue(task); - } - if (!match.isMatched()) { - // Else If parent SMA has a related task definition workflow id specified, use it - IWorkDefinitionMatch match2 = getTaskWorkDefinitionFromArtifactsAttributeValue(teamWf); - if (match2.isMatched()) { - match2.addTrace(String.format("from task parent SMA [%s]", teamWf)); - match = match2; - } - } - if (!match.isMatched()) { - // Else If parent TeamWorkflow's IAtsTeamDefinition has a related task definition workflow id, use it - match = getTaskWorkDefinitionFromArtifactsAttributeValue(teamWf.getTeamDefinition()); - } - if (!match.isMatched()) { - match = getWorkDefinition(TaskWorkflowDefinitionId); - match.addTrace("WorkDefinitionFactory - Default Task"); - } - return match; - } - - private IWorkDefinitionMatch getWorkDefinitionNew(IAtsWorkItem workItem) throws OseeCoreException { - IWorkDefinitionMatch match = new WorkDefinitionMatch(); - if (workItem instanceof IAtsTask) { - match = getWorkDefinitionForTask((IAtsTask) workItem); - } - if (!match.isMatched()) { - // Check extensions for definition handling - for (ITeamWorkflowProvider provider : teamWorkflowProviders.getTeamWorkflowProviders()) { - String workFlowDefId = provider.getWorkflowDefinitionId(workItem); - if (Strings.isValid(workFlowDefId)) { - match = getWorkDefinition(workFlowDefId); - } - } - if (!match.isMatched()) { - // If this artifact specifies it's own workflow definition, use it - match = getWorkDefinitionFromArtifactsAttributeValue(workItem); - if (!match.isMatched()) { - // Otherwise, use workflow defined by attribute of WorkflowDefinition - // Note: This is new. Old TeamDefs got workflow off relation - if (workItem instanceof IAtsTeamWorkflow) { - IAtsTeamDefinition teamDef = ((IAtsTeamWorkflow) workItem).getTeamDefinition(); - match = getWorkDefinitionFromTeamDefinitionAttributeInherited(teamDef); - } else if (workItem instanceof IAtsGoal) { - match = getWorkDefinition(GoalWorkflowDefinitionId); - match.addTrace("WorkDefinitionFactory - GoalWorkflowDefinitionId"); - } else if (workItem instanceof IAtsPeerToPeerReview) { - match = getWorkDefinition(PeerToPeerDefaultWorkflowDefinitionId); - match.addTrace("WorkDefinitionFactory - PeerToPeerWorkflowDefinitionId"); - } else if (workItem instanceof IAtsDecisionReview) { - match = getWorkDefinition(DecisionWorkflowDefinitionId); - match.addTrace("WorkDefinitionFactory - DecisionWorkflowDefinitionId"); - } - } - } - } - return match; - } - - @Override - public boolean isTaskOverridingItsWorkDefinition(IAtsTask task) throws MultipleAttributesExist, OseeCoreException { - return attributeResolver.getSoleAttributeValueAsString(task, AtsAttributeTypes.WorkflowDefinition, null) != null; - } - - /** - * @return WorkDefinitionMatch for Peer Review either from attribute value or default - */ - @Override - public IWorkDefinitionMatch getWorkDefinitionForPeerToPeerReview(IAtsPeerToPeerReview review) throws OseeCoreException { - Conditions.notNull(review, AtsWorkDefinitionAdminImpl.class.getSimpleName()); - IWorkDefinitionMatch match = getWorkDefinitionFromArtifactsAttributeValue(review); - if (!match.isMatched()) { - match = getDefaultPeerToPeerWorkflowDefinitionMatch(); - } - return match; - } - - @Override - public IWorkDefinitionMatch getDefaultPeerToPeerWorkflowDefinitionMatch() throws OseeCoreException { - IWorkDefinitionMatch match = getWorkDefinition(PeerToPeerDefaultWorkflowDefinitionId); - match.addTrace("WorkDefinitionFactory - Default PeerToPeer"); - return match; - } - - /** - * @return WorkDefinitionMatch for peer review off created teamWf. Will use configured value off team definitions - * with recurse or return default review work definition - */ - @Override - public IWorkDefinitionMatch getWorkDefinitionForPeerToPeerReviewNotYetCreated(IAtsTeamWorkflow teamWf) throws OseeCoreException { - Conditions.notNull(teamWf, AtsWorkDefinitionAdminImpl.class.getSimpleName()); - IAtsTeamDefinition teamDefinition = teamWf.getTeamDefinition(); - IWorkDefinitionMatch match = getPeerToPeerWorkDefinitionFromTeamDefinitionAttributeValueRecurse(teamDefinition); - if (!match.isMatched()) { - match = getDefaultPeerToPeerWorkflowDefinitionMatch(); - } - return match; - } - - /** - * @return WorkDefinitionMatch of peer review from team definition related to actionableItem or return default review - * work definition - */ - @Override - public IWorkDefinitionMatch getWorkDefinitionForPeerToPeerReviewNotYetCreatedAndStandalone(IAtsActionableItem actionableItem) throws OseeCoreException { - Conditions.notNull(actionableItem, AtsWorkDefinitionAdminImpl.class.getSimpleName()); - IWorkDefinitionMatch match = new WorkDefinitionMatch(); - IAtsTeamDefinition teamDefinitionInherited = actionableItem.getTeamDefinitionInherited(); - match = getPeerToPeerWorkDefinitionFromTeamDefinitionAttributeValueRecurse(teamDefinitionInherited); - if (!match.isMatched()) { - match = getDefaultPeerToPeerWorkflowDefinitionMatch(); - } - return match; - } - - /** - * @return WorkDefinitionMatch of teamDefinition configured with RelatedPeerWorkflowDefinition attribute with recurse - * up to top teamDefinition or will return no match - */ - protected IWorkDefinitionMatch getPeerToPeerWorkDefinitionFromTeamDefinitionAttributeValueRecurse(IAtsTeamDefinition teamDefinition) throws OseeCoreException { - Conditions.notNull(teamDefinition, AtsWorkDefinitionAdminImpl.class.getSimpleName()); - IWorkDefinitionMatch match = new WorkDefinitionMatch(); - String workDefId = teamDefinition.getRelatedPeerWorkDefinition(); - if (!Strings.isValid(workDefId)) { - IAtsTeamDefinition parentTeamDef = teamDefinition.getParentTeamDef(); - if (parentTeamDef != null) { - match = getPeerToPeerWorkDefinitionFromTeamDefinitionAttributeValueRecurse(parentTeamDef); - } - } else { - match = getWorkDefinition(workDefId); - match.addTrace("PeerToPeer from Team Definition"); - } - return match; - } - - @Override - public IAtsWorkDefinition copyWorkDefinition(String newName, IAtsWorkDefinition workDef, XResultData resultData) { - return workDefinitionService.copyWorkDefinition(newName, workDef, resultData); - } - - @Override - public List<IAtsStateDefinition> getStatesOrderedByOrdinal(IAtsWorkDefinition workDef) { - return workDefinitionService.getStatesOrderedByOrdinal(workDef); - } - - @Override - public Collection<String> getStateNames(IAtsWorkDefinition workDef) { - return workDefinitionService.getStateNames(workDef); - } - - @Override - public String getStorageString(IAtsWorkDefinition workDef, XResultData resultData) throws Exception { - return workDefinitionService.getStorageString(workDef, resultData); - } - - @Override - public IAtsWorkDefinition getWorkDef(String id, XResultData resultData) throws Exception { - return workDefinitionService.getWorkDef(id, resultData); - } - - @Override - public List<IAtsWidgetDefinition> getWidgetsFromLayoutItems(IAtsStateDefinition stateDef) { - return workDefinitionService.getWidgetsFromLayoutItems(stateDef); - } - - @Override - public boolean isStateWeightingEnabled(IAtsWorkDefinition workDef) { - return workDefinitionService.isStateWeightingEnabled(workDef); - } - - @Override - public IAtsStateDefinition getStateDefinitionByName(IAtsWorkItem workItem, String stateName) throws OseeCoreException { - return getWorkDefinition(workItem).getWorkDefinition().getStateByName(stateName); - } - - @Override - public Collection<String> getAllValidStateNames() { - return workDefinitionService.getAllValidStateNames(); - } - -} diff --git a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/workdef/AtsWorkDefinitionCache.java b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/workdef/AtsWorkDefinitionCache.java deleted file mode 100644 index 3604a7ad8af..00000000000 --- a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/workdef/AtsWorkDefinitionCache.java +++ /dev/null @@ -1,67 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2013 Boeing. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Boeing - initial API and implementation - *******************************************************************************/ -package org.eclipse.osee.ats.core.client.internal.workdef; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; -import org.eclipse.osee.ats.api.IAtsWorkItem; -import org.eclipse.osee.ats.api.workdef.IAtsWorkDefinition; -import org.eclipse.osee.ats.api.workdef.IWorkDefinitionMatch; -import org.eclipse.osee.ats.core.workdef.WorkDefinitionMatch; - -/** - * @author Donald G. Dunne - */ -public class AtsWorkDefinitionCache { - - // Cache the WorkDefinition used for each AbstractWorkflowId so don't have to recompute each time - private final Map<String, IWorkDefinitionMatch> awaGuidToWorkDefinition = - new ConcurrentHashMap<String, IWorkDefinitionMatch>(); - // Cache the WorkDefinition object for each WorkDefinition id so don't have to reload - // This grows as WorkDefinitions are requested/loaded - private final Map<String, IWorkDefinitionMatch> workDefIdToWorkDefintion = - new ConcurrentHashMap<String, IWorkDefinitionMatch>(); - - public void cache(IAtsWorkDefinition workDef, WorkDefinitionMatch match) { - cache(workDef.getName(), match); - } - - public void cache(String id, WorkDefinitionMatch match) { - workDefIdToWorkDefintion.put(id, match); - } - - public void cache(IAtsWorkItem workItem, IWorkDefinitionMatch match) { - awaGuidToWorkDefinition.put(workItem.getGuid(), match); - } - - public IWorkDefinitionMatch getWorkDefinition(IAtsWorkItem workItem) { - return awaGuidToWorkDefinition.get(workItem.getGuid()); - } - - //IAtsWorkDefinition - public IWorkDefinitionMatch getWorkDefinition(String id) { - return workDefIdToWorkDefintion.get(id); - } - - public Iterable<IWorkDefinitionMatch> getAllWorkDefinitions() { - return workDefIdToWorkDefintion.values(); - } - - public void invalidate(IAtsWorkDefinition workDef) { - workDefIdToWorkDefintion.remove(workDef.getName()); - } - - public void invalidateAll() { - awaGuidToWorkDefinition.clear(); - workDefIdToWorkDefintion.clear(); - } - -} diff --git a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/workdef/AtsWorkDefinitionCacheProvider.java b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/workdef/AtsWorkDefinitionCacheProvider.java index e8625a55248..dd6f3e38d86 100644 --- a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/workdef/AtsWorkDefinitionCacheProvider.java +++ b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/workdef/AtsWorkDefinitionCacheProvider.java @@ -13,7 +13,8 @@ package org.eclipse.osee.ats.core.client.internal.workdef; import java.util.concurrent.Callable; import java.util.concurrent.FutureTask; import org.eclipse.osee.ats.api.workdef.IAtsWorkDefinitionService; -import org.eclipse.osee.ats.core.client.internal.CacheProvider; +import org.eclipse.osee.ats.core.util.CacheProvider; +import org.eclipse.osee.ats.core.workdef.AtsWorkDefinitionCache; import org.eclipse.osee.framework.core.data.LazyObject; /** diff --git a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/workdef/AttributeWrapper.java b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/workdef/AttributeWrapper.java index 4b8b70b4851..2d6d3d7be43 100644 --- a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/workdef/AttributeWrapper.java +++ b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/workdef/AttributeWrapper.java @@ -45,4 +45,9 @@ public class AttributeWrapper<T> implements IAttribute<T> { attr.setValue(value); } + @Override + public int getId() { + return attr.getId(); + } + } diff --git a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/workdef/LoadAtsWorkDefinitionCacheCallable.java b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/workdef/LoadAtsWorkDefinitionCacheCallable.java index 7e7c5b7da61..8102d24829b 100644 --- a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/workdef/LoadAtsWorkDefinitionCacheCallable.java +++ b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/workdef/LoadAtsWorkDefinitionCacheCallable.java @@ -15,6 +15,7 @@ import java.util.logging.Level; import org.eclipse.osee.ats.api.workdef.IAtsWorkDefinitionAdmin; import org.eclipse.osee.ats.api.workdef.IAtsWorkDefinitionService; import org.eclipse.osee.ats.core.client.internal.Activator; +import org.eclipse.osee.ats.core.workdef.AtsWorkDefinitionCache; import org.eclipse.osee.framework.core.util.XResultData; import org.eclipse.osee.framework.logging.OseeLog; diff --git a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/workflow/AtsAttributeResolverServiceImpl.java b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/workflow/AtsAttributeResolverServiceImpl.java index 4d42c660623..afc2c7e64ce 100644 --- a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/workflow/AtsAttributeResolverServiceImpl.java +++ b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/workflow/AtsAttributeResolverServiceImpl.java @@ -15,6 +15,7 @@ import java.util.Collection; import java.util.List; import java.util.logging.Level; import org.eclipse.osee.ats.api.IAtsWorkItem; +import org.eclipse.osee.ats.api.util.IAtsChangeSet; import org.eclipse.osee.ats.api.workdef.IAtsWidgetDefinition; import org.eclipse.osee.ats.api.workdef.IAttributeResolver; import org.eclipse.osee.ats.api.workflow.IAttribute; @@ -62,6 +63,7 @@ public class AtsAttributeResolverServiceImpl implements IAttributeResolver { return getAttributeType(attributeName).getDescription(); } + @Override public AttributeType getAttributeType(String attributeName) { try { return AttributeTypeManager.getType(attributeName); @@ -138,4 +140,71 @@ public class AtsAttributeResolverServiceImpl implements IAttributeResolver { attributeById.delete(); } + @Override + public void deleteSoleAttribute(IAtsWorkItem workItem, IAttributeType attributeType, IAtsChangeSet changes) throws OseeCoreException { + if (changes != null) { + changes.deleteSoleAttribute(workItem, attributeType); + } else { + deleteSoleAttribute(workItem, attributeType); + } + } + + @Override + public void setSoleAttributeValue(IAtsWorkItem workItem, IAttributeType attributeType, String value, IAtsChangeSet changes) throws OseeCoreException { + if (changes != null) { + changes.setSoleAttributeValue(workItem, attributeType, value); + } else { + setSoleAttributeValue(workItem, attributeType, value); + } + } + + @Override + public void setSoleAttributeValue(IAtsWorkItem workItem, IAttributeType attributeType, Object value, IAtsChangeSet changes) throws OseeCoreException { + if (changes != null) { + changes.setSoleAttributeValue(workItem, attributeType, value); + } else { + setSoleAttributeValue(workItem, attributeType, value); + } + } + + @Override + public void addAttribute(IAtsWorkItem workItem, IAttributeType attributeType, Object value, IAtsChangeSet changes) throws OseeCoreException { + if (changes != null) { + changes.addAttribute(workItem, attributeType, value); + } else { + AtsClientService.get().getArtifact(workItem).addAttribute(attributeType, value); + } + } + + @Override + public void deleteSoleAttribute(IAtsWorkItem workItem, IAttributeType attributeType, Object value, IAtsChangeSet changes) throws OseeCoreException { + if (changes != null) { + changes.deleteAttribute(workItem, attributeType, value); + } else { + AtsClientService.get().getArtifact(workItem).deleteAttribute(attributeType, value); + } + } + + @Override + public <T> void setValue(IAtsWorkItem workItem, IAttribute<String> attr, IAttributeType attributeType, T value, IAtsChangeSet changes) throws OseeCoreException { + if (changes != null) { + changes.setValue(workItem, attr, attributeType, value); + } else { + @SuppressWarnings("unchecked") + Attribute<T> attribute = (Attribute<T>) attr.getData(); + attribute.setValue(value); + } + } + + @Override + public <T> void deleteAttribute(IAtsWorkItem workItem, IAttribute<T> attr, IAtsChangeSet changes) throws OseeCoreException { + if (changes != null) { + changes.deleteAttribute(workItem, attr); + } else { + Artifact artifact = AtsClientService.get().getArtifact(workItem); + Attribute<?> attribute = (Attribute<?>) attr.getData(); + Attribute<?> attributeById = artifact.getAttributeById(attribute.getId(), false); + attributeById.delete(); + } + } } diff --git a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/workflow/AtsWorkItemServiceImpl.java b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/workflow/AtsWorkItemServiceImpl.java index c9e39bc80e0..75f21def9da 100644 --- a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/workflow/AtsWorkItemServiceImpl.java +++ b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/workflow/AtsWorkItemServiceImpl.java @@ -11,13 +11,9 @@ package org.eclipse.osee.ats.core.client.internal.workflow; import java.util.Collection; -import java.util.List; -import java.util.logging.Level; import org.eclipse.osee.ats.api.IAtsObject; import org.eclipse.osee.ats.api.IAtsWorkItem; import org.eclipse.osee.ats.api.review.IAtsAbstractReview; -import org.eclipse.osee.ats.api.user.IAtsUser; -import org.eclipse.osee.ats.api.util.IAtsChangeSet; import org.eclipse.osee.ats.api.workdef.IAtsStateDefinition; import org.eclipse.osee.ats.api.workdef.IStateToken; import org.eclipse.osee.ats.api.workdef.WidgetResult; @@ -26,9 +22,7 @@ import org.eclipse.osee.ats.api.workflow.IAtsTask; import org.eclipse.osee.ats.api.workflow.IAtsTeamWorkflow; import org.eclipse.osee.ats.api.workflow.IAtsWorkData; import org.eclipse.osee.ats.api.workflow.IAtsWorkItemService; -import org.eclipse.osee.ats.api.workflow.log.ILogStorageProvider; import org.eclipse.osee.ats.api.workflow.transition.ITransitionListener; -import org.eclipse.osee.ats.core.client.internal.Activator; import org.eclipse.osee.ats.core.client.internal.AtsClientService; import org.eclipse.osee.ats.core.client.internal.IAtsWorkItemArtifactService; import org.eclipse.osee.ats.core.client.review.ReviewManager; @@ -36,18 +30,14 @@ import org.eclipse.osee.ats.core.client.team.TeamWorkFlowArtifact; import org.eclipse.osee.ats.core.client.validator.AtsXWidgetValidateManagerClient; import org.eclipse.osee.ats.core.client.workflow.AbstractWorkflowArtifact; import org.eclipse.osee.ats.core.client.workflow.AtsWorkData; -import org.eclipse.osee.ats.core.client.workflow.log.ArtifactLog; import org.eclipse.osee.ats.core.client.workflow.transition.TransitionListeners; -import org.eclipse.osee.framework.access.AccessControlManager; import org.eclipse.osee.framework.core.data.IArtifactType; import org.eclipse.osee.framework.core.data.IAttributeType; -import org.eclipse.osee.framework.core.enums.PermissionEnum; import org.eclipse.osee.framework.core.util.Conditions; import org.eclipse.osee.framework.jdk.core.type.OseeArgumentException; import org.eclipse.osee.framework.jdk.core.type.OseeCoreException; import org.eclipse.osee.framework.jdk.core.type.OseeStateException; import org.eclipse.osee.framework.jdk.core.util.Collections; -import org.eclipse.osee.framework.logging.OseeLog; import org.eclipse.osee.framework.skynet.core.artifact.Artifact; import org.eclipse.osee.framework.skynet.core.attribute.AttributeTypeManager; @@ -174,30 +164,6 @@ public class AtsWorkItemServiceImpl implements IAtsWorkItemService { } @Override - public boolean isReadOnly(IAtsWorkItem workItem) { - boolean readOnly = true; - try { - Artifact artifact = AtsClientService.get().getArtifact(workItem); - readOnly = artifact.isReadOnly(); - } catch (OseeCoreException ex) { - OseeLog.log(Activator.class, Level.SEVERE, ex); - } - return readOnly; - } - - @Override - public boolean isAccessControlWrite(IAtsWorkItem workItem) { - boolean isWrite = false; - try { - Artifact artifact = AtsClientService.get().getArtifact(workItem); - isWrite = AccessControlManager.hasPermission(artifact, PermissionEnum.WRITE); - } catch (OseeCoreException ex) { - OseeLog.log(Activator.class, Level.SEVERE, ex); - } - return isWrite; - } - - @Override public String getCurrentStateName(IAtsWorkItem workItem) { return ((AbstractWorkflowArtifact) workItem).getCurrentStateName(); } @@ -222,18 +188,13 @@ public class AtsWorkItemServiceImpl implements IAtsWorkItemService { } @Override - public void transitioned(IAtsWorkItem workItem, IAtsStateDefinition fromState, IAtsStateDefinition toState, List<? extends IAtsUser> updatedAssigees, IAtsChangeSet changes) throws OseeCoreException { - ((AbstractWorkflowArtifact) workItem).transitioned(fromState, toState, updatedAssigees, changes); - } - - @Override public Collection<ITransitionListener> getTransitionListeners() { return TransitionListeners.getListeners(); } @Override - public ILogStorageProvider getLogStorageProvider(IAtsWorkItem workItem) { - return new ArtifactLog(((AbstractWorkflowArtifact) workItem)); + public String getTargetedVersionStr(IAtsTeamWorkflow teamWf) throws OseeCoreException { + return AtsClientService.get().getAtsVersionService().getTargetedVersion(teamWf).getName(); } } diff --git a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/review/DecisionReviewDefinitionManager.java b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/review/DecisionReviewDefinitionManager.java index 88b8324882e..69ea04ae3ce 100644 --- a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/review/DecisionReviewDefinitionManager.java +++ b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/review/DecisionReviewDefinitionManager.java @@ -66,14 +66,14 @@ public class DecisionReviewDefinitionManager extends TransitionAdapter { } else { decArt = DecisionReviewManager.createNewDecisionReview(teamArt, revDef.getBlockingType(), revDef.getReviewTitle(), - revDef.getRelatedToState(), revDef.getDescription(), revDef.getOptions(), users, createdDate, createdBy, changes); + revDef.getRelatedToState(), revDef.getDescription(), revDef.getOptions(), users, createdDate, createdBy, + changes); } decArt.getLog().addLog(LogType.Note, null, String.format("Review [%s] auto-generated", revDef.getName()), AtsCore.getUserService().getCurrentUser().getUserId()); for (IReviewProvider provider : ReviewProviders.getAtsReviewProviders()) { provider.reviewCreated(decArt); } - AtsCore.getLogFactory().writeToStore(decArt); changes.add(decArt); return decArt; } diff --git a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/review/DecisionReviewManager.java b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/review/DecisionReviewManager.java index 41b3156e797..69a1f3ea781 100644 --- a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/review/DecisionReviewManager.java +++ b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/review/DecisionReviewManager.java @@ -27,7 +27,6 @@ import org.eclipse.osee.ats.api.workdef.ReviewBlockType; import org.eclipse.osee.ats.api.workdef.StateType; import org.eclipse.osee.ats.api.workflow.transition.TransitionOption; import org.eclipse.osee.ats.api.workflow.transition.TransitionResults; -import org.eclipse.osee.ats.core.AtsCore; import org.eclipse.osee.ats.core.client.internal.AtsClientService; import org.eclipse.osee.ats.core.client.team.TeamWorkFlowArtifact; import org.eclipse.osee.ats.core.client.util.AtsUtilCore; @@ -99,7 +98,6 @@ public class DecisionReviewManager { } reviewArt.setSoleAttributeValue(AtsAttributeTypes.EstimatedHours, estimateHours); reviewArt.getStateMgr().updateMetrics(reviewArt.getStateDefinition(), stateHoursSpent, statePercentComplete, true); - AtsCore.getLogFactory().writeToStore(reviewArt); return Result.TrueResult; } @@ -126,7 +124,6 @@ public class DecisionReviewManager { reviewArt.setSoleAttributeValue(AtsAttributeTypes.Decision, decision ? "Yes" : "No"); reviewArt.getStateMgr().updateMetrics(reviewArt.getStateDefinition(), stateHoursSpent, statePercentComplete, true); - AtsCore.getLogFactory().writeToStore(reviewArt); return Result.TrueResult; } @@ -149,7 +146,6 @@ public class DecisionReviewManager { } // ensure assignees are as requested decRev.getStateMgr().setAssignees(assignees); - AtsCore.getLogFactory().writeToStore(decRev); changes.add(decRev); return decRev; } diff --git a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/review/PeerReviewDefinitionManager.java b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/review/PeerReviewDefinitionManager.java index 94bb41d702e..172a59e22f3 100644 --- a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/review/PeerReviewDefinitionManager.java +++ b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/review/PeerReviewDefinitionManager.java @@ -73,7 +73,7 @@ public class PeerReviewDefinitionManager extends TransitionAdapter { for (IReviewProvider provider : ReviewProviders.getAtsReviewProviders()) { provider.reviewCreated(peerArt); } - AtsCore.getLogFactory().writeToStore(peerArt); + changes.add(peerArt); return peerArt; } diff --git a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/review/role/UserRoleManager.java b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/review/role/UserRoleManager.java index a59a28a3638..629b5b7252a 100644 --- a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/review/role/UserRoleManager.java +++ b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/review/role/UserRoleManager.java @@ -20,7 +20,6 @@ import org.eclipse.osee.ats.api.data.AtsAttributeTypes; import org.eclipse.osee.ats.api.notify.AtsNotifyType; import org.eclipse.osee.ats.api.user.IAtsUser; import org.eclipse.osee.ats.api.util.IAtsChangeSet; -import org.eclipse.osee.ats.core.AtsCore; import org.eclipse.osee.ats.core.client.internal.Activator; import org.eclipse.osee.ats.core.client.internal.AtsClientService; import org.eclipse.osee.ats.core.client.notify.AtsNotificationManager; @@ -257,6 +256,5 @@ public class UserRoleManager { awa.getStateMgr().setMetrics(awa.getStateDefinition(), hoursSpent, awa.getStateMgr().getPercentComplete(awa.getCurrentStateName()), true, AtsClientService.get().getUserAdmin().getCurrentUser(), new Date()); - AtsCore.getLogFactory().writeToStore(awa); } } diff --git a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/task/AbstractTaskableArtifact.java b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/task/AbstractTaskableArtifact.java index 4ced79e6a8a..4bfd8d9d633 100644 --- a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/task/AbstractTaskableArtifact.java +++ b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/task/AbstractTaskableArtifact.java @@ -24,9 +24,7 @@ import org.eclipse.osee.ats.api.data.AtsAttributeTypes; import org.eclipse.osee.ats.api.data.AtsRelationTypes; import org.eclipse.osee.ats.api.user.IAtsUser; import org.eclipse.osee.ats.api.util.IAtsChangeSet; -import org.eclipse.osee.ats.api.workdef.IAtsStateDefinition; import org.eclipse.osee.ats.api.workdef.IStateToken; -import org.eclipse.osee.ats.core.AtsCore; import org.eclipse.osee.ats.core.client.internal.Activator; import org.eclipse.osee.ats.core.client.internal.AtsClientService; import org.eclipse.osee.ats.core.client.util.AtsTaskCache; @@ -65,14 +63,6 @@ public abstract class AbstractTaskableArtifact extends AbstractWorkflowArtifact } } - @Override - public void transitioned(IAtsStateDefinition fromState, IAtsStateDefinition toState, Collection<? extends IAtsUser> toAssignees, IAtsChangeSet changes) throws OseeCoreException { - super.transitioned(fromState, toState, toAssignees, changes); - for (TaskArtifact taskArt : getTaskArtifacts()) { - taskArt.parentWorkFlowTransitioned(fromState, toState, toAssignees, changes); - } - } - public Collection<TaskArtifact> getTaskArtifacts() throws OseeCoreException { return AtsTaskCache.getTaskArtifacts(this); } @@ -126,7 +116,6 @@ public abstract class AbstractTaskableArtifact extends AbstractWorkflowArtifact if (Strings.isValid(relatedToState)) { taskArt.setSoleAttributeValue(AtsAttributeTypes.RelatedToState, relatedToState); } - AtsCore.getLogFactory().writeToStore(taskArt); AtsTaskCache.decache(this); changes.add(taskArt); return taskArt; diff --git a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/task/TaskArtifact.java b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/task/TaskArtifact.java index 0f35358a0d5..2b2824b2794 100644 --- a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/task/TaskArtifact.java +++ b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/task/TaskArtifact.java @@ -10,31 +10,20 @@ *******************************************************************************/ package org.eclipse.osee.ats.core.client.task; -import java.util.Arrays; import java.util.Collection; import java.util.Date; import java.util.List; import org.eclipse.osee.ats.api.data.AtsAttributeTypes; import org.eclipse.osee.ats.api.data.AtsRelationTypes; -import org.eclipse.osee.ats.api.user.IAtsUser; -import org.eclipse.osee.ats.api.util.IAtsChangeSet; -import org.eclipse.osee.ats.api.workdef.IAtsStateDefinition; import org.eclipse.osee.ats.api.workflow.IAtsTask; import org.eclipse.osee.ats.api.workflow.log.IAtsLog; import org.eclipse.osee.ats.api.workflow.log.IAtsLogItem; import org.eclipse.osee.ats.api.workflow.log.LogType; -import org.eclipse.osee.ats.api.workflow.transition.TransitionOption; -import org.eclipse.osee.ats.api.workflow.transition.TransitionResults; import org.eclipse.osee.ats.core.client.action.ActionArtifact; -import org.eclipse.osee.ats.core.client.internal.AtsClientService; import org.eclipse.osee.ats.core.client.team.TeamWorkFlowArtifact; import org.eclipse.osee.ats.core.client.workflow.AbstractWorkflowArtifact; -import org.eclipse.osee.ats.core.workflow.state.TeamState; -import org.eclipse.osee.ats.core.workflow.transition.TransitionHelper; -import org.eclipse.osee.ats.core.workflow.transition.TransitionManager; import org.eclipse.osee.framework.core.data.IArtifactType; import org.eclipse.osee.framework.core.model.Branch; -import org.eclipse.osee.framework.core.util.Result; import org.eclipse.osee.framework.jdk.core.type.OseeCoreException; import org.eclipse.osee.framework.jdk.core.type.OseeStateException; import org.eclipse.osee.framework.jdk.core.util.Strings; @@ -67,25 +56,6 @@ public class TaskArtifact extends AbstractWorkflowArtifact implements IAtsTask, } } - public Result parentWorkFlowTransitioned(IAtsStateDefinition fromState, IAtsStateDefinition toState, Collection<? extends IAtsUser> toAssignees, IAtsChangeSet changes) throws OseeCoreException { - if (toState.getName().equals(TeamState.Cancelled.getName()) && isInWork()) { - TransitionHelper helper = - new TransitionHelper("Transition to Cancelled", Arrays.asList(this), TaskStates.Cancelled.getName(), null, - "Parent Cancelled", changes, TransitionOption.None); - TransitionManager transitionMgr = new TransitionManager(helper); - TransitionResults results = transitionMgr.handleAll(); - - if (!results.isEmpty()) { - return new Result("Transition Error %s", results.toString()); - } - } else if (fromState.getName().equals(TeamState.Cancelled.getName()) && isCancelled()) { - Result result = - TaskManager.transitionToInWork(this, AtsClientService.get().getUserAdmin().getCurrentUser(), 99, 0, changes); - return result; - } - return Result.TrueResult; - } - @Override public double getManHrsPerDayPreference() throws OseeCoreException { return getParentAWA().getManHrsPerDayPreference(); diff --git a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/task/TaskManager.java b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/task/TaskManager.java index c7e6d750465..2a920929a19 100644 --- a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/task/TaskManager.java +++ b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/task/TaskManager.java @@ -21,7 +21,6 @@ import org.eclipse.osee.ats.api.util.IAtsChangeSet; import org.eclipse.osee.ats.api.workdef.IWorkDefinitionMatch; import org.eclipse.osee.ats.api.workflow.transition.TransitionOption; import org.eclipse.osee.ats.api.workflow.transition.TransitionResults; -import org.eclipse.osee.ats.core.AtsCore; import org.eclipse.osee.ats.core.client.internal.Activator; import org.eclipse.osee.ats.core.client.internal.AtsClientService; import org.eclipse.osee.ats.core.client.team.TeamWorkFlowArtifact; @@ -58,7 +57,6 @@ public class TaskManager { taskArt.getStateMgr().setAssignee(AtsClientService.get().getUserAdmin().getCurrentUser()); } taskArt.getStateMgr().updateMetrics(taskArt.getStateDefinition(), additionalHours, 100, true); - AtsCore.getLogFactory().writeToStore(taskArt); if (estimatedHours > 0.0) { taskArt.setSoleAttributeValue(AtsAttributeTypes.EstimatedHours, estimatedHours); } @@ -93,7 +91,6 @@ public class TaskManager { } if (taskArt.getStateMgr().getPercentComplete(taskArt.getCurrentStateName()) != percentComplete || additionalHours > 0) { taskArt.getStateMgr().updateMetrics(taskArt.getStateDefinition(), additionalHours, percentComplete, true); - AtsCore.getLogFactory().writeToStore(taskArt); } if (changes != null) { taskArt.saveSMA(changes); diff --git a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/team/ITeamWorkflowProviders.java b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/team/ITeamWorkflowProviders.java deleted file mode 100644 index 1a10fca4208..00000000000 --- a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/team/ITeamWorkflowProviders.java +++ /dev/null @@ -1,23 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2013 Boeing. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Boeing - initial API and implementation - *******************************************************************************/ -package org.eclipse.osee.ats.core.client.team; - -import java.util.List; -import org.eclipse.osee.ats.core.client.workflow.ITeamWorkflowProvider; - -/** - * @author Donald G. Dunne - */ -public interface ITeamWorkflowProviders extends Iterable<ITeamWorkflowProvider> { - - List<ITeamWorkflowProvider> getTeamWorkflowProviders(); - -}
\ No newline at end of file diff --git a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/team/TeamWorkFlowArtifact.java b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/team/TeamWorkFlowArtifact.java index e27663d2201..b26cc49ea6c 100644 --- a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/team/TeamWorkFlowArtifact.java +++ b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/team/TeamWorkFlowArtifact.java @@ -100,11 +100,6 @@ public class TeamWorkFlowArtifact extends AbstractTaskableArtifact implements IA } @Override - public boolean isValidationRequired() throws OseeCoreException { - return getSoleAttributeValue(AtsAttributeTypes.ValidationRequired, false); - } - - @Override public String getEditorTitle() throws OseeCoreException { try { if (getTeamDefinition().isTeamUsesVersions()) { diff --git a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/team/TeamWorkFlowManager.java b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/team/TeamWorkFlowManager.java index 88ca0d74851..03590b5de0e 100644 --- a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/team/TeamWorkFlowManager.java +++ b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/team/TeamWorkFlowManager.java @@ -24,17 +24,17 @@ import org.eclipse.osee.ats.api.ai.IAtsActionableItem; import org.eclipse.osee.ats.api.data.AtsArtifactTypes; import org.eclipse.osee.ats.api.data.AtsAttributeTypes; import org.eclipse.osee.ats.api.team.IAtsTeamDefinition; +import org.eclipse.osee.ats.api.team.ITeamWorkflowProvider; +import org.eclipse.osee.ats.api.team.ITeamWorkflowProviders; import org.eclipse.osee.ats.api.user.IAtsUser; import org.eclipse.osee.ats.api.util.IAtsChangeSet; import org.eclipse.osee.ats.api.workdef.IStateToken; import org.eclipse.osee.ats.api.workflow.IAtsTeamWorkflow; import org.eclipse.osee.ats.api.workflow.transition.TransitionOption; import org.eclipse.osee.ats.api.workflow.transition.TransitionResults; -import org.eclipse.osee.ats.core.AtsCore; import org.eclipse.osee.ats.core.client.internal.Activator; import org.eclipse.osee.ats.core.client.util.AtsUtilCore; import org.eclipse.osee.ats.core.client.workflow.AbstractWorkflowArtifact; -import org.eclipse.osee.ats.core.client.workflow.ITeamWorkflowProvider; import org.eclipse.osee.ats.core.workflow.state.TeamState; import org.eclipse.osee.ats.core.workflow.transition.TransitionHelper; import org.eclipse.osee.ats.core.workflow.transition.TransitionManager; @@ -203,7 +203,6 @@ public class TeamWorkFlowManager { } teamArt.setSoleAttributeValue(AtsAttributeTypes.EstimatedHours, hourEstimate); teamArt.getStateMgr().setMetrics(TeamState.Analyze, stateHoursSpent, statePercentComplete, true, user, date); - AtsCore.getLogFactory().writeToStore(teamArt); return Result.TrueResult; } @@ -215,7 +214,6 @@ public class TeamWorkFlowManager { } } teamArt.getStateMgr().setMetrics(TeamState.Authorize, stateHoursSpent, statePercentComplete, true, user, date); - AtsCore.getLogFactory().writeToStore(teamArt); return Result.TrueResult; } @@ -227,7 +225,6 @@ public class TeamWorkFlowManager { } } teamArt.getStateMgr().setMetrics(TeamState.Implement, stateHoursSpent, statePercentComplete, true, user, date); - AtsCore.getLogFactory().writeToStore(teamArt); return Result.TrueResult; } diff --git a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/util/AtsChangeSet.java b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/util/AtsChangeSet.java index af906490efb..7ff81888189 100644 --- a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/util/AtsChangeSet.java +++ b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/util/AtsChangeSet.java @@ -16,11 +16,15 @@ import java.util.concurrent.CopyOnWriteArrayList; import org.eclipse.osee.ats.api.IAtsWorkItem; import org.eclipse.osee.ats.api.util.IAtsChangeSet; import org.eclipse.osee.ats.api.util.IExecuteListener; +import org.eclipse.osee.ats.api.workflow.IAttribute; import org.eclipse.osee.ats.core.AtsCore; +import org.eclipse.osee.ats.core.client.internal.AtsClientService; +import org.eclipse.osee.framework.core.data.IAttributeType; import org.eclipse.osee.framework.core.util.Conditions; import org.eclipse.osee.framework.jdk.core.type.OseeArgumentException; import org.eclipse.osee.framework.jdk.core.type.OseeCoreException; import org.eclipse.osee.framework.skynet.core.artifact.Artifact; +import org.eclipse.osee.framework.skynet.core.artifact.Attribute; import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction; import org.eclipse.osee.framework.skynet.core.transaction.TransactionManager; @@ -75,7 +79,7 @@ public class AtsChangeSet implements IAtsChangeSet { AtsCore.getStateFactory().writeToStore(workItem, this); } if (workItem.getLog().isDirty()) { - AtsCore.getLogFactory().writeToStore(workItem); + AtsCore.getLogFactory().writeToStore(workItem, AtsClientService.get().getAttributeResolver(), this); } } } @@ -150,4 +154,62 @@ public class AtsChangeSet implements IAtsChangeSet { } changes.execute(); } + + @Override + public void deleteSoleAttribute(IAtsWorkItem workItem, IAttributeType attributeType) throws OseeCoreException { + Artifact artifact = AtsClientService.get().getArtifact(workItem); + artifact.deleteSoleAttribute(attributeType); + add(artifact); + } + + @Override + public void setSoleAttributeValue(IAtsWorkItem workItem, IAttributeType attributeType, String value) throws OseeCoreException { + Artifact artifact = AtsClientService.get().getArtifact(workItem); + artifact.setSoleAttributeValue(attributeType, value); + add(artifact); + } + + @Override + public void setSoleAttributeValue(IAtsWorkItem workItem, IAttributeType attributeType, Object value) throws OseeCoreException { + Artifact artifact = AtsClientService.get().getArtifact(workItem); + artifact.setSoleAttributeValue(attributeType, value); + add(artifact); + } + + @Override + public void addAttribute(IAtsWorkItem workItem, IAttributeType attributeType, Object value) throws OseeCoreException { + Artifact artifact = AtsClientService.get().getArtifact(workItem); + artifact.addAttribute(attributeType, value); + add(artifact); + } + + @Override + public void deleteAttribute(IAtsWorkItem workItem, IAttributeType attributeType, Object value) throws OseeCoreException { + Artifact artifact = AtsClientService.get().getArtifact(workItem); + artifact.deleteAttribute(attributeType, value); + add(artifact); + } + + @Override + public <T> void setValue(IAtsWorkItem workItem, IAttribute<String> attr, IAttributeType attributeType, T value) throws OseeCoreException { + Artifact artifact = AtsClientService.get().getArtifact(workItem); + @SuppressWarnings("unchecked") + Attribute<T> attribute = (Attribute<T>) attr.getData(); + attribute.setValue(value); + add(artifact); + } + + @Override + public <T> void deleteAttribute(IAtsWorkItem workItem, IAttribute<T> attr) throws OseeCoreException { + Artifact artifact = AtsClientService.get().getArtifact(workItem); + Attribute<?> attribute = (Attribute<?>) attr.getData(); + attribute.delete(); + add(artifact); + } + + @Override + public boolean isAttributeTypeValid(IAtsWorkItem workItem, IAttributeType attributeType) { + Artifact artifact = AtsClientService.get().getArtifact(workItem); + return artifact.getAttributeTypes().contains(attributeType); + } } diff --git a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/workflow/AbstractWorkflowArtifact.java b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/workflow/AbstractWorkflowArtifact.java index 4aa8bd723b4..dbbd209808f 100644 --- a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/workflow/AbstractWorkflowArtifact.java +++ b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/workflow/AbstractWorkflowArtifact.java @@ -61,6 +61,7 @@ import org.eclipse.osee.framework.core.enums.PermissionEnum; import org.eclipse.osee.framework.core.model.Branch; import org.eclipse.osee.framework.core.services.CmAccessControl; import org.eclipse.osee.framework.core.services.HasCmAccessControl; +import org.eclipse.osee.framework.core.util.Conditions; import org.eclipse.osee.framework.core.util.IGroupExplorerProvider; import org.eclipse.osee.framework.core.util.Result; import org.eclipse.osee.framework.jdk.core.type.OseeArgumentException; @@ -98,11 +99,14 @@ public abstract class AbstractWorkflowArtifact extends AbstractAtsArtifact imple } public void initializeNewStateMachine(List<? extends IAtsUser> assignees, Date createdDate, IAtsUser createdBy, IAtsChangeSet changes) throws OseeCoreException { + Conditions.checkNotNull(createdDate, "createdDate"); + Conditions.checkNotNull(createdBy, "createdBy"); + Conditions.checkNotNull(changes, "changes"); IAtsStateDefinition startState = getWorkDefinition().getStartState(); StateManagerUtility.initializeStateMachine(getStateMgr(), startState, assignees, (createdBy == null ? AtsClientService.get().getUserAdmin().getCurrentUser() : createdBy), changes); IAtsUser user = createdBy == null ? AtsClientService.get().getUserAdmin().getCurrentUser() : createdBy; - setCreatedBy(user, true, createdDate); + setCreatedBy(user, true, createdDate, changes); TransitionManager.logStateStartedEvent(this, startState, createdDate, user); } @@ -144,10 +148,6 @@ public abstract class AbstractWorkflowArtifact extends AbstractAtsArtifact imple return 0; } - public boolean isValidationRequired() throws OseeCoreException { - return false; - } - @Override public String getDescription() { return ""; @@ -336,11 +336,7 @@ public abstract class AbstractWorkflowArtifact extends AbstractAtsArtifact imple getSmaArtifactsOneLevel(this, artifacts); for (Artifact artifact : artifacts) { if (artifact instanceof AbstractWorkflowArtifact) { - AbstractWorkflowArtifact awa = (AbstractWorkflowArtifact) artifact; changes.add(artifact); - if (awa.getLog().isDirty()) { - AtsCore.getLogFactory().writeToStore(awa); - } } } } catch (Exception ex) { @@ -406,7 +402,7 @@ public abstract class AbstractWorkflowArtifact extends AbstractAtsArtifact imple @Override public IAtsLog getLog() { if (atsLog == null || atsLogTransactionNumber != getTransactionNumber()) { - atsLog = AtsCore.getLogFactory().getLogLoaded(this); + atsLog = AtsCore.getLogFactory().getLogLoaded(this, AtsClientService.get().getAttributeResolver()); atsLogTransactionNumber = getTransactionNumber(); } return atsLog; @@ -489,17 +485,27 @@ public abstract class AbstractWorkflowArtifact extends AbstractAtsArtifact imple OseeLog.log(Activator.class, OseeLevel.SEVERE_POPUP, ex); return false; } + } - public void setCreatedBy(IAtsUser user, boolean logChange, Date date) throws OseeCoreException { + public void setCreatedBy(IAtsUser user, boolean logChange, Date date, IAtsChangeSet changes) throws OseeCoreException { if (logChange) { logCreatedByChange(user, date); } - if (isAttributeTypeValid(AtsAttributeTypes.CreatedBy)) { - setSoleAttributeValue(AtsAttributeTypes.CreatedBy, user.getUserId()); - } - if (isAttributeTypeValid(AtsAttributeTypes.CreatedDate)) { - setSoleAttributeValue(AtsAttributeTypes.CreatedDate, date); + if (changes == null) { + if (isAttributeTypeValid(AtsAttributeTypes.CreatedBy)) { + setSoleAttributeValue(AtsAttributeTypes.CreatedBy, user.getUserId()); + } + if (isAttributeTypeValid(AtsAttributeTypes.CreatedDate)) { + setSoleAttributeValue(AtsAttributeTypes.CreatedDate, date); + } + } else { + if (changes.isAttributeTypeValid(this, AtsAttributeTypes.CreatedBy)) { + changes.setSoleAttributeValue(this, AtsAttributeTypes.CreatedBy, user.getUserId()); + } + if (changes.isAttributeTypeValid(this, AtsAttributeTypes.CreatedDate)) { + changes.setSoleAttributeValue(this, AtsAttributeTypes.CreatedDate, date); + } } AtsNotificationManager.notify(this, AtsNotifyType.Originator); } @@ -512,33 +518,19 @@ public abstract class AbstractWorkflowArtifact extends AbstractAtsArtifact imple "Changed by " + AtsClientService.get().getUserAdmin().getCurrentUser().getName(), date, user.getUserId()); getLog().internalResetOriginator(user); } - AtsCore.getLogFactory().writeToStore(this); } - public void setCreatedBy(IAtsUser user, boolean logChange) throws OseeCoreException { - Date date = new Date(); - if (logChange) { - logCreatedByChange(user, date); - } - if (isAttributeTypeValid(AtsAttributeTypes.CreatedBy)) { - setSoleAttributeValue(AtsAttributeTypes.CreatedBy, user.getUserId()); - } - AtsNotificationManager.notify(this, AtsNotifyType.Originator); - } - - public void internalSetCreatedBy(IAtsUser user) throws OseeCoreException { + public void internalSetCreatedBy(IAtsUser user, IAtsChangeSet changes) throws OseeCoreException { getLog().internalResetOriginator(user); - AtsCore.getLogFactory().writeToStore(this); - if (isAttributeTypeValid(AtsAttributeTypes.CreatedBy)) { - setSoleAttributeValue(AtsAttributeTypes.CreatedBy, user.getUserId()); + if (changes.isAttributeTypeValid(this, AtsAttributeTypes.CreatedBy)) { + changes.setSoleAttributeValue(this, AtsAttributeTypes.CreatedBy, user.getUserId()); } } - public void internalSetCreatedDate(Date date) throws OseeCoreException { + public void internalSetCreatedDate(Date date, IAtsChangeSet changes) throws OseeCoreException { getLog().internalResetCreatedDate(date); - AtsCore.getLogFactory().writeToStore(this); - if (isAttributeTypeValid(AtsAttributeTypes.CreatedDate)) { - setSoleAttributeValue(AtsAttributeTypes.CreatedDate, date); + if (changes.isAttributeTypeValid(this, AtsAttributeTypes.CreatedDate)) { + changes.setSoleAttributeValue(this, AtsAttributeTypes.CreatedDate, date); } } @@ -578,8 +570,12 @@ public abstract class AbstractWorkflowArtifact extends AbstractAtsArtifact imple return reason; } - public void setCancellationReason(String reason) throws OseeCoreException { - setSoleAttributeValue(AtsAttributeTypes.CancelledReason, reason); + public void setCancellationReason(String reason, IAtsChangeSet changes) throws OseeCoreException { + if (changes == null) { + setSoleAttributeValue(AtsAttributeTypes.CancelledReason, reason); + } else { + changes.setSoleAttributeValue(this, AtsAttributeTypes.CancelledReason, reason); + } } public String getCancelledFromState() throws OseeCoreException { @@ -614,15 +610,6 @@ public abstract class AbstractWorkflowArtifact extends AbstractAtsArtifact imple return getLog().getStateEvent(LogType.StateCancelled, stateName); } - @Override - public IAtsLogItem getStateStartedData(IStateToken state) throws OseeCoreException { - return getStateStartedData(state.getName()); - } - - public IAtsLogItem getStateStartedData(String stateName) throws OseeCoreException { - return getLog().getStateEvent(LogType.StateEntered, stateName); - } - public String getCompletedFromState() throws OseeCoreException { String fromState = getSoleAttributeValue(AtsAttributeTypes.CompletedFromState, null); if (!Strings.isValid(fromState)) { @@ -774,13 +761,13 @@ public abstract class AbstractWorkflowArtifact extends AbstractAtsArtifact imple } @Override - public void setAtsId(String atsId) throws OseeCoreException { - setSoleAttributeFromString(AtsAttributeTypes.AtsId, atsId); + public void setAtsId(String atsId, IAtsChangeSet changes) throws OseeCoreException { + changes.setSoleAttributeValue(this, AtsAttributeTypes.AtsId, atsId); } @Override - public String getTypeName() { - return getArtifactTypeName(); + public Object getStoreObject() { + return this; } } diff --git a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/workflow/AtsBranchServiceImpl.java b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/workflow/AtsBranchServiceImpl.java index 14202bb9c1e..a0b55326355 100644 --- a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/workflow/AtsBranchServiceImpl.java +++ b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/workflow/AtsBranchServiceImpl.java @@ -14,6 +14,7 @@ import org.eclipse.osee.ats.api.workflow.IAtsBranchService; import org.eclipse.osee.ats.api.workflow.IAtsTeamWorkflow; import org.eclipse.osee.ats.core.client.branch.AtsBranchManagerCore; import org.eclipse.osee.ats.core.client.team.TeamWorkFlowArtifact; +import org.eclipse.osee.framework.core.model.Branch; import org.eclipse.osee.framework.jdk.core.type.OseeCoreException; /** @@ -31,4 +32,9 @@ public class AtsBranchServiceImpl implements IAtsBranchService { return AtsBranchManagerCore.isWorkingBranchInWork(teamWf); } + @Override + public Branch getBranch(IAtsTeamWorkflow teamWf) throws OseeCoreException { + return AtsBranchManagerCore.getWorkingBranch((TeamWorkFlowArtifact) teamWf); + } + } diff --git a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/workflow/AtsWorkData.java b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/workflow/AtsWorkData.java index 4844c6d1208..8ec9f9a8566 100644 --- a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/workflow/AtsWorkData.java +++ b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/workflow/AtsWorkData.java @@ -15,6 +15,7 @@ import org.eclipse.osee.ats.api.data.AtsAttributeTypes; import org.eclipse.osee.ats.api.user.IAtsUser; import org.eclipse.osee.ats.api.workdef.StateType; import org.eclipse.osee.ats.api.workflow.IAtsWorkData; +import org.eclipse.osee.ats.core.AtsCore; import org.eclipse.osee.framework.jdk.core.type.OseeCoreException; /** @@ -113,4 +114,19 @@ public class AtsWorkData implements IAtsWorkData { awa.setSoleAttributeValue(AtsAttributeTypes.CompletedDate, cancelledBy); } + @Override + public IAtsUser getCreatedBy() throws OseeCoreException { + return AtsCore.getUserService().getUserById(awa.getSoleAttributeValue(AtsAttributeTypes.CreatedBy, "")); + } + + @Override + public Date getCreatedDate() throws OseeCoreException { + return awa.getSoleAttributeValue(AtsAttributeTypes.CreatedDate); + } + + @Override + public String getArtifactTypeName() throws OseeCoreException { + return awa.getArtifactTypeName(); + } + } diff --git a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/workflow/ITeamWorkflowProvider.java b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/workflow/ITeamWorkflowProvider.java deleted file mode 100644 index ecff4cd7b68..00000000000 --- a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/workflow/ITeamWorkflowProvider.java +++ /dev/null @@ -1,71 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004, 2007 Boeing. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Boeing - initial API and implementation - *******************************************************************************/ -package org.eclipse.osee.ats.core.client.workflow; - -import java.util.Collection; -import org.eclipse.osee.ats.api.IAtsWorkItem; -import org.eclipse.osee.ats.api.ai.IAtsActionableItem; -import org.eclipse.osee.ats.api.team.IAtsTeamDefinition; -import org.eclipse.osee.ats.api.workflow.IAtsTeamWorkflow; -import org.eclipse.osee.ats.core.client.team.TeamWorkFlowArtifact; -import org.eclipse.osee.framework.core.data.IArtifactType; -import org.eclipse.osee.framework.jdk.core.type.OseeCoreException; - -/** - * @author Donald G. Dunne - */ -public interface ITeamWorkflowProvider { - - /** - * Return true if this class/plugin is responsible for the creation of the Team Workflow that will be created for the - * given Team Definition. This should be a light-weight check. - * - * @param teamDef related to the workflow to be created - * @param actionableItems that were selected for the creation - * @return true if responsible, false if not - */ - public boolean isResponsibleForTeamWorkflowCreation(IAtsTeamDefinition teamDef, Collection<IAtsActionableItem> actionableItems) throws OseeCoreException; - - /** - * Same as @link getTeamWorkflowArtifactName() but returns the IArtifactType instead of String name. - */ - public IArtifactType getTeamWorkflowArtifactType(IAtsTeamDefinition teamDef, Collection<IAtsActionableItem> 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; - - /** - * 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); - - public String getWorkflowDefinitionId(IAtsWorkItem workItem) throws OseeCoreException; - - public String getRelatedTaskWorkflowDefinitionId(IAtsTeamWorkflow teamWf) throws OseeCoreException; - - /** - * Assigned or computed Id that will show at the top of the editor - */ - public String getPcrId(TeamWorkFlowArtifact teamArt) throws OseeCoreException; - - /** - * 5-9 character short name for UI and display purposes - */ - public String getArtifactTypeShortName(TeamWorkFlowArtifact teamArt); - - public String getBranchName(TeamWorkFlowArtifact teamArt); - - public boolean isResponsibleFor(AbstractWorkflowArtifact awa); -} diff --git a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/workflow/log/ArtifactLog.java b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/workflow/log/ArtifactLog.java deleted file mode 100644 index 9431ad1c443..00000000000 --- a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/workflow/log/ArtifactLog.java +++ /dev/null @@ -1,96 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2010 Boeing. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Boeing - initial API and implementation - *******************************************************************************/ -package org.eclipse.osee.ats.core.client.workflow.log; - -import java.lang.ref.WeakReference; -import java.util.logging.Level; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.Status; -import org.eclipse.osee.ats.api.data.AtsAttributeTypes; -import org.eclipse.osee.ats.api.user.IAtsUser; -import org.eclipse.osee.ats.api.workflow.log.ILogStorageProvider; -import org.eclipse.osee.ats.core.AtsCore; -import org.eclipse.osee.ats.core.client.internal.Activator; -import org.eclipse.osee.ats.core.client.util.AtsUtilCore; -import org.eclipse.osee.framework.jdk.core.type.OseeCoreException; -import org.eclipse.osee.framework.jdk.core.type.OseeStateException; -import org.eclipse.osee.framework.logging.OseeLog; -import org.eclipse.osee.framework.skynet.core.artifact.Artifact; - -/** - * @author Donald G. Dunne - */ -public class ArtifactLog implements ILogStorageProvider { - private final WeakReference<Artifact> artifactRef; - - public ArtifactLog(Artifact artifact) { - this.artifactRef = new WeakReference<Artifact>(artifact); - } - - @Override - public String getLogXml() { - try { - return getArtifact().getSoleAttributeValue(AtsAttributeTypes.Log, ""); - } catch (OseeCoreException ex) { - OseeLog.log(Activator.class, Level.SEVERE, ex); - return "getLogXml exception " + ex.getLocalizedMessage(); - } - } - - @Override - public IStatus saveLogXml(String xml) { - try { - getArtifact().setSoleAttributeValue(AtsAttributeTypes.Log, xml); - return Status.OK_STATUS; - } catch (OseeCoreException ex) { - OseeLog.log(Activator.class, Level.SEVERE, ex); - return new Status(IStatus.ERROR, Activator.PLUGIN_ID, "saveLogXml exception " + ex.getLocalizedMessage()); - } - } - - public Artifact getArtifact() throws OseeStateException { - if (artifactRef.get() == null) { - throw new OseeStateException("Artifact has been garbage collected"); - } - return artifactRef.get(); - } - - @Override - public String getLogTitle() { - try { - return "History for \"" + getArtifact().getArtifactTypeName() + "\" - " + getLogId() + " - titled \"" + getArtifact().getName() + "\""; - } catch (OseeCoreException ex) { - OseeLog.log(Activator.class, Level.SEVERE, ex); - return "getLogTitle exception " + ex.getLocalizedMessage(); - } - } - - @Override - public String getLogId() { - try { - return AtsUtilCore.getAtsId(getArtifact()); - } catch (OseeCoreException ex) { - OseeLog.log(Activator.class, Level.SEVERE, ex); - } - return "unknown"; - } - - @Override - public String getNameFromUserId(String userId) { - String name = "unknown (" + userId + ")"; - IAtsUser user = AtsCore.getUserService().getUserById(userId); - if (user != null) { - name = user.getName(); - } - return name; - } - -} diff --git a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/workflow/transition/TransitionHelperAdapter.java b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/workflow/transition/TransitionHelperAdapter.java index f84d425b89f..36ec539f556 100644 --- a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/workflow/transition/TransitionHelperAdapter.java +++ b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/workflow/transition/TransitionHelperAdapter.java @@ -11,17 +11,21 @@ package org.eclipse.osee.ats.core.client.workflow.transition; import org.eclipse.osee.ats.api.IAtsWorkItem; +import org.eclipse.osee.ats.api.user.IAtsUser; import org.eclipse.osee.ats.api.workflow.IAtsTeamWorkflow; import org.eclipse.osee.ats.api.workflow.transition.ITransitionHelper; import org.eclipse.osee.ats.core.AtsCore; import org.eclipse.osee.ats.core.users.AtsCoreUsers; import org.eclipse.osee.framework.jdk.core.type.OseeCoreException; +import org.eclipse.osee.framework.jdk.core.type.OseeStateException; /** * @author Donald G. Dunne */ public abstract class TransitionHelperAdapter implements ITransitionHelper { + IAtsUser transitionUser; + @Override public boolean isPrivilegedEditEnabled() { return false; @@ -49,7 +53,7 @@ public abstract class TransitionHelperAdapter implements ITransitionHelper { @Override public boolean isSystemUser() throws OseeCoreException { - return AtsCoreUsers.isAtsCoreUser(AtsCore.getUserService().getCurrentUser()); + return AtsCoreUsers.isAtsCoreUser(getTransitionUser()); } @Override @@ -57,4 +61,19 @@ public abstract class TransitionHelperAdapter implements ITransitionHelper { return workItem.getStateMgr().getAssignees().contains(AtsCoreUsers.GUEST_USER) || workItem.getStateMgr().getAssignees().contains( AtsCoreUsers.SYSTEM_USER); } + + @Override + public IAtsUser getTransitionUser() throws OseeStateException, OseeCoreException { + IAtsUser user = transitionUser; + if (user == null) { + user = AtsCore.getUserService().getCurrentUser(); + } + return user; + } + + @Override + public void setTransitionUser(IAtsUser user) throws OseeCoreException { + transitionUser = user; + } + } |