diff options
Diffstat (limited to 'plugins/org.eclipse.osee.ats.rest/src/org/eclipse/osee/ats/rest/internal/workitem/AtsWorkItemServiceImpl.java')
-rw-r--r-- | plugins/org.eclipse.osee.ats.rest/src/org/eclipse/osee/ats/rest/internal/workitem/AtsWorkItemServiceImpl.java | 197 |
1 files changed, 197 insertions, 0 deletions
diff --git a/plugins/org.eclipse.osee.ats.rest/src/org/eclipse/osee/ats/rest/internal/workitem/AtsWorkItemServiceImpl.java b/plugins/org.eclipse.osee.ats.rest/src/org/eclipse/osee/ats/rest/internal/workitem/AtsWorkItemServiceImpl.java new file mode 100644 index 00000000000..58b3bdaf24e --- /dev/null +++ b/plugins/org.eclipse.osee.ats.rest/src/org/eclipse/osee/ats/rest/internal/workitem/AtsWorkItemServiceImpl.java @@ -0,0 +1,197 @@ +/******************************************************************************* + * 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.rest.internal.workitem; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.List; +import org.eclipse.osee.ats.api.IAtsObject; +import org.eclipse.osee.ats.api.IAtsWorkItem; +import org.eclipse.osee.ats.api.data.AtsAttributeTypes; +import org.eclipse.osee.ats.api.data.AtsRelationTypes; +import org.eclipse.osee.ats.api.review.IAtsAbstractReview; +import org.eclipse.osee.ats.api.team.IAtsWorkItemFactory; +import org.eclipse.osee.ats.api.workdef.IAtsStateDefinition; +import org.eclipse.osee.ats.api.workdef.IStateToken; +import org.eclipse.osee.ats.api.workdef.StateType; +import org.eclipse.osee.ats.api.workdef.WidgetResult; +import org.eclipse.osee.ats.api.workflow.IAtsAction; +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.transition.ITransitionListener; +import org.eclipse.osee.ats.core.workflow.state.SimpleTeamState; +import org.eclipse.osee.ats.rest.internal.AtsServerImpl; +import org.eclipse.osee.framework.core.data.IArtifactType; +import org.eclipse.osee.framework.core.data.IAttributeType; +import org.eclipse.osee.framework.jdk.core.type.OseeCoreException; +import org.eclipse.osee.orcs.data.ArtifactReadable; + +/** + * @author Donald G. Dunne + */ +public class AtsWorkItemServiceImpl implements IAtsWorkItemService { + + private final IAtsWorkItemFactory workItemFactory; + private final IArtifactProvider artifactProvider; + + public AtsWorkItemServiceImpl(IAtsWorkItemFactory workItemFactory, IArtifactProvider artifactProvider) { + this.workItemFactory = workItemFactory; + this.artifactProvider = artifactProvider; + } + + @Override + public IAtsWorkData getWorkData(IAtsWorkItem workItem) throws OseeCoreException { + return new WorkData(workItemFactory.getWorkItem(workItem), artifactProvider.getArtifact(workItem)); + } + + @Override + public IArtifactType getArtifactType(IAtsWorkItem workItem) throws OseeCoreException { + return artifactProvider.getArtifact(workItem).getArtifactType(); + } + + @Override + public Collection<Object> getAttributeValues(IAtsObject atsObject, IAttributeType attributeType) throws OseeCoreException { + return AtsServerImpl.get().getArtifact(atsObject).getAttributeValues(attributeType); + } + + @Override + public boolean isOfType(IAtsWorkItem workItem, IArtifactType matchType) throws OseeCoreException { + return artifactProvider.getArtifact(workItem).getArtifactType().matches(matchType); + } + + @Override + public IAtsTeamWorkflow getParentTeamWorkflow(IAtsWorkItem workItem) throws OseeCoreException { + return workItemFactory.getWorkItem(workItem).getParentTeamWorkflow(); + } + + @Override + public int getTransactionNumber(IAtsWorkItem workItem) throws OseeCoreException { + return artifactProvider.getArtifact(workItem).getTransaction(); + } + + @Override + public Collection<IAtsTeamWorkflow> getTeams(IAtsAction action) throws OseeCoreException { + List<IAtsTeamWorkflow> teams = new ArrayList<IAtsTeamWorkflow>(); + for (ArtifactReadable art : AtsServerImpl.get().getArtifact(action).getRelated( + AtsRelationTypes.ActionToWorkflow_WorkFlow)) { + teams.add(AtsServerImpl.get().getWorkItemFactory().getTeamWf(art)); + } + return teams; + } + + @Override + public IStateToken getCurrentState(IAtsWorkItem workItem) throws OseeCoreException { + return new SimpleTeamState(getCurrentStateName(workItem), StateType.valueOf(AtsServerImpl.get().getArtifact( + workItem).getSoleAttributeValue(AtsAttributeTypes.CurrentStateType, ""))); + } + + @Override + public Collection<IAtsTask> getTasks(IAtsTeamWorkflow teamWf, IStateToken state) throws OseeCoreException { + final List<IAtsTask> tasks = new ArrayList<IAtsTask>(); + for (ArtifactReadable art : AtsServerImpl.get().getArtifact(teamWf).getRelated(AtsRelationTypes.TeamWfToTask_Task)) { + String relatedState = art.getSoleAttributeValue(AtsAttributeTypes.RelatedToState, ""); + if (state.getName().equals(relatedState)) { + tasks.add(AtsServerImpl.get().getWorkItemFactory().getTask(art)); + } + } + return tasks; + } + + @Override + public Collection<IAtsAbstractReview> getReviews(IAtsTeamWorkflow teamWf) throws OseeCoreException { + final List<IAtsAbstractReview> reviews = new ArrayList<IAtsAbstractReview>(); + for (ArtifactReadable art : AtsServerImpl.get().getArtifact(teamWf).getRelated( + AtsRelationTypes.TeamWorkflowToReview_Review)) { + reviews.add(AtsServerImpl.get().getWorkItemFactory().getReview(art)); + } + return reviews; + } + + @Override + public Collection<IAtsAbstractReview> getReviews(IAtsTeamWorkflow teamWf, IStateToken state) throws OseeCoreException { + final List<IAtsAbstractReview> reviews = new ArrayList<IAtsAbstractReview>(); + for (ArtifactReadable art : AtsServerImpl.get().getArtifact(teamWf).getRelated( + AtsRelationTypes.TeamWorkflowToReview_Review)) { + String relatedState = art.getSoleAttributeValue(AtsAttributeTypes.RelatedToState, ""); + if (state.getName().equals(relatedState)) { + reviews.add(AtsServerImpl.get().getWorkItemFactory().getReview(art)); + } + } + return reviews; + } + + @Override + public Collection<IAtsTask> getTasks(IAtsTeamWorkflow teamWf) throws OseeCoreException { + final List<IAtsTask> tasks = new ArrayList<IAtsTask>(); + for (ArtifactReadable art : AtsServerImpl.get().getArtifact(teamWf).getRelated(AtsRelationTypes.TeamWfToTask_Task)) { + tasks.add(AtsServerImpl.get().getWorkItemFactory().getTask(art)); + } + return tasks; + } + + @Override + public IAtsTeamWorkflow getFirstTeam(IAtsAction action) throws OseeCoreException { + IAtsTeamWorkflow team = null; + Collection<IAtsTeamWorkflow> teams = getTeams(action); + if (!teams.isEmpty()) { + team = teams.iterator().next(); + } + return team; + } + + @Override + public String getCurrentStateName(IAtsWorkItem workItem) throws OseeCoreException { + return artifactProvider.getArtifact(workItem).getSoleAttributeValue(AtsAttributeTypes.CurrentState, "").replaceAll( + ";.*$", ""); + } + + @Override + public void clearImplementersCache(IAtsWorkItem workItem) { + // do nothing; no cache on server + } + + @Override + public Collection<WidgetResult> validateWidgetTransition(IAtsWorkItem workItem, IAtsStateDefinition toStateDef) { + return Collections.emptyList(); + } + + @Override + public Collection<IAtsTask> getTaskArtifacts(IAtsWorkItem workItem) throws OseeCoreException { + if (workItem.isTeamWorkflow()) { + return getTasks((IAtsTeamWorkflow) workItem); + } + return java.util.Collections.emptyList(); + } + + @Override + public Collection<ITransitionListener> getTransitionListeners() { + return Collections.emptyList(); + } + + @Override + public String getTargetedVersionStr(IAtsTeamWorkflow teamWf) { + String version = ""; + try { + ArtifactReadable art = + artifactProvider.getArtifact(teamWf).getRelated(AtsRelationTypes.TeamWorkflowTargetedForVersion_Version).getOneOrNull(); + if (art != null) { + version = art.getName(); + } + } catch (OseeCoreException ex) { + version = "exception: " + ex; + } + return version; + } + +} |