Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.osee.ats.impl/src/org/eclipse/osee/ats/impl/workitem/CreateTasksOperation.java')
-rw-r--r--plugins/org.eclipse.osee.ats.impl/src/org/eclipse/osee/ats/impl/workitem/CreateTasksOperation.java54
1 files changed, 53 insertions, 1 deletions
diff --git a/plugins/org.eclipse.osee.ats.impl/src/org/eclipse/osee/ats/impl/workitem/CreateTasksOperation.java b/plugins/org.eclipse.osee.ats.impl/src/org/eclipse/osee/ats/impl/workitem/CreateTasksOperation.java
index 7be6ffc36ca..e660beb6316 100644
--- a/plugins/org.eclipse.osee.ats.impl/src/org/eclipse/osee/ats/impl/workitem/CreateTasksOperation.java
+++ b/plugins/org.eclipse.osee.ats.impl/src/org/eclipse/osee/ats/impl/workitem/CreateTasksOperation.java
@@ -23,6 +23,7 @@ import org.eclipse.osee.ats.api.data.AtsAttributeTypes;
import org.eclipse.osee.ats.api.data.AtsRelationTypes;
import org.eclipse.osee.ats.api.task.JaxAtsTask;
import org.eclipse.osee.ats.api.task.JaxAttribute;
+import org.eclipse.osee.ats.api.task.JaxRelation;
import org.eclipse.osee.ats.api.task.NewTaskData;
import org.eclipse.osee.ats.api.task.NewTaskDatas;
import org.eclipse.osee.ats.api.user.IAtsUser;
@@ -30,11 +31,16 @@ import org.eclipse.osee.ats.api.util.IAtsChangeSet;
import org.eclipse.osee.ats.api.workdef.IAtsWorkDefinition;
import org.eclipse.osee.ats.api.workflow.IAtsTask;
import org.eclipse.osee.ats.api.workflow.IAtsTeamWorkflow;
+import org.eclipse.osee.ats.api.workflow.WorkItemType;
import org.eclipse.osee.ats.core.users.AtsCoreUsers;
import org.eclipse.osee.ats.core.util.AtsUtilCore;
import org.eclipse.osee.ats.impl.IAtsServer;
import org.eclipse.osee.framework.core.data.ArtifactId;
import org.eclipse.osee.framework.core.data.IAttributeType;
+import org.eclipse.osee.framework.core.data.IRelationType;
+import org.eclipse.osee.framework.core.data.IRelationTypeSide;
+import org.eclipse.osee.framework.core.enums.RelationSide;
+import org.eclipse.osee.framework.core.model.RelationTypeSide;
import org.eclipse.osee.framework.core.util.XResultData;
import org.eclipse.osee.framework.jdk.core.type.OseeArgumentException;
import org.eclipse.osee.framework.jdk.core.type.OseeStateException;
@@ -78,6 +84,7 @@ public class CreateTasksOperation {
Long teamWfUuid = newTaskData.getTeamWfUuid();
if (teamWfUuid == null) {
resultData.error("Team Workflow uuid not specified");
+ continue;
}
ArtifactReadable teamWfArt = atsServer.getArtifact(teamWfUuid);
if (teamWfArt == null) {
@@ -102,7 +109,7 @@ public class CreateTasksOperation {
for (JaxAtsTask task : newTaskData.getNewTasks()) {
Long taskUuid = task.getUuid();
- if (teamWfUuid != null && taskUuid > 0L) {
+ if (taskUuid > 0L) {
ArtifactReadable taskArt = atsServer.getArtifact(taskUuid);
if (taskArt != null) {
resultData.errorf("Task with uuid %d already exists for %s", taskUuid, task);
@@ -161,11 +168,40 @@ public class CreateTasksOperation {
attribute.getAttrTypeName(), task);
}
}
+
+ for (JaxRelation relation : task.getRelations()) {
+ IRelationType relationType = getRelationType(atsServer, relation.getRelationTypeName());
+ if (relationType == null) {
+ resultData.errorf("Relation Type [%s] not valid for Task creation in %s",
+ relation.getRelationTypeName(), task);
+ }
+ if (relation.getRelatedUuids().isEmpty()) {
+ resultData.errorf("Relation [%s] Uuids must be suplied Task creation in %s",
+ relation.getRelationTypeName(), task);
+ }
+ Collection<Integer> foundUuids = atsServer.getQueryService().createQuery(WorkItemType.WorkItem).andUuids(
+ relation.getRelatedUuids().toArray(new Long[relation.getRelatedUuids().size()])).getItemIds();
+ List<Long> notFoundUuids = relation.getRelatedUuids();
+ notFoundUuids.removeAll(foundUuids);
+ if (foundUuids.size() != relation.getRelatedUuids().size()) {
+ resultData.errorf("Relation [%s] Uuids [%s] do not match Work Items in task %s",
+ relation.getRelationTypeName(), notFoundUuids, task);
+ }
+ }
}
}
return resultData;
}
+ private IRelationType getRelationType(IAtsServer atsServer, String relationTypeName) {
+ for (IRelationType relation : atsServer.getOrcsApi().getOrcsTypes().getRelationTypes().getAll()) {
+ if (relation.getName().equals(relation.getName())) {
+ return relation;
+ }
+ }
+ return null;
+ }
+
private static IAttributeType getAttributeType(IAtsServer atsServer, String attrTypeName) {
for (IAttributeType attrType : atsServer.getOrcsApi().getOrcsTypes().getArtifactTypes().getAttributeTypes(
AtsArtifactTypes.Task, AtsUtilCore.getAtsBranch())) {
@@ -263,6 +299,22 @@ public class CreateTasksOperation {
changes.setValues(task, attrType, attribute.getValues());
}
+ for (JaxRelation relation : jaxTask.getRelations()) {
+ IRelationType relationType = getRelationType(atsServer, relation.getRelationTypeName());
+ if (relationType == null) {
+ resultData.errorf("Relation Type [%s] not valid for Task creation in %s",
+ relation.getRelationTypeName(), task);
+ }
+ Collection<IAtsWorkItem> items = atsServer.getQueryService().createQuery(WorkItemType.WorkItem).andUuids(
+ relation.getRelatedUuids().toArray(new Long[relation.getRelatedUuids().size()])).getItems();
+ IRelationTypeSide side = null;
+ if (relation.isSideA()) {
+ side = new RelationTypeSide(relationType, RelationSide.SIDE_A);
+ } else {
+ side = new RelationTypeSide(relationType, RelationSide.SIDE_B);
+ }
+ changes.setRelations(task, side, items);
+ }
changes.add(taskArt);
}
}

Back to the top