Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/task/AbstractAtsTaskService.java17
-rw-r--r--plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/task/AtsTaskEndpointApi.java2
-rw-r--r--plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/task/IAtsTaskService.java4
-rw-r--r--plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/task/JaxAtsTask.java28
-rw-r--r--plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/task/JaxAtsTaskFactory.java38
-rw-r--r--plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/task/JaxRelation.java55
-rw-r--r--plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/task/NewTaskData.java8
-rw-r--r--plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/task/NewTaskDataFactory.java40
-rw-r--r--plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/task/NewTaskDatas.java50
-rw-r--r--plugins/org.eclipse.osee.ats.client.demo/src/org/eclipse/osee/ats/client/demo/config/DemoDbTasks.java28
-rw-r--r--plugins/org.eclipse.osee.ats.client.demo/src/org/eclipse/osee/ats/client/demo/navigate/CreateGoalTestDemoArtifacts.java87
-rw-r--r--plugins/org.eclipse.osee.ats.client.integration.tests/AtsClient_Integration_TestSuite.launch1
-rw-r--r--plugins/org.eclipse.osee.ats.client.integration.tests/META-INF/MANIFEST.MF1
-rw-r--r--plugins/org.eclipse.osee.ats.client.integration.tests/OSEE-INF/support/WorkDef_Team_DecisionReviewDefinitionManagerTest_Prepare.ats44
-rw-r--r--plugins/org.eclipse.osee.ats.client.integration.tests/OSEE-INF/support/WorkDef_Team_DecisionReviewDefinitionManagerTest_toDecision.ats46
-rw-r--r--plugins/org.eclipse.osee.ats.client.integration.tests/OSEE-INF/support/WorkDef_Team_PeerReviewDefinitionManagerTest_Transition.ats43
-rw-r--r--plugins/org.eclipse.osee.ats.client.integration.tests/OSEE-INF/support/WorkDef_Team_TransitionManagerTest_TargetedVersion.ats75
-rw-r--r--plugins/org.eclipse.osee.ats.client.integration.tests/OSEE-INF/support/WorkDef_Team_TransitionManagerTest_WidgetRequiredCompletion.ats76
-rw-r--r--plugins/org.eclipse.osee.ats.client.integration.tests/OSEE-INF/support/WorkDef_Team_TransitionManagerTest_WidgetRequiredTransition.ats76
-rw-r--r--plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/actions/OpenInAtsWorldActionTest2.java2
-rw-r--r--plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/actions/OpenNewAtsTaskEditorActionTest.java8
-rw-r--r--plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/actions/OpenParentActionTest.java2
-rw-r--r--plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/column/EstimatedHoursColumnTest.java30
-rw-r--r--plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/core/client/AtsTestUtil.java256
-rw-r--r--plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/core/client/AtsTestUtilTest.java25
-rw-r--r--plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/core/client/review/DecisionReviewDefinitionManagerTest.java85
-rw-r--r--plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/core/client/review/PeerReviewDefinitionManagerTest.java45
-rw-r--r--plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/core/client/review/PeerToPeerReviewManagerTest.java27
-rw-r--r--plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/core/client/task/TaskManagerTest.java134
-rw-r--r--plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/core/client/util/CopyActionDetailsTest.java11
-rw-r--r--plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/core/client/workflow/transition/TransitionManagerTest.java159
-rw-r--r--plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/workflow/AtsTaskEndpointImplTest.java10
-rw-r--r--plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/branch/AtsBranchUtil.java20
-rw-r--r--plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/config/IAtsClientVersionService.java2
-rw-r--r--plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/AtsClientImpl.java3
-rw-r--r--plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/task/AbstractTaskableArtifact.java68
-rw-r--r--plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/task/AtsTaskService.java44
-rw-r--r--plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/task/TaskManager.java54
-rw-r--r--plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/util/AtsChangeSet.java8
-rw-r--r--plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/util/AtsUtilClient.java5
-rw-r--r--plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/workflow/AbstractWorkflowArtifact.java8
-rw-r--r--plugins/org.eclipse.osee.ats.core.test/src/org/eclipse/osee/ats/core/workdef/AtsWorkDefinitionAdminImplTest.java2
-rw-r--r--plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/workdef/AtsWorkDefinitionAdminImpl.java5
-rw-r--r--plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/workflow/transition/TransitionManager.java15
-rw-r--r--plugins/org.eclipse.osee.ats.dsl.integration/src/org/eclipse/osee/ats/dsl/integration/internal/AtsWorkDefinitionServiceImpl.java3
-rw-r--r--plugins/org.eclipse.osee.ats.dsl.integration/src/org/eclipse/osee/ats/dsl/integration/internal/ConvertAtsDslToWorkDefinition.java30
-rw-r--r--plugins/org.eclipse.osee.ats.impl/src/org/eclipse/osee/ats/impl/internal/AtsServerImpl.java8
-rw-r--r--plugins/org.eclipse.osee.ats.impl/src/org/eclipse/osee/ats/impl/internal/util/AtsChangeSet.java1
-rw-r--r--plugins/org.eclipse.osee.ats.impl/src/org/eclipse/osee/ats/impl/internal/workitem/AtsTaskService.java18
-rw-r--r--plugins/org.eclipse.osee.ats.impl/src/org/eclipse/osee/ats/impl/workitem/CreateTasksOperation.java267
-rw-r--r--plugins/org.eclipse.osee.ats.rest/src/org/eclipse/osee/ats/rest/internal/workitem/AtsTaskEndpointImpl.java16
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/internal/AtsOseeCmService.java22
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/operation/ImportTasksFromSpreadsheet.java25
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/task/TaskComposite.java21
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/Import/ExcelAtsTaskArtifactExtractor.java114
-rw-r--r--plugins/org.eclipse.osee.framework.jdk.core/src/org/eclipse/osee/framework/jdk/core/util/Lib.java40
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/artifact/ArtifactTypeManager.java4
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/artifact/search/ArtifactQuery.java12
-rw-r--r--plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/massEditor/MassArtifactEditor.java2
-rw-r--r--plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/internal/transaction/TransactionBuilderImpl.java2
-rw-r--r--plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/util/IdentityManagerImpl.java3
61 files changed, 1511 insertions, 824 deletions
diff --git a/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/task/AbstractAtsTaskService.java b/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/task/AbstractAtsTaskService.java
index 70c2b98755e..0b5292a72a1 100644
--- a/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/task/AbstractAtsTaskService.java
+++ b/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/task/AbstractAtsTaskService.java
@@ -30,11 +30,19 @@ public abstract class AbstractAtsTaskService implements IAtsTaskService {
}
@Override
+ public NewTaskData getNewTaskData(IAtsTeamWorkflow teamWf, List<String> titles, List<IAtsUser> assignees, Date createdDate, IAtsUser createdBy, String relatedToState, String taskWorkDef, Map<String, List<String>> attributes) {
+ return getNewTaskData(teamWf, titles, assignees, createdDate, createdBy, relatedToState, taskWorkDef, attributes,
+ null);
+ }
+
+ @Override
+ public Collection<IAtsTask> createTasks(NewTaskData newTaskData) {
+ return createTasks(new NewTaskDatas(newTaskData));
+ }
+
+ @Override
public NewTaskData getNewTaskData(IAtsTeamWorkflow teamWf, List<String> titles, List<IAtsUser> assignees, Date createdDate, IAtsUser createdBy, String relatedToState, String taskWorkDef, Map<String, List<String>> attributes, String commitComment) {
- NewTaskData newTaskData = new NewTaskData();
- newTaskData.setCommitComment(commitComment);
- newTaskData.setAsUserId(createdBy.getUserId());
- newTaskData.setTeamWfUuid(teamWf.getUuid());
+ NewTaskData newTaskData = NewTaskDataFactory.get("Import Tasks from Simple List", createdBy, teamWf);
if (createdDate == null) {
createdDate = new Date();
}
@@ -63,6 +71,7 @@ public abstract class AbstractAtsTaskService implements IAtsTaskService {
task.addAttributes(entry.getKey(), entry.getValue());
}
}
+ newTaskData.setCommitComment(commitComment);
}
return newTaskData;
}
diff --git a/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/task/AtsTaskEndpointApi.java b/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/task/AtsTaskEndpointApi.java
index 21814c249bd..83d632be43b 100644
--- a/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/task/AtsTaskEndpointApi.java
+++ b/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/task/AtsTaskEndpointApi.java
@@ -27,7 +27,7 @@ public interface AtsTaskEndpointApi {
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
- public Response create(NewTaskData newTaskData);
+ public Response create(NewTaskDatas newTaskDatas);
@POST
public Response get(long taskUuid);
diff --git a/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/task/IAtsTaskService.java b/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/task/IAtsTaskService.java
index a71b62e7cbe..1a2d99e4b69 100644
--- a/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/task/IAtsTaskService.java
+++ b/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/task/IAtsTaskService.java
@@ -34,4 +34,8 @@ public interface IAtsTaskService {
Collection<IAtsTask> createTasks(NewTaskData newTaskData, IAtsChangeSet changes);
+ Collection<IAtsTask> createTasks(NewTaskDatas newTaskDatas);
+
+ NewTaskData getNewTaskData(IAtsTeamWorkflow teamWf, List<String> titles, List<IAtsUser> assignees, Date createdDate, IAtsUser createdBy, String relatedToState, String taskWorkDef, Map<String, List<String>> attributes);
+
}
diff --git a/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/task/JaxAtsTask.java b/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/task/JaxAtsTask.java
index 44dae70420f..9ebb41fe449 100644
--- a/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/task/JaxAtsTask.java
+++ b/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/task/JaxAtsTask.java
@@ -16,6 +16,8 @@ import java.util.LinkedList;
import java.util.List;
import javax.xml.bind.annotation.XmlRootElement;
import org.eclipse.osee.ats.api.config.JaxAtsObject;
+import org.eclipse.osee.framework.core.data.IAttributeType;
+import org.eclipse.osee.framework.core.data.IRelationTypeSide;
/**
* @author Donald G. Dunne
@@ -29,6 +31,7 @@ public class JaxAtsTask extends JaxAtsObject {
private String relatedToState;
private String taskWorkDef;
List<JaxAttribute> attributes;
+ List<JaxRelation> relations;
public JaxAtsTask() {
attributes = new ArrayList<>();
@@ -101,4 +104,29 @@ public class JaxAtsTask extends JaxAtsObject {
attributes.add(attr);
}
+ public void addAttribute(IAttributeType attrType, String value) {
+ addAttribute(attrType.getName(), value);
+ }
+
+ public void addRelation(IRelationTypeSide relationSide, long... relatedUuid) {
+ JaxRelation relation = new JaxRelation();
+ relation.setRelationTypeName(relationSide.getName());
+ relation.setSideA(relationSide.getSide().isSideA());
+ for (long relationUuid : relatedUuid) {
+ relation.getRelatedUuids().add(relationUuid);
+ }
+ relations.add(relation);
+ }
+
+ public List<JaxRelation> getRelations() {
+ if (relations == null) {
+ relations = new LinkedList<>();
+ }
+ return relations;
+ }
+
+ public void setRelations(List<JaxRelation> relations) {
+ this.relations = relations;
+ }
+
}
diff --git a/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/task/JaxAtsTaskFactory.java b/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/task/JaxAtsTaskFactory.java
new file mode 100644
index 00000000000..ce51e260d87
--- /dev/null
+++ b/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/task/JaxAtsTaskFactory.java
@@ -0,0 +1,38 @@
+/*******************************************************************************
+ * Copyright (c) 2015 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.api.task;
+
+import java.util.Date;
+import org.eclipse.osee.ats.api.user.IAtsUser;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class JaxAtsTaskFactory {
+
+ private JaxAtsTaskFactory() {
+ // utility class
+ }
+
+ public static JaxAtsTask get(String title, IAtsUser createdBy, Date createdDate) {
+ JaxAtsTask task = new JaxAtsTask();
+ task.setCreatedByUserId(createdBy.getUserId());
+ task.setCreatedDate(createdDate);
+ task.setName(title);
+ return task;
+ }
+
+ public static JaxAtsTask get(NewTaskData newTaskData, String title, IAtsUser createdBy, Date createdDate) {
+ JaxAtsTask task = get(title, createdBy, createdDate);
+ newTaskData.getNewTasks().add(task);
+ return task;
+ }
+}
diff --git a/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/task/JaxRelation.java b/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/task/JaxRelation.java
new file mode 100644
index 00000000000..3292bf0697e
--- /dev/null
+++ b/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/task/JaxRelation.java
@@ -0,0 +1,55 @@
+/*******************************************************************************
+ * Copyright (c) 2015 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.api.task;
+
+import java.util.List;
+import javax.xml.bind.annotation.XmlRootElement;
+
+/**
+ * @author Donald G. Dunne
+ */
+@XmlRootElement
+public class JaxRelation {
+
+ private String relationTypeName;
+ private boolean sideA;
+ private List<Long> relatedUuids;
+
+ public String getRelationTypeName() {
+ return relationTypeName;
+ }
+
+ public void setRelationTypeName(String relationTypeName) {
+ this.relationTypeName = relationTypeName;
+ }
+
+ public boolean isSideA() {
+ return sideA;
+ }
+
+ public void setSideA(boolean sideA) {
+ this.sideA = sideA;
+ }
+
+ public List<Long> getRelatedUuids() {
+ return relatedUuids;
+ }
+
+ public void setRelatedUuids(List<Long> relatedUuids) {
+ this.relatedUuids = relatedUuids;
+ }
+
+ @Override
+ public String toString() {
+ return "JaxRelation [type=" + relationTypeName + ", sideA=" + sideA + ", relatedUuids=" + relatedUuids + "]";
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/task/NewTaskData.java b/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/task/NewTaskData.java
index ba6beda8e79..d8b762c569a 100644
--- a/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/task/NewTaskData.java
+++ b/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/task/NewTaskData.java
@@ -25,9 +25,6 @@ public class NewTaskData {
String asUserId;
String commitComment;
- public NewTaskData() {
- }
-
public Long getTeamWfUuid() {
return teamWfUuid;
}
@@ -63,4 +60,9 @@ public class NewTaskData {
this.asUserId = asUserId;
}
+ @Override
+ public String toString() {
+ return "NewTaskData [teamUuid=" + teamWfUuid + ", tasks=" + newTasks + ", asUserId=" + asUserId + ", commitComment=" + commitComment + "]";
+ }
+
}
diff --git a/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/task/NewTaskDataFactory.java b/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/task/NewTaskDataFactory.java
new file mode 100644
index 00000000000..b9b77a4f6d1
--- /dev/null
+++ b/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/task/NewTaskDataFactory.java
@@ -0,0 +1,40 @@
+/*******************************************************************************
+ * Copyright (c) 2015 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.api.task;
+
+import org.eclipse.osee.ats.api.user.IAtsUser;
+import org.eclipse.osee.ats.api.workflow.IAtsTeamWorkflow;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class NewTaskDataFactory {
+
+ private NewTaskDataFactory() {
+ // utility class
+ }
+
+ public static NewTaskData get(String comment, String asUserId, Long teamWfUuid) {
+ NewTaskData newTaskData = new NewTaskData();
+ newTaskData.setAsUserId(asUserId);
+ newTaskData.setCommitComment(comment);
+ newTaskData.setTeamWfUuid(teamWfUuid);
+ return newTaskData;
+ }
+
+ public static NewTaskData get(String comment, IAtsUser atsUser, IAtsTeamWorkflow teamWf) {
+ NewTaskData newTaskData = new NewTaskData();
+ newTaskData.setAsUserId(atsUser.getUserId());
+ newTaskData.setCommitComment(comment);
+ newTaskData.setTeamWfUuid(teamWf.getUuid());
+ return newTaskData;
+ }
+}
diff --git a/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/task/NewTaskDatas.java b/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/task/NewTaskDatas.java
new file mode 100644
index 00000000000..fe5e1d278d3
--- /dev/null
+++ b/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/task/NewTaskDatas.java
@@ -0,0 +1,50 @@
+/*******************************************************************************
+ * Copyright (c) 2015 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.api.task;
+
+import java.util.LinkedList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlRootElement;
+
+/**
+ * @author Donald G. Dunne
+ */
+@XmlRootElement
+public class NewTaskDatas {
+
+ private List<NewTaskData> taskDatas = new LinkedList<>();
+
+ public NewTaskDatas() {
+ // for jax-rs instantiation
+ }
+
+ public NewTaskDatas(NewTaskData newTaskData) {
+ taskDatas.add(newTaskData);
+ }
+
+ public List<NewTaskData> getTaskDatas() {
+ return taskDatas;
+ }
+
+ public void setTaskDatas(List<NewTaskData> taskDatas) {
+ this.taskDatas = taskDatas;
+ }
+
+ public void add(NewTaskData newTaskData) {
+ taskDatas.add(newTaskData);
+ }
+
+ @Override
+ public String toString() {
+ return "NewTaskDatas [datas=" + taskDatas + "]";
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.ats.client.demo/src/org/eclipse/osee/ats/client/demo/config/DemoDbTasks.java b/plugins/org.eclipse.osee.ats.client.demo/src/org/eclipse/osee/ats/client/demo/config/DemoDbTasks.java
index 2beffc26454..70c28fbbfb2 100644
--- a/plugins/org.eclipse.osee.ats.client.demo/src/org/eclipse/osee/ats/client/demo/config/DemoDbTasks.java
+++ b/plugins/org.eclipse.osee.ats.client.demo/src/org/eclipse/osee/ats/client/demo/config/DemoDbTasks.java
@@ -16,12 +16,16 @@ import java.util.Collection;
import java.util.Date;
import java.util.List;
import java.util.logging.Level;
+import org.eclipse.osee.ats.api.task.JaxAtsTask;
+import org.eclipse.osee.ats.api.task.JaxAtsTaskFactory;
+import org.eclipse.osee.ats.api.task.NewTaskData;
+import org.eclipse.osee.ats.api.task.NewTaskDataFactory;
+import org.eclipse.osee.ats.api.task.NewTaskDatas;
import org.eclipse.osee.ats.api.user.IAtsUser;
import org.eclipse.osee.ats.client.demo.DemoUsers;
import org.eclipse.osee.ats.client.demo.internal.Activator;
import org.eclipse.osee.ats.client.demo.internal.AtsClientService;
import org.eclipse.osee.ats.core.client.team.TeamWorkFlowArtifact;
-import org.eclipse.osee.ats.core.client.util.AtsChangeSet;
import org.eclipse.osee.framework.logging.OseeLog;
/**
@@ -35,26 +39,26 @@ public class DemoDbTasks {
}
Date createdDate = new Date();
IAtsUser createdBy = AtsClientService.get().getUserService().getCurrentUser();
- AtsChangeSet changes = new AtsChangeSet("Populate Demo DB - Create Tasks");
boolean firstTaskWorkflow = true;
+ NewTaskDatas newTaskDatas = new NewTaskDatas();
for (TeamWorkFlowArtifact codeArt : DemoDbUtil.getSampleCodeWorkflows()) {
- List<IAtsUser> demoUsers = new ArrayList<>();
+ NewTaskData newTaskData = NewTaskDataFactory.get("Populate Demo DB - Create Tasks", createdBy, codeArt);
+ List<String> assigneeUserIds = new ArrayList<>();
if (firstTaskWorkflow) {
- demoUsers.add(AtsClientService.get().getUserServiceClient().getUserFromOseeUser(
- DemoDbUtil.getDemoUser(DemoUsers.Joe_Smith)));
- demoUsers.add(AtsClientService.get().getUserServiceClient().getUserFromOseeUser(
- DemoDbUtil.getDemoUser(DemoUsers.Kay_Jones)));
+ assigneeUserIds.add(DemoDbUtil.getDemoUser(DemoUsers.Joe_Smith).getUserId());
+ assigneeUserIds.add(DemoDbUtil.getDemoUser(DemoUsers.Kay_Jones).getUserId());
} else {
- demoUsers.add(AtsClientService.get().getUserServiceClient().getUserFromOseeUser(
- DemoDbUtil.getDemoUser(DemoUsers.Joe_Smith)));
+ assigneeUserIds.add(DemoDbUtil.getDemoUser(DemoUsers.Joe_Smith).getUserId());
}
for (String title : getTaskTitles(firstTaskWorkflow)) {
- codeArt.createNewTask(demoUsers, title, createdDate, createdBy, codeArt.getCurrentStateName(), changes);
+ JaxAtsTask task = JaxAtsTaskFactory.get(newTaskData, title, createdBy, createdDate);
+ task.setRelatedToState(codeArt.getCurrentStateName());
+ task.setAssigneeUserIds(assigneeUserIds);
}
firstTaskWorkflow = false;
- changes.add(codeArt);
+ newTaskDatas.add(newTaskData);
}
- changes.execute();
+ AtsClientService.get().getTaskService().createTasks(newTaskDatas);
}
/**
diff --git a/plugins/org.eclipse.osee.ats.client.demo/src/org/eclipse/osee/ats/client/demo/navigate/CreateGoalTestDemoArtifacts.java b/plugins/org.eclipse.osee.ats.client.demo/src/org/eclipse/osee/ats/client/demo/navigate/CreateGoalTestDemoArtifacts.java
index fb4844df1e6..cd264e6d0f8 100644
--- a/plugins/org.eclipse.osee.ats.client.demo/src/org/eclipse/osee/ats/client/demo/navigate/CreateGoalTestDemoArtifacts.java
+++ b/plugins/org.eclipse.osee.ats.client.demo/src/org/eclipse/osee/ats/client/demo/navigate/CreateGoalTestDemoArtifacts.java
@@ -11,12 +11,19 @@
package org.eclipse.osee.ats.client.demo.navigate;
import java.util.Arrays;
+import java.util.Collection;
import java.util.Date;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.osee.ats.AtsImage;
+import org.eclipse.osee.ats.api.data.AtsRelationTypes;
+import org.eclipse.osee.ats.api.task.JaxAtsTaskFactory;
+import org.eclipse.osee.ats.api.task.NewTaskData;
+import org.eclipse.osee.ats.api.task.NewTaskDataFactory;
+import org.eclipse.osee.ats.api.task.NewTaskDatas;
import org.eclipse.osee.ats.api.team.ChangeType;
import org.eclipse.osee.ats.api.user.IAtsUser;
import org.eclipse.osee.ats.api.util.IAtsChangeSet;
+import org.eclipse.osee.ats.api.workflow.IAtsTask;
import org.eclipse.osee.ats.artifact.GoalManager;
import org.eclipse.osee.ats.client.demo.internal.AtsClientService;
import org.eclipse.osee.ats.core.client.action.ActionArtifact;
@@ -24,7 +31,6 @@ import org.eclipse.osee.ats.core.client.action.ActionManager;
import org.eclipse.osee.ats.core.client.artifact.GoalArtifact;
import org.eclipse.osee.ats.core.client.review.PeerToPeerReviewArtifact;
import org.eclipse.osee.ats.core.client.review.PeerToPeerReviewManager;
-import org.eclipse.osee.ats.core.client.task.TaskArtifact;
import org.eclipse.osee.ats.core.client.team.TeamWorkFlowArtifact;
import org.eclipse.osee.ats.core.client.util.AtsChangeSet;
import org.eclipse.osee.ats.core.config.ActionableItems;
@@ -71,21 +77,32 @@ public class CreateGoalTestDemoArtifacts extends XNavigateItemAction {
TeamWorkFlowArtifact teamArt = createAction1(changes, sawCodeGoal);
createAction2(changes, sawCodeGoal, cisReqGoal);
createAction3(changes, sawTestGoal, cisReqGoal);
- teamArt = createAction456(changes, sawCodeGoal, facilitiesGoal, teamArt);
createAction7(changes, facilitiesGoal);
+ changes.execute();
+
+ teamArt = createAction456(sawCodeGoal, facilitiesGoal, teamArt);
+
+ NewTaskData newTaskData = NewTaskDataFactory.get(getName(), createdBy, teamArt);
for (String name : Arrays.asList("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P",
"Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "AA", "BB", "CC", "DD", "EE", "FF", "GG", "HH", "II", "JJ",
"KK", "LL", "MM", "NN", "OO", "PP", "QQ", "RR")) {
- TaskArtifact taskArt = teamArt.createNewTask("Task " + name, createdDate, createdBy, changes);
- toolsTeamGoal.addMember(taskArt);
- changes.add(taskArt);
+ JaxAtsTaskFactory.get(newTaskData, "Task " + name, createdBy, createdDate);
}
- changes.add(toolsTeamGoal);
+ Collection<IAtsTask> createTasks =
+ AtsClientService.get().getTaskService().createTasks(new NewTaskDatas(newTaskData));
+
+ changes = new AtsChangeSet(getName());
+ for (IAtsTask task : createTasks) {
+ Artifact taskArt = AtsClientService.get().getArtifact(task);
+ toolsTeamGoal.addMember(taskArt);
+ changes.setRelation(toolsTeamGoal, AtsRelationTypes.Goal_Member, taskArt);
+ }
changes.execute();
- WorldEditor.open(new WorldEditorSimpleProvider("Goals", Arrays.asList(sawCodeGoal, sawTestGoal, toolsTeamGoal,
- facilitiesGoal, cisReqGoal)));
+
+ WorldEditor.open(new WorldEditorSimpleProvider("Goals",
+ Arrays.asList(sawCodeGoal, sawTestGoal, toolsTeamGoal, facilitiesGoal, cisReqGoal)));
}
@@ -98,30 +115,42 @@ public class CreateGoalTestDemoArtifacts extends XNavigateItemAction {
changes.add(facilitiesGoal);
}
- private TeamWorkFlowArtifact createAction456(IAtsChangeSet changes, GoalArtifact sawCodeGoal, GoalArtifact facilitiesGoal, TeamWorkFlowArtifact teamArt) throws OseeCoreException {
+ private TeamWorkFlowArtifact createAction456(GoalArtifact sawCodeGoal, GoalArtifact facilitiesGoal, TeamWorkFlowArtifact teamArt) throws OseeCoreException {
+ AtsChangeSet changes = new AtsChangeSet(getName());
+ NewTaskDatas newTaskDatas = new NewTaskDatas();
for (String msaTool : Arrays.asList("Backups", "Computers", "Network")) {
- Artifact action =
- ActionManager.createAction(null, "Fix " + msaTool + " button", "Description", ChangeType.Problem, "4",
- false, null,
- ActionableItems.getActionableItems(Arrays.asList(msaTool), AtsClientService.get().getConfig()),
- createdDate, createdBy, null, changes);
+ Artifact action = ActionManager.createAction(null, "Fix " + msaTool + " button", "Description",
+ ChangeType.Problem, "4", false, null,
+ ActionableItems.getActionableItems(Arrays.asList(msaTool), AtsClientService.get().getConfig()), createdDate,
+ createdBy, null, changes);
facilitiesGoal.addMember(ActionManager.getFirstTeam(action));
teamArt = ActionManager.getFirstTeam(action);
- TaskArtifact taskArt = teamArt.createNewTask("Task 1", createdDate, createdBy, changes);
- sawCodeGoal.addMember(taskArt);
- changes.add(taskArt);
- taskArt = teamArt.createNewTask("Task 2", createdDate, createdBy, changes);
- facilitiesGoal.addMember(taskArt);
- changes.add(taskArt);
+ NewTaskData newTaskData = NewTaskDataFactory.get("createAction456", createdBy, teamArt);
+ newTaskDatas.add(newTaskData);
+ JaxAtsTaskFactory.get(newTaskData, "Task 1", createdBy, createdDate);
+ JaxAtsTaskFactory.get(newTaskData, "Task 2", createdBy, createdDate);
+ }
+ changes.add(facilitiesGoal);
+ changes.add(sawCodeGoal);
+ changes.execute();
+
+ Collection<IAtsTask> createTasks = AtsClientService.get().getTaskService().createTasks(newTaskDatas);
+
+ changes = new AtsChangeSet(getName());
+ for (IAtsTask task : createTasks) {
+ facilitiesGoal.addMember((Artifact) task.getStoreObject());
+ sawCodeGoal.addMember((Artifact) task.getStoreObject());
}
+ changes.execute();
+
return teamArt;
}
private void createAction3(IAtsChangeSet changes, GoalArtifact sawCodeGoal, GoalArtifact cisReqGoal) throws OseeCoreException {
- Artifact action =
- ActionManager.createAction(null, "Remove Workflow button", "Description", ChangeType.Problem, "4", false,
- null, ActionableItems.getActionableItems(Arrays.asList("SAW Code", "CIS Requirements"),
- AtsClientService.get().getConfig()), createdDate, createdBy, null, changes);
+ Artifact action = ActionManager.createAction(null, "Remove Workflow button", "Description", ChangeType.Problem,
+ "4", false, null, ActionableItems.getActionableItems(Arrays.asList("SAW Code", "CIS Requirements"),
+ AtsClientService.get().getConfig()),
+ createdDate, createdBy, null, changes);
sawCodeGoal.addMember(ActionManager.getFirstTeam(action));
cisReqGoal.addMember(ActionManager.getFirstTeam(action));
}
@@ -130,16 +159,16 @@ public class CreateGoalTestDemoArtifacts extends XNavigateItemAction {
ActionArtifact action =
ActionManager.createAction(null, "Add CDB Check Signals", "Description", ChangeType.Problem, "4", false, null,
ActionableItems.getActionableItems(Arrays.asList("SAW Code", "CIS Requirements"),
- AtsClientService.get().getConfig()), createdDate, createdBy, null, changes);
+ AtsClientService.get().getConfig()),
+ createdDate, createdBy, null, changes);
sawCodeGoal.addMember(ActionManager.getFirstTeam(action));
cisReqGoal.addMember(ActionManager.getFirstTeam(action));
}
private TeamWorkFlowArtifact createAction1(IAtsChangeSet changes, GoalArtifact sawCodeGoal) throws OseeCoreException {
- Artifact action =
- ActionManager.createAction(null, "Fix this model", "Description", ChangeType.Problem, "2", false, null,
- ActionableItems.getActionableItems(Arrays.asList("SAW Code"), AtsClientService.get().getConfig()),
- createdDate, createdBy, null, changes);
+ Artifact action = ActionManager.createAction(null, "Fix this model", "Description", ChangeType.Problem, "2",
+ false, null, ActionableItems.getActionableItems(Arrays.asList("SAW Code"), AtsClientService.get().getConfig()),
+ createdDate, createdBy, null, changes);
sawCodeGoal.addMember(ActionManager.getFirstTeam(action));
TeamWorkFlowArtifact teamArt = ActionManager.getFirstTeam(action);
PeerToPeerReviewArtifact peerReviewArt =
diff --git a/plugins/org.eclipse.osee.ats.client.integration.tests/AtsClient_Integration_TestSuite.launch b/plugins/org.eclipse.osee.ats.client.integration.tests/AtsClient_Integration_TestSuite.launch
index d49847bd5e1..6e92c52ac8f 100644
--- a/plugins/org.eclipse.osee.ats.client.integration.tests/AtsClient_Integration_TestSuite.launch
+++ b/plugins/org.eclipse.osee.ats.client.integration.tests/AtsClient_Integration_TestSuite.launch
@@ -4,6 +4,7 @@
<setEntry value="org.eclipse.osee.ats.client.integration.tests:0.23.0.qualifier:default:true"/>
<setEntry value="org.eclipse.osee.client.integration.tests:0.23.0.qualifier:default:true"/>
<setEntry value="org.eclipse.osee.client.test.framework:0.23.0.qualifier:default:true"/>
+<setEntry value="org.hamcrest.core:1.3.0.v201303031735:default:true"/>
</setAttribute>
<booleanAttribute key="append.args" value="true"/>
<booleanAttribute key="askclear" value="false"/>
diff --git a/plugins/org.eclipse.osee.ats.client.integration.tests/META-INF/MANIFEST.MF b/plugins/org.eclipse.osee.ats.client.integration.tests/META-INF/MANIFEST.MF
index 61d0ee6e669..d5b3cc7d707 100644
--- a/plugins/org.eclipse.osee.ats.client.integration.tests/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.osee.ats.client.integration.tests/META-INF/MANIFEST.MF
@@ -89,6 +89,7 @@ Import-Package: com.google.common.collect,
org.eclipse.osee.framework.jdk.core.type,
org.eclipse.osee.framework.jdk.core.util,
org.eclipse.osee.framework.logging,
+ org.eclipse.osee.framework.plugin.core,
org.eclipse.osee.framework.plugin.core.util,
org.eclipse.osee.framework.skynet.core,
org.eclipse.osee.framework.skynet.core.artifact,
diff --git a/plugins/org.eclipse.osee.ats.client.integration.tests/OSEE-INF/support/WorkDef_Team_DecisionReviewDefinitionManagerTest_Prepare.ats b/plugins/org.eclipse.osee.ats.client.integration.tests/OSEE-INF/support/WorkDef_Team_DecisionReviewDefinitionManagerTest_Prepare.ats
new file mode 100644
index 00000000000..594bf0db296
--- /dev/null
+++ b/plugins/org.eclipse.osee.ats.client.integration.tests/OSEE-INF/support/WorkDef_Team_DecisionReviewDefinitionManagerTest_Prepare.ats
@@ -0,0 +1,44 @@
+workDefinition "WorkDef_Team_AtsTestUtil" {
+ id "WorkDef_Team_AtsTestUtil"
+ startState "Analyze"
+
+ decisionReviewDefinition "Create New on Implement" {
+ title "This is the title"
+ description "the description"
+ relatedToState "Implement"
+ blockingType Commit
+ onEvent TransitionTo
+ option "Yes" followup by assignee userId "3333"
+ option "No"
+ }
+
+ state "Analyze" {
+ type Working
+ ordinal 1
+ to "Implement" AsDefault
+ to "Completed"
+ to "Cancelled" OverrideAttributeValidation
+ }
+
+ state "Implement" {
+ type Working
+ ordinal 2
+ to "Analyze" OverrideAttributeValidation
+ to "Completed" AsDefault
+ to "Cancelled" OverrideAttributeValidation
+ decisionReview "Create New on Implement"
+ }
+
+ state "Completed" {
+ type Completed
+ ordinal 3
+ to "Implement" OverrideAttributeValidation
+ }
+
+ state "Cancelled" {
+ type Cancelled
+ ordinal 4
+ to "Analyze" OverrideAttributeValidation
+ to "Implement" OverrideAttributeValidation
+ }
+}
diff --git a/plugins/org.eclipse.osee.ats.client.integration.tests/OSEE-INF/support/WorkDef_Team_DecisionReviewDefinitionManagerTest_toDecision.ats b/plugins/org.eclipse.osee.ats.client.integration.tests/OSEE-INF/support/WorkDef_Team_DecisionReviewDefinitionManagerTest_toDecision.ats
new file mode 100644
index 00000000000..a53f6361193
--- /dev/null
+++ b/plugins/org.eclipse.osee.ats.client.integration.tests/OSEE-INF/support/WorkDef_Team_DecisionReviewDefinitionManagerTest_toDecision.ats
@@ -0,0 +1,46 @@
+workDefinition "WorkDef_Team_AtsTestUtil" {
+ id "WorkDef_Team_AtsTestUtil"
+ startState "Analyze"
+
+ decisionReviewDefinition "Create New on Implement" {
+ title "This is my review title"
+ description "the description"
+ relatedToState "Implement"
+ blockingType Transition
+ onEvent TransitionTo
+ assignee named "UnAssigned"
+ autoTransitionToDecision True
+ option "Yes" followup by assignee userId "3333"
+ option "No"
+ }
+
+ state "Analyze" {
+ type Working
+ ordinal 1
+ to "Implement" AsDefault
+ to "Completed"
+ to "Cancelled" OverrideAttributeValidation
+ }
+
+ state "Implement" {
+ type Working
+ ordinal 2
+ to "Analyze" OverrideAttributeValidation
+ to "Completed" AsDefault
+ to "Cancelled" OverrideAttributeValidation
+ decisionReview "Create New on Implement"
+ }
+
+ state "Completed" {
+ type Completed
+ ordinal 3
+ to "Implement" OverrideAttributeValidation
+ }
+
+ state "Cancelled" {
+ type Cancelled
+ ordinal 4
+ to "Analyze" OverrideAttributeValidation
+ to "Implement" OverrideAttributeValidation
+ }
+}
diff --git a/plugins/org.eclipse.osee.ats.client.integration.tests/OSEE-INF/support/WorkDef_Team_PeerReviewDefinitionManagerTest_Transition.ats b/plugins/org.eclipse.osee.ats.client.integration.tests/OSEE-INF/support/WorkDef_Team_PeerReviewDefinitionManagerTest_Transition.ats
new file mode 100644
index 00000000000..35daa263f4c
--- /dev/null
+++ b/plugins/org.eclipse.osee.ats.client.integration.tests/OSEE-INF/support/WorkDef_Team_PeerReviewDefinitionManagerTest_Transition.ats
@@ -0,0 +1,43 @@
+workDefinition "WorkDef_Team_AtsTestUtil" {
+ id "WorkDef_Team_AtsTestUtil"
+ startState "Analyze"
+
+ peerReviewDefinition "Create New on Implement" {
+ title "This is my review title"
+ description "the description"
+ relatedToState "Implement"
+ blockingType Transition
+ onEvent TransitionTo
+ assignee named "UnAssigned"
+ }
+
+ state "Analyze" {
+ type Working
+ ordinal 1
+ to "Implement" AsDefault
+ to "Completed"
+ to "Cancelled" OverrideAttributeValidation
+ }
+
+ state "Implement" {
+ type Working
+ ordinal 2
+ to "Analyze" OverrideAttributeValidation
+ to "Completed" AsDefault
+ to "Cancelled" OverrideAttributeValidation
+ peerReview "Create New on Implement"
+ }
+
+ state "Completed" {
+ type Completed
+ ordinal 3
+ to "Implement" OverrideAttributeValidation
+ }
+
+ state "Cancelled" {
+ type Cancelled
+ ordinal 4
+ to "Analyze" OverrideAttributeValidation
+ to "Implement" OverrideAttributeValidation
+ }
+}
diff --git a/plugins/org.eclipse.osee.ats.client.integration.tests/OSEE-INF/support/WorkDef_Team_TransitionManagerTest_TargetedVersion.ats b/plugins/org.eclipse.osee.ats.client.integration.tests/OSEE-INF/support/WorkDef_Team_TransitionManagerTest_TargetedVersion.ats
new file mode 100644
index 00000000000..d269de660a4
--- /dev/null
+++ b/plugins/org.eclipse.osee.ats.client.integration.tests/OSEE-INF/support/WorkDef_Team_TransitionManagerTest_TargetedVersion.ats
@@ -0,0 +1,75 @@
+workDefinition "WorkDef_Team_AtsTestUtil" {
+ id "WorkDef_Team_AtsTestUtil"
+ startState "Analyze"
+
+ widgetDefinition "Estimated Hours" {
+ attributeName "ats.Estimated Hours"
+ xWidgetName "XFloatDam"
+ }
+
+ widgetDefinition "Work Package" {
+ attributeName "ats.Work Package"
+ xWidgetName "XTextDam"
+ }
+
+ widgetDefinition "Title" {
+ attributeName "Name"
+ xWidgetName "XTextDam"
+ option REQUIRED_FOR_TRANSITION
+ }
+
+ widgetDefinition "Description" {
+ attributeName "ats.Description"
+ xWidgetName "XTextDam"
+ option REQUIRED_FOR_TRANSITION
+ option FILL_VERTICALLY
+ }
+
+ state "Analyze" {
+ type Working
+ ordinal 1
+ to "Implement" AsDefault
+ to "Completed"
+ to "Cancelled" OverrideAttributeValidation
+ rule RequireTargetedVersion
+ layout {
+ widget "Title"
+ widget "Description"
+ composite {
+ numColumns 4
+ widget "Estimated Hours"
+ widget "Work Package"
+ }
+ }
+ }
+
+ state "Implement" {
+ type Working
+ ordinal 2
+ to "Analyze" OverrideAttributeValidation
+ to "Completed" AsDefault
+ to "Cancelled" OverrideAttributeValidation
+ layout {
+ widget "Title"
+ widget "Description"
+ composite {
+ numColumns 4
+ widget "Estimated Hours"
+ widget "Work Package"
+ }
+ }
+ }
+
+ state "Completed" {
+ type Completed
+ ordinal 3
+ to "Implement" OverrideAttributeValidation
+ }
+
+ state "Cancelled" {
+ type Cancelled
+ ordinal 4
+ to "Analyze" OverrideAttributeValidation
+ to "Implement" OverrideAttributeValidation
+ }
+}
diff --git a/plugins/org.eclipse.osee.ats.client.integration.tests/OSEE-INF/support/WorkDef_Team_TransitionManagerTest_WidgetRequiredCompletion.ats b/plugins/org.eclipse.osee.ats.client.integration.tests/OSEE-INF/support/WorkDef_Team_TransitionManagerTest_WidgetRequiredCompletion.ats
new file mode 100644
index 00000000000..8544c599281
--- /dev/null
+++ b/plugins/org.eclipse.osee.ats.client.integration.tests/OSEE-INF/support/WorkDef_Team_TransitionManagerTest_WidgetRequiredCompletion.ats
@@ -0,0 +1,76 @@
+workDefinition "WorkDef_Team_AtsTestUtil" {
+ id "WorkDef_Team_AtsTestUtil"
+ startState "Analyze"
+
+ widgetDefinition "Estimated Hours" {
+ attributeName "ats.Estimated Hours"
+ xWidgetName "XFloatDam"
+ option REQUIRED_FOR_COMPLETION
+ }
+
+ widgetDefinition "Work Package" {
+ attributeName "ats.Work Package"
+ xWidgetName "XTextDam"
+ option REQUIRED_FOR_COMPLETION
+ }
+
+ widgetDefinition "Title" {
+ attributeName "Name"
+ xWidgetName "XTextDam"
+ option REQUIRED_FOR_TRANSITION
+ }
+
+ widgetDefinition "Description" {
+ attributeName "ats.Description"
+ xWidgetName "XTextDam"
+ option REQUIRED_FOR_TRANSITION
+ option FILL_VERTICALLY
+ }
+
+ state "Analyze" {
+ type Working
+ ordinal 1
+ to "Implement" AsDefault
+ to "Completed"
+ to "Cancelled" OverrideAttributeValidation
+ layout {
+ widget "Title"
+ widget "Description"
+ composite {
+ numColumns 4
+ widget "Estimated Hours"
+ widget "Work Package"
+ }
+ }
+ }
+
+ state "Implement" {
+ type Working
+ ordinal 2
+ to "Analyze" OverrideAttributeValidation
+ to "Completed" AsDefault
+ to "Cancelled" OverrideAttributeValidation
+ layout {
+ widget "Title"
+ widget "Description"
+ composite {
+ numColumns 4
+ widget "Estimated Hours"
+ widget "Work Package"
+ }
+ }
+ }
+
+ state "Completed" {
+ type Completed
+ ordinal 3
+ to "Implement" OverrideAttributeValidation
+ }
+
+ state "Cancelled" {
+ type Cancelled
+ ordinal 4
+ to "Analyze" OverrideAttributeValidation
+ to "Implement" OverrideAttributeValidation
+ }
+}
diff --git a/plugins/org.eclipse.osee.ats.client.integration.tests/OSEE-INF/support/WorkDef_Team_TransitionManagerTest_WidgetRequiredTransition.ats b/plugins/org.eclipse.osee.ats.client.integration.tests/OSEE-INF/support/WorkDef_Team_TransitionManagerTest_WidgetRequiredTransition.ats
new file mode 100644
index 00000000000..4883a49615d
--- /dev/null
+++ b/plugins/org.eclipse.osee.ats.client.integration.tests/OSEE-INF/support/WorkDef_Team_TransitionManagerTest_WidgetRequiredTransition.ats
@@ -0,0 +1,76 @@
+workDefinition "WorkDef_Team_AtsTestUtil" {
+ id "WorkDef_Team_AtsTestUtil"
+ startState "Analyze"
+
+ widgetDefinition "Estimated Hours" {
+ attributeName "ats.Estimated Hours"
+ xWidgetName "XFloatDam"
+ option REQUIRED_FOR_TRANSITION
+ }
+
+ widgetDefinition "Work Package" {
+ attributeName "ats.Work Package"
+ xWidgetName "XTextDam"
+ option REQUIRED_FOR_TRANSITION
+ }
+
+ widgetDefinition "Title" {
+ attributeName "Name"
+ xWidgetName "XTextDam"
+ option REQUIRED_FOR_TRANSITION
+ }
+
+ widgetDefinition "Description" {
+ attributeName "ats.Description"
+ xWidgetName "XTextDam"
+ option REQUIRED_FOR_TRANSITION
+ option FILL_VERTICALLY
+ }
+
+ state "Analyze" {
+ type Working
+ ordinal 1
+ to "Implement" AsDefault
+ to "Completed"
+ to "Cancelled" OverrideAttributeValidation
+ layout {
+ widget "Title"
+ widget "Description"
+ composite {
+ numColumns 4
+ widget "Estimated Hours"
+ widget "Work Package"
+ }
+ }
+ }
+
+ state "Implement" {
+ type Working
+ ordinal 2
+ to "Analyze" OverrideAttributeValidation
+ to "Completed" AsDefault
+ to "Cancelled" OverrideAttributeValidation
+ layout {
+ widget "Title"
+ widget "Description"
+ composite {
+ numColumns 4
+ widget "Estimated Hours"
+ widget "Work Package"
+ }
+ }
+ }
+
+ state "Completed" {
+ type Completed
+ ordinal 3
+ to "Implement" OverrideAttributeValidation
+ }
+
+ state "Cancelled" {
+ type Cancelled
+ ordinal 4
+ to "Analyze" OverrideAttributeValidation
+ to "Implement" OverrideAttributeValidation
+ }
+}
diff --git a/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/actions/OpenInAtsWorldActionTest2.java b/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/actions/OpenInAtsWorldActionTest2.java
index 950d9b5e63f..442d39f23af 100644
--- a/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/actions/OpenInAtsWorldActionTest2.java
+++ b/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/actions/OpenInAtsWorldActionTest2.java
@@ -23,7 +23,7 @@ public class OpenInAtsWorldActionTest2 extends AbstractAtsActionRunTest {
@Override
public OpenInAtsWorldAction createAction() throws OseeCoreException {
AtsChangeSet changes = new AtsChangeSet(getClass().getSimpleName());
- OpenInAtsWorldAction action = new OpenInAtsWorldAction(AtsTestUtil.getOrCreateTaskOffTeamWf1(changes));
+ OpenInAtsWorldAction action = new OpenInAtsWorldAction(AtsTestUtil.getOrCreateTaskOffTeamWf1());
if (!changes.isEmpty()) {
changes.execute();
}
diff --git a/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/actions/OpenNewAtsTaskEditorActionTest.java b/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/actions/OpenNewAtsTaskEditorActionTest.java
index 538e285617a..7d8aa6223d8 100644
--- a/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/actions/OpenNewAtsTaskEditorActionTest.java
+++ b/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/actions/OpenNewAtsTaskEditorActionTest.java
@@ -12,14 +12,11 @@ package org.eclipse.osee.ats.client.integration.tests.ats.actions;
import java.util.Collection;
import java.util.Collections;
-import java.util.Set;
import org.eclipse.jface.action.Action;
import org.eclipse.nebula.widgets.xviewer.customize.CustomizeData;
import org.eclipse.osee.ats.actions.OpenNewAtsTaskEditorAction;
import org.eclipse.osee.ats.actions.OpenNewAtsTaskEditorAction.IOpenNewAtsTaskEditorHandler;
import org.eclipse.osee.ats.client.integration.tests.ats.core.client.AtsTestUtil;
-import org.eclipse.osee.ats.core.client.task.TaskArtifact;
-import org.eclipse.osee.ats.core.client.util.AtsChangeSet;
import org.eclipse.osee.ats.task.ITaskEditorProvider;
import org.eclipse.osee.ats.world.search.WorldSearchItem.SearchType;
import org.eclipse.osee.framework.jdk.core.type.OseeCoreException;
@@ -51,10 +48,7 @@ public class OpenNewAtsTaskEditorActionTest extends AbstractAtsActionRunTest {
@Override
public Collection<? extends Artifact> getTaskEditorTaskArtifacts() throws OseeCoreException {
- AtsChangeSet changes = new AtsChangeSet(OpenNewAtsTaskEditorActionTest.class.getName());
- Set<TaskArtifact> arts = Collections.singleton(AtsTestUtil.getOrCreateTaskOffTeamWf1(changes));
- changes.execute();
- return arts;
+ return Collections.singleton(AtsTestUtil.getOrCreateTaskOffTeamWf1());
}
@Override
diff --git a/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/actions/OpenParentActionTest.java b/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/actions/OpenParentActionTest.java
index 9e7c9f2e6f9..d2ecea8b69c 100644
--- a/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/actions/OpenParentActionTest.java
+++ b/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/actions/OpenParentActionTest.java
@@ -23,7 +23,7 @@ public class OpenParentActionTest extends AbstractAtsActionRunTest {
@Override
public OpenParentAction createAction() throws OseeCoreException {
AtsChangeSet changes = new AtsChangeSet(getClass().getSimpleName());
- OpenParentAction action = new OpenParentAction(AtsTestUtil.getOrCreateTaskOffTeamWf1(changes));
+ OpenParentAction action = new OpenParentAction(AtsTestUtil.getOrCreateTaskOffTeamWf1());
if (!changes.isEmpty()) {
changes.execute();
}
diff --git a/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/column/EstimatedHoursColumnTest.java b/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/column/EstimatedHoursColumnTest.java
index a35bb42cc09..296becc8eb7 100644
--- a/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/column/EstimatedHoursColumnTest.java
+++ b/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/column/EstimatedHoursColumnTest.java
@@ -10,14 +10,16 @@
*******************************************************************************/
package org.eclipse.osee.ats.client.integration.tests.ats.column;
+import java.util.Arrays;
+import java.util.Collection;
import java.util.Date;
import org.eclipse.osee.ats.api.data.AtsAttributeTypes;
+import org.eclipse.osee.ats.api.workflow.IAtsTask;
import org.eclipse.osee.ats.client.integration.tests.AtsClientService;
import org.eclipse.osee.ats.client.integration.tests.ats.core.client.AtsTestUtil;
import org.eclipse.osee.ats.client.integration.tests.util.DemoTestUtil;
import org.eclipse.osee.ats.core.client.review.PeerToPeerReviewArtifact;
import org.eclipse.osee.ats.core.client.review.PeerToPeerReviewManager;
-import org.eclipse.osee.ats.core.client.task.TaskArtifact;
import org.eclipse.osee.ats.core.client.team.TeamWorkFlowArtifact;
import org.eclipse.osee.ats.core.client.util.AtsChangeSet;
import org.eclipse.osee.ats.core.client.workflow.EstimatedHoursUtil;
@@ -51,20 +53,24 @@ public class EstimatedHoursColumnTest {
Artifact actionArt = teamArt1.getParentActionArtifact();
TeamWorkFlowArtifact teamArt2 =
DemoTestUtil.addTeamWorkflow(actionArt, EstimatedHoursColumnTest.class.getSimpleName(), changes);
- TaskArtifact taskArt1 =
- teamArt1.createNewTask(EstimatedHoursColumnTest.class.getSimpleName(), new Date(),
- AtsClientService.get().getUserService().getCurrentUser(), changes);
- changes.add(taskArt1);
- TaskArtifact taskArt2 =
- teamArt1.createNewTask(EstimatedHoursColumnTest.class.getSimpleName(), new Date(),
- AtsClientService.get().getUserService().getCurrentUser(), changes);
- changes.add(taskArt2);
- PeerToPeerReviewArtifact peerArt =
- PeerToPeerReviewManager.createNewPeerToPeerReview(teamArt1, getClass().getSimpleName(),
- teamArt1.getStateMgr().getCurrentStateName(), changes);
+ PeerToPeerReviewArtifact peerArt = PeerToPeerReviewManager.createNewPeerToPeerReview(teamArt1,
+ getClass().getSimpleName(), teamArt1.getStateMgr().getCurrentStateName(), changes);
changes.add(peerArt);
changes.execute();
+ Collection<IAtsTask> createTasks = AtsClientService.get().getTaskService().createTasks(teamArt1,
+ Arrays.asList(getClass().getSimpleName(), getClass().getSimpleName() + " 2"), null, new Date(),
+ AtsClientService.get().getUserService().getCurrentUser(), null, null, null, getClass().getSimpleName());
+
+ Artifact taskArt1 = null, taskArt2 = null;
+ for (IAtsTask task : createTasks) {
+ if (task.getName().endsWith("2")) {
+ taskArt2 = AtsClientService.get().getArtifact(task);
+ } else {
+ taskArt1 = AtsClientService.get().getArtifact(task);
+ }
+ }
+
Assert.assertEquals(0.0, EstimatedHoursUtil.getEstimatedHours(actionArt), 0);
Assert.assertEquals(0.0, EstimatedHoursUtil.getEstimatedHours(teamArt1), 0);
Assert.assertEquals(0.0, EstimatedHoursUtil.getEstimatedHours(teamArt2), 0);
diff --git a/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/core/client/AtsTestUtil.java b/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/core/client/AtsTestUtil.java
index ff86c6a4246..cce9864f9ed 100644
--- a/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/core/client/AtsTestUtil.java
+++ b/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/core/client/AtsTestUtil.java
@@ -20,6 +20,7 @@ import java.util.List;
import java.util.Set;
import org.eclipse.osee.ats.api.IAtsConfigObject;
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.ChangeType;
import org.eclipse.osee.ats.api.team.IAtsTeamDefinition;
@@ -27,15 +28,20 @@ import org.eclipse.osee.ats.api.user.IAtsUser;
import org.eclipse.osee.ats.api.util.IAtsChangeSet;
import org.eclipse.osee.ats.api.version.IAtsVersion;
import org.eclipse.osee.ats.api.workdef.IAtsDecisionReviewOption;
+import org.eclipse.osee.ats.api.workdef.IAtsLayoutItem;
+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.IStateToken;
+import org.eclipse.osee.ats.api.workdef.JaxAtsWorkDef;
import org.eclipse.osee.ats.api.workdef.ReviewBlockType;
import org.eclipse.osee.ats.api.workdef.StateType;
+import org.eclipse.osee.ats.api.workflow.IAtsTask;
import org.eclipse.osee.ats.api.workflow.transition.IAtsTransitionManager;
import org.eclipse.osee.ats.api.workflow.transition.TransitionOption;
import org.eclipse.osee.ats.api.workflow.transition.TransitionResults;
import org.eclipse.osee.ats.client.demo.DemoSawBuilds;
+import org.eclipse.osee.ats.client.integration.AtsClientIntegrationTestSuite;
import org.eclipse.osee.ats.client.integration.tests.AtsClientService;
import org.eclipse.osee.ats.core.client.action.ActionArtifact;
import org.eclipse.osee.ats.core.client.action.ActionManager;
@@ -59,16 +65,15 @@ import org.eclipse.osee.ats.core.workflow.state.StateTypeAdapter;
import org.eclipse.osee.ats.core.workflow.transition.TransitionFactory;
import org.eclipse.osee.ats.core.workflow.transition.TransitionHelper;
import org.eclipse.osee.ats.editor.SMAEditor;
-import org.eclipse.osee.ats.mocks.MockStateDefinition;
-import org.eclipse.osee.ats.mocks.MockWidgetDefinition;
-import org.eclipse.osee.ats.mocks.MockWorkDefinition;
import org.eclipse.osee.ats.task.TaskEditor;
import org.eclipse.osee.ats.world.WorldEditor;
import org.eclipse.osee.framework.core.enums.QueryOption;
+import org.eclipse.osee.framework.core.exception.ArtifactDoesNotExist;
import org.eclipse.osee.framework.core.exception.OseeWrappedException;
import org.eclipse.osee.framework.core.model.Branch;
import org.eclipse.osee.framework.core.operation.Operations;
import org.eclipse.osee.framework.core.util.Result;
+import org.eclipse.osee.framework.core.util.XResultData;
import org.eclipse.osee.framework.jdk.core.type.OseeCoreException;
import org.eclipse.osee.framework.jdk.core.type.OseeStateException;
import org.eclipse.osee.framework.jdk.core.util.GUID;
@@ -80,6 +85,7 @@ import org.eclipse.osee.framework.skynet.core.artifact.search.ArtifactQuery;
import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction;
import org.eclipse.osee.framework.skynet.core.transaction.TransactionManager;
import org.eclipse.osee.framework.skynet.core.utility.Artifacts;
+import org.eclipse.osee.framework.ui.ws.AWorkspace;
import org.eclipse.osee.support.test.util.TestUtil;
/**
@@ -90,7 +96,7 @@ import org.eclipse.osee.support.test.util.TestUtil;
*/
public class AtsTestUtil {
- private static TeamWorkFlowArtifact teamArt = null, teamArt2 = null, teamArt3 = null, teamArt4 = null;
+ private static TeamWorkFlowArtifact teamWf = null, teamArt2 = null, teamArt3 = null, teamArt4 = null;
private static IAtsTeamDefinition teamDef = null;
private static IAtsVersion verArt1 = null, verArt2 = null, verArt3 = null, verArt4 = null;
private static DecisionReviewArtifact decRevArt = null;
@@ -98,10 +104,10 @@ public class AtsTestUtil {
private static TaskArtifact taskArtWf1 = null, taskArtWf2 = null;
private static IAtsActionableItem testAi = null, testAi2 = null, testAi3 = null, testAi4 = null;
private static ActionArtifact actionArt = null, actionArt2 = null, actionArt3 = null, actionArt4 = null;
- private static MockStateDefinition analyze, implement, completed, cancelled = null;
- private static MockWorkDefinition workDef = null;
+ private static IAtsStateDefinition analyze, implement, completed, cancelled = null;
+ private static IAtsWorkDefinition workDef = null;
public static String WORK_DEF_NAME = "WorkDef_Team_AtsTestUtil";
- private static MockWidgetDefinition estHoursWidgetDef, workPackageWidgetDef;
+ private static IAtsWidgetDefinition estHoursWidgetDef, workPackageWidgetDef;
private static String postFixName;
public static void validateArtifactCache() throws OseeStateException {
@@ -117,7 +123,7 @@ public class AtsTestUtil {
}
public static void validateObjectsNull() throws OseeStateException {
- validateObjectsNull("teamArt", teamArt);
+ validateObjectsNull("teamArt", teamWf);
validateObjectsNull("teamArt2", teamArt2);
validateObjectsNull("teamArt3", teamArt3);
validateObjectsNull("teamArt4", teamArt4);
@@ -158,33 +164,61 @@ public class AtsTestUtil {
return workDef;
}
- public static MockStateDefinition getAnalyzeStateDef() throws OseeCoreException {
+ public static IAtsStateDefinition getAnalyzeStateDef() throws OseeCoreException {
ensureLoaded();
+ if (analyze == null) {
+ analyze = workDef.getStateByName("Analyze");
+ }
return analyze;
}
public static IAtsWidgetDefinition getEstHoursWidgetDef() throws OseeCoreException {
ensureLoaded();
+ if (estHoursWidgetDef == null) {
+ for (IAtsLayoutItem item : getAnalyzeStateDef().getLayoutItems()) {
+ if (item.getName().equals("ats.Estimated Hours")) {
+ estHoursWidgetDef = (IAtsWidgetDefinition) item;
+ break;
+ }
+ }
+ }
return estHoursWidgetDef;
}
public static IAtsWidgetDefinition getWorkPackageWidgetDef() throws OseeCoreException {
ensureLoaded();
+ if (workPackageWidgetDef == null) {
+ for (IAtsLayoutItem item : getAnalyzeStateDef().getLayoutItems()) {
+ if (item.getName().equals("ats.Work Package")) {
+ workPackageWidgetDef = (IAtsWidgetDefinition) item;
+ break;
+ }
+ }
+ }
return workPackageWidgetDef;
}
- public static MockStateDefinition getImplementStateDef() throws OseeCoreException {
+ public static IAtsStateDefinition getImplementStateDef() throws OseeCoreException {
ensureLoaded();
+ if (implement == null) {
+ implement = workDef.getStateByName("Implement");
+ }
return implement;
}
- public static MockStateDefinition getCompletedStateDef() throws OseeCoreException {
+ public static IAtsStateDefinition getCompletedStateDef() throws OseeCoreException {
ensureLoaded();
+ if (completed == null) {
+ completed = workDef.getStateByName("Completed");
+ }
return completed;
}
- public static MockStateDefinition getCancelledStateDef() throws OseeCoreException {
+ public static IAtsStateDefinition getCancelledStateDef() throws OseeCoreException {
ensureLoaded();
+ if (cancelled == null) {
+ cancelled = workDef.getStateByName("Cancelled");
+ }
return cancelled;
}
@@ -205,7 +239,7 @@ public class AtsTestUtil {
workDef = null;
estHoursWidgetDef = null;
workPackageWidgetDef = null;
- teamArt = null;
+ teamWf = null;
teamArt2 = null;
teamArt3 = null;
teamArt4 = null;
@@ -253,87 +287,34 @@ public class AtsTestUtil {
private static void reset(String postFixName) throws OseeCoreException {
AtsBulkLoad.reloadConfig(true);
AtsTestUtil.postFixName = postFixName;
- AtsChangeSet changes = new AtsChangeSet(AtsTestUtil.class.getSimpleName());
- workDef = new MockWorkDefinition(WORK_DEF_NAME);
- analyze = new MockStateDefinition("Analyze");
- analyze.setWorkDefinition(workDef);
- analyze.setStateType(StateType.Working);
- analyze.setOrdinal(1);
- workDef.addState(analyze);
+ importWorkDefinition();
- workDef.setStartState(analyze);
-
- implement = new MockStateDefinition("Implement");
- implement.setWorkDefinition(workDef);
- implement.setStateType(StateType.Working);
- implement.setOrdinal(2);
- workDef.addState(implement);
-
- completed = new MockStateDefinition("Completed");
- completed.setWorkDefinition(workDef);
- completed.setStateType(StateType.Completed);
- completed.setOrdinal(3);
- workDef.addState(completed);
-
- cancelled = new MockStateDefinition("Cancelled");
- cancelled.setWorkDefinition(workDef);
- cancelled.setStateType(StateType.Cancelled);
- cancelled.setOrdinal(4);
- workDef.addState(cancelled);
-
- analyze.setDefaultToState(implement);
- analyze.getToStates().addAll(Arrays.asList(implement, completed, cancelled));
- analyze.getOverrideAttributeValidationStates().addAll(Arrays.asList(cancelled));
-
- implement.setDefaultToState(completed);
- implement.getToStates().addAll(Arrays.asList(analyze, completed, cancelled));
- implement.getOverrideAttributeValidationStates().addAll(Arrays.asList(cancelled, analyze));
-
- completed.setDefaultToState(completed);
- completed.getToStates().addAll(Arrays.asList(implement));
- completed.getOverrideAttributeValidationStates().addAll(Arrays.asList(implement));
-
- cancelled.getToStates().addAll(Arrays.asList(analyze, implement));
- cancelled.getOverrideAttributeValidationStates().addAll(Arrays.asList(analyze, implement));
-
- estHoursWidgetDef = new MockWidgetDefinition(AtsAttributeTypes.EstimatedHours.getUnqualifiedName());
- estHoursWidgetDef.setAttributeName(AtsAttributeTypes.EstimatedHours.getName());
- estHoursWidgetDef.setXWidgetName("XFloatDam");
-
- workPackageWidgetDef = new MockWidgetDefinition(AtsAttributeTypes.WorkPackage.getUnqualifiedName());
- workPackageWidgetDef.setAttributeName(AtsAttributeTypes.WorkPackage.getName());
- workPackageWidgetDef.setXWidgetName("XTextDam");
-
- AtsClientService.get().getWorkDefinitionAdmin().addWorkDefinition(workDef);
+ AtsChangeSet changes = new AtsChangeSet(AtsTestUtil.class.getSimpleName());
String guid = GUID.create();
testAi = AtsClientService.get().createActionableItem(guid, getTitle("AI", postFixName),
AtsUtilClient.createConfigObjectUuid());
testAi.setActive(true);
testAi.setActionable(true);
- AtsUtilCore.putUuidToGuid(guid, testAi);
guid = GUID.create();
testAi2 = AtsClientService.get().createActionableItem(guid, getTitle("AI2", postFixName),
AtsUtilClient.createConfigObjectUuid());
testAi2.setActive(true);
testAi2.setActionable(true);
- AtsUtilCore.putUuidToGuid(guid, testAi2);
guid = GUID.create();
testAi3 = AtsClientService.get().createActionableItem(guid, getTitle("AI3", postFixName),
AtsUtilClient.createConfigObjectUuid());
testAi3.setActive(true);
testAi3.setActionable(true);
- AtsUtilCore.putUuidToGuid(guid, testAi3);
guid = GUID.create();
testAi4 = AtsClientService.get().createActionableItem(guid, getTitle("AI4", postFixName),
AtsUtilClient.createConfigObjectUuid());
testAi4.setActive(true);
testAi4.setActionable(true);
- AtsUtilCore.putUuidToGuid(guid, testAi4);
guid = GUID.create();
teamDef = AtsClientService.get().createTeamDefinition(guid, getTitle("Team Def", postFixName),
@@ -341,68 +322,87 @@ public class AtsTestUtil {
teamDef.setWorkflowDefinition(WORK_DEF_NAME);
teamDef.setActive(true);
teamDef.getLeads().add(AtsClientService.get().getUserService().getCurrentUser());
- AtsUtilCore.putUuidToGuid(guid, teamDef);
testAi.setTeamDefinition(teamDef);
testAi2.setTeamDefinition(teamDef);
testAi3.setTeamDefinition(teamDef);
testAi4.setTeamDefinition(teamDef);
+ AtsClientService.get().storeConfigObject(testAi, changes);
+ AtsClientService.get().storeConfigObject(testAi2, changes);
+ AtsClientService.get().storeConfigObject(testAi3, changes);
+ AtsClientService.get().storeConfigObject(testAi4, changes);
guid = GUID.create();
- verArt1 = AtsClientService.get().getVersionService().createVersion(guid, getTitle("ver 1.0", postFixName),
+ verArt1 = AtsClientService.get().getVersionService().createVersion(getTitle("ver 1.0", postFixName), guid,
AtsUtilClient.createConfigObjectUuid());
teamDef.getVersions().add(verArt1);
- AtsUtilCore.putUuidToGuid(guid, verArt1);
+ AtsClientService.get().storeConfigObject(verArt1, changes);
guid = GUID.create();
- verArt2 = AtsClientService.get().getVersionService().createVersion(guid, getTitle("ver 2.0", postFixName),
+ verArt2 = AtsClientService.get().getVersionService().createVersion(getTitle("ver 2.0", postFixName), guid,
AtsUtilClient.createConfigObjectUuid());
teamDef.getVersions().add(verArt2);
- AtsUtilCore.putUuidToGuid(guid, verArt2);
+ AtsClientService.get().storeConfigObject(verArt2, changes);
guid = GUID.create();
- verArt3 = AtsClientService.get().getVersionService().createVersion(guid, getTitle("ver 3.0", postFixName),
+ verArt3 = AtsClientService.get().getVersionService().createVersion(getTitle("ver 3.0", postFixName), guid,
AtsUtilClient.createConfigObjectUuid());
teamDef.getVersions().add(verArt3);
- AtsUtilCore.putUuidToGuid(guid, verArt3);
+ AtsClientService.get().storeConfigObject(verArt3, changes);
guid = GUID.create();
- verArt4 = AtsClientService.get().getVersionService().createVersion(guid, getTitle("ver 4.0", postFixName),
+ verArt4 = AtsClientService.get().getVersionService().createVersion(getTitle("ver 4.0", postFixName), guid,
AtsUtilClient.createConfigObjectUuid());
teamDef.getVersions().add(verArt4);
- AtsUtilCore.putUuidToGuid(guid, verArt4);
+ AtsClientService.get().storeConfigObject(verArt4, changes);
+
+ AtsClientService.get().storeConfigObject(teamDef, changes);
actionArt = ActionManager.createAction(null, getTitle("Team WF", postFixName), "description",
ChangeType.Improvement, "1", false, null, Arrays.asList(testAi), new Date(),
AtsClientService.get().getUserService().getCurrentUser(), null, changes);
- AtsUtilCore.putUuidToGuid(actionArt.getGuid(), actionArt);
- teamArt = actionArt.getFirstTeam();
- AtsUtilCore.putUuidToGuid(actionArt.getGuid(), teamArt);
+ teamWf = actionArt.getFirstTeam();
changes.execute();
}
- public static TaskArtifact getOrCreateTaskOffTeamWf1(AtsChangeSet changes) throws OseeCoreException {
- ensureLoaded();
- if (taskArtWf1 == null) {
- taskArtWf1 = teamArt.createNewTask(getTitle("Task", postFixName), new Date(),
- AtsClientService.get().getUserService().getCurrentUser(), changes);
- taskArtWf1.setSoleAttributeValue(AtsAttributeTypes.RelatedToState, teamArt.getCurrentStateName());
- AtsUtilCore.putUuidToGuid(taskArtWf1.getGuid(), taskArtWf1);
+ public static void importWorkDefinition() {
+ try {
+ String atsDsl =
+ AWorkspace.getOseeInfResource("support/" + WORK_DEF_NAME + ".ats", AtsClientIntegrationTestSuite.class);
+ JaxAtsWorkDef jaxWorkDef = new JaxAtsWorkDef();
+ jaxWorkDef.setName(WORK_DEF_NAME);
+ jaxWorkDef.setWorkDefDsl(atsDsl);
+ importWorkDefinition(jaxWorkDef);
+ } catch (Exception ex) {
+ throw new OseeCoreException(ex, "Error importing " + WORK_DEF_NAME);
}
- return taskArtWf1;
}
- public static TaskArtifact getOrCreateTaskOffTeamWf2(AtsChangeSet changes) throws OseeCoreException {
+ public static void importWorkDefinition(JaxAtsWorkDef jaxWorkDef) throws Exception {
+ AtsClientService.getConfigEndpoint().storeWorkDef(jaxWorkDef);
+ Artifact workDefArt = ArtifactQuery.getArtifactFromTypeAndName(AtsArtifactTypes.WorkDefinition, WORK_DEF_NAME,
+ AtsUtilCore.getAtsBranch());
+ workDefArt.reloadAttributesAndRelations();
+ AtsClientService.get().getWorkDefinitionAdmin().clearCaches();
+ XResultData results = new XResultData();
+ workDef = AtsClientService.get().getWorkDefService().getWorkDef(WORK_DEF_NAME, results);
+ if (results.isErrors()) {
+ throw new OseeCoreException("Error importing " + WORK_DEF_NAME + " - " + results.toString());
+ }
+ }
+
+ public static TaskArtifact getOrCreateTaskOffTeamWf1() throws OseeCoreException {
ensureLoaded();
- if (taskArtWf2 == null) {
- taskArtWf2 = teamArt.createNewTask(getTitle("Task", postFixName), new Date(),
- AtsClientService.get().getUserService().getCurrentUser(), changes);
- taskArtWf2.setSoleAttributeValue(AtsAttributeTypes.RelatedToState, teamArt.getCurrentStateName());
- AtsUtilCore.putUuidToGuid(taskArtWf2.getGuid(), taskArtWf2);
+ if (taskArtWf1 == null) {
+ Collection<IAtsTask> createTasks =
+ AtsClientService.get().getTaskService().createTasks(teamWf, Arrays.asList(getTitle("Task", postFixName)),
+ null, new Date(), AtsClientService.get().getUserService().getCurrentUser(), teamWf.getCurrentStateName(),
+ null, null, getName() + " Create Task");
+ taskArtWf1 = (TaskArtifact) createTasks.iterator().next().getStoreObject();
}
- return taskArtWf2;
+ return taskArtWf1;
}
public static DecisionReviewArtifact getOrCreateDecisionReview(ReviewBlockType reviewBlockType, AtsTestUtilState relatedToState, IAtsChangeSet changes) throws OseeCoreException {
@@ -412,18 +412,17 @@ public class AtsTestUtil {
options.add(new SimpleDecisionReviewOption(DecisionReviewState.Completed.getName(), false, null));
options.add(new SimpleDecisionReviewOption(DecisionReviewState.Followup.getName(), true,
Arrays.asList(AtsClientService.get().getUserService().getCurrentUser().getUserId())));
- decRevArt = DecisionReviewManager.createNewDecisionReview(teamArt, reviewBlockType,
+ decRevArt = DecisionReviewManager.createNewDecisionReview(teamWf, reviewBlockType,
AtsTestUtil.class.getSimpleName() + " Test Decision Review", relatedToState.getName(), "Decision Review",
options, Arrays.asList(AtsClientService.get().getUserService().getCurrentUser()), new Date(),
AtsClientService.get().getUserService().getCurrentUser(), changes);
- AtsUtilCore.putUuidToGuid(decRevArt.getGuid(), decRevArt);
}
return decRevArt;
}
public static TeamWorkFlowArtifact getTeamWf() throws OseeCoreException {
ensureLoaded();
- return teamArt;
+ return teamWf;
}
public static IAtsActionableItem getTestAi() throws OseeCoreException {
@@ -485,8 +484,8 @@ public class AtsTestUtil {
SMAEditor.closeAll();
TaskEditor.closeAll();
- if (teamArt != null) {
- Branch workingBranch = teamArt.getWorkingBranch();
+ if (teamWf != null) {
+ Branch workingBranch = teamWf.getWorkingBranch();
if (workingBranch != null) {
BranchManager.deleteBranchAndPend(workingBranch);
}
@@ -501,11 +500,23 @@ public class AtsTestUtil {
delete(changes, actionArt2);
delete(changes, actionArt3);
delete(changes, actionArt4);
+ if (verArt1 != null) {
+ delete(changes, ((Artifact) verArt1.getStoreObject()));
+ }
+ if (verArt2 != null) {
+ delete(changes, ((Artifact) verArt2.getStoreObject()));
+ }
+ if (verArt3 != null) {
+ delete(changes, ((Artifact) verArt3.getStoreObject()));
+ }
+ if (verArt4 != null) {
+ delete(changes, ((Artifact) verArt4.getStoreObject()));
+ }
if (!changes.isEmpty()) {
changes.execute();
}
- deleteTeamWf(teamArt);
+ deleteTeamWf(teamWf);
deleteTeamWf(teamArt2);
deleteTeamWf(teamArt3);
deleteTeamWf(teamArt4);
@@ -518,6 +529,17 @@ public class AtsTestUtil {
art.deleteAndPersist(transaction);
}
}
+
+ try {
+ Artifact workDefArt = ArtifactQuery.getArtifactFromTypeAndName(AtsArtifactTypes.WorkDefinition, WORK_DEF_NAME,
+ AtsUtilCore.getAtsBranch());
+ if (workDefArt != null) {
+ workDefArt.deleteAndPersist(transaction);
+ }
+ } catch (ArtifactDoesNotExist ex) {
+ // do nothing
+ }
+
transaction.execute();
clearCaches();
@@ -563,19 +585,19 @@ public class AtsTestUtil {
}
public static Result transitionTo(AtsTestUtilState atsTestUtilState, IAtsUser user, IAtsChangeSet changes, TransitionOption... transitionOptions) throws OseeCoreException {
- if (atsTestUtilState == AtsTestUtilState.Analyze && teamArt.isInState(AtsTestUtilState.Analyze)) {
+ if (atsTestUtilState == AtsTestUtilState.Analyze && teamWf.isInState(AtsTestUtilState.Analyze)) {
return Result.TrueResult;
}
if (atsTestUtilState == AtsTestUtilState.Cancelled) {
- Result result = transitionToState(teamArt, AtsTestUtilState.Cancelled, user, changes, transitionOptions);
+ Result result = transitionToState(teamWf, AtsTestUtilState.Cancelled, user, changes, transitionOptions);
if (result.isFalse()) {
return result;
}
return Result.TrueResult;
}
- Result result = transitionToState(teamArt, AtsTestUtilState.Implement, user, changes, transitionOptions);
+ Result result = transitionToState(teamWf, AtsTestUtilState.Implement, user, changes, transitionOptions);
if (result.isFalse()) {
return result;
}
@@ -585,7 +607,7 @@ public class AtsTestUtil {
}
if (atsTestUtilState == AtsTestUtilState.Completed) {
- result = transitionToState(teamArt, AtsTestUtilState.Completed, user, changes, transitionOptions);
+ result = transitionToState(teamWf, AtsTestUtilState.Completed, user, changes, transitionOptions);
if (result.isFalse()) {
return result;
}
@@ -632,7 +654,7 @@ public class AtsTestUtil {
if (peerRevArt == null) {
peerRevArt = PeerToPeerReviewManager.createNewPeerToPeerReview(
AtsClientService.get().getWorkDefinitionAdmin().getDefaultPeerToPeerWorkflowDefinitionMatch().getWorkDefinition(),
- teamArt, AtsTestUtil.class.getSimpleName() + " Test Peer Review", relatedToState.getName(), changes);
+ teamWf, AtsTestUtil.class.getSimpleName() + " Test Peer Review", relatedToState.getName(), changes);
peerRevArt.setSoleAttributeValue(AtsAttributeTypes.ReviewBlocks, reviewBlockType.name());
}
} catch (OseeCoreException ex) {
@@ -650,8 +672,6 @@ public class AtsTestUtil {
AtsClientService.get().getUserService().getCurrentUser(), null, changes);
teamArt2 = actionArt2.getFirstTeam();
changes.execute();
- AtsUtilCore.putUuidToGuid(actionArt2.getGuid(), actionArt2);
- AtsUtilCore.putUuidToGuid(teamArt2.getGuid(), teamArt2);
}
return teamArt2;
}
@@ -670,8 +690,6 @@ public class AtsTestUtil {
AtsClientService.get().getUserService().getCurrentUser(), null, changes);
teamArt3 = actionArt3.getFirstTeam();
changes.execute();
- AtsUtilCore.putUuidToGuid(actionArt3.getGuid(), actionArt3);
- AtsUtilCore.putUuidToGuid(teamArt3.getGuid(), teamArt3);
}
return teamArt3;
}
@@ -692,8 +710,6 @@ public class AtsTestUtil {
teamArt4 = actionArt4.getFirstTeam();
AtsClientService.get().getVersionService().setTargetedVersion(teamArt4, verArt4);
changes.execute();
- AtsUtilCore.putUuidToGuid(actionArt4.getGuid(), actionArt4);
- AtsUtilCore.putUuidToGuid(teamArt4.getGuid(), teamArt4);
}
return teamArt4;
}
@@ -764,20 +780,22 @@ public class AtsTestUtil {
public static Result createWorkingBranchFromTeamWf() throws OseeCoreException {
configureVer1ForWorkingBranch();
- Result result = AtsBranchUtil.createWorkingBranch_Validate(teamArt);
+ Result result = AtsBranchUtil.createWorkingBranch_Validate(teamWf);
if (result.isFalse()) {
return result;
}
- AtsBranchUtil.createWorkingBranch_Create(teamArt, true);
- teamArt.getWorkingBranchForceCacheUpdate();
+ AtsBranchUtil.createWorkingBranch_Create(teamWf, true);
+ teamWf.getWorkingBranchForceCacheUpdate();
return Result.TrueResult;
}
public static void configureVer1ForWorkingBranch() throws OseeCoreException {
- IAtsVersion verArt = getVerArt1();
- verArt.setAllowCreateBranch(true);
- verArt.setAllowCommitBranch(true);
- verArt.setBaselineBranchUuid(BranchManager.getBranch(DemoSawBuilds.SAW_Bld_1).getUuid());
+ IAtsVersion version = getVerArt1();
+ version.setAllowCreateBranch(true);
+ version.setAllowCommitBranch(true);
+ version.setBaselineBranchUuid(BranchManager.getBranch(DemoSawBuilds.SAW_Bld_1).getUuid());
+ ((Artifact) version.getStoreObject()).persist(AtsTestUtil.class.getSimpleName() + "-SetTeamWfTargetedVer1");
+ AtsClientService.get().getConfig().invalidate(version);
if (!AtsClientService.get().getVersionService().hasTargetedVersion(getTeamWf())) {
AtsClientService.get().getVersionService().setTargetedVersion(getTeamWf(), getVerArt1());
getTeamWf().persist(AtsTestUtil.class.getSimpleName() + "-SetTeamWfTargetedVer1");
diff --git a/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/core/client/AtsTestUtilTest.java b/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/core/client/AtsTestUtilTest.java
index ad89903115e..97f800ca3b8 100644
--- a/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/core/client/AtsTestUtilTest.java
+++ b/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/core/client/AtsTestUtilTest.java
@@ -24,7 +24,7 @@ import org.junit.Assert;
/**
* Test unit for {@link AtsTestUtil}
- *
+ *
* @author Donald G. Dunne
*/
public class AtsTestUtilTest extends AtsTestUtil {
@@ -51,6 +51,7 @@ public class AtsTestUtilTest extends AtsTestUtil {
Assert.assertNotNull(AtsTestUtil.getTeamWf());
Assert.assertNotNull(AtsTestUtil.getTeamWf().getStateDefinition());
+ Assert.assertNotNull(AtsTestUtil.getTeamWf().getTeamDefinition());
String atsId = AtsTestUtil.getTeamWf().getAtsId();
Assert.assertTrue(atsId.startsWith("ATS"));
@@ -79,6 +80,7 @@ public class AtsTestUtilTest extends AtsTestUtil {
Assert.assertNotNull(AtsTestUtil.getTeamWf2());
Assert.assertNotNull(AtsTestUtil.getTeamWf2().getStateDefinition());
+ Assert.assertNotNull(AtsTestUtil.getTeamWf2().getTeamDefinition());
Assert.assertNotSame(AtsTestUtil.getTeamWf(), AtsTestUtil.getTeamWf2());
Assert.assertNotSame(AtsTestUtil.getActionArt(), AtsTestUtil.getActionArt2());
Assert.assertNotSame(AtsTestUtil.getTeamWf().getActionableItemsDam().getActionableItems().iterator().next(),
@@ -97,6 +99,7 @@ public class AtsTestUtilTest extends AtsTestUtil {
Assert.assertNotNull(AtsTestUtil.getTeamWf4());
Assert.assertNotNull(AtsTestUtil.getTeamWf4().getStateDefinition());
+ Assert.assertNotNull(AtsTestUtil.getTeamWf4().getTeamDefinition());
Assert.assertNotSame(AtsTestUtil.getTeamWf(), AtsTestUtil.getTeamWf4());
Assert.assertNotSame(AtsTestUtil.getActionArt(), AtsTestUtil.getActionArt4());
Assert.assertNotSame(AtsTestUtil.getTeamWf().getActionableItemsDam().getActionableItems().iterator().next(),
@@ -110,14 +113,27 @@ public class AtsTestUtilTest extends AtsTestUtil {
}
@org.junit.Test
+ public void testGetTask1() throws OseeCoreException {
+
+ AtsTestUtil.cleanupAndReset("AtsTestUtilTest.testGetTask1");
+ AtsTestUtil.validateArtifactCache();
+
+ Assert.assertNotNull(AtsTestUtil.getOrCreateTaskOffTeamWf1());
+
+ AtsTestUtil.cleanup();
+
+ AtsTestUtil.validateArtifactCache();
+ }
+
+ @org.junit.Test
public void testGetDecisionReview() throws OseeCoreException {
AtsTestUtil.cleanupAndReset("AtsTestUtilTest.testGetDecisionReview");
AtsTestUtil.validateArtifactCache();
AtsChangeSet changes = new AtsChangeSet(getClass().getSimpleName());
- Assert.assertNotNull(AtsTestUtil.getOrCreateDecisionReview(ReviewBlockType.Commit, AtsTestUtilState.Analyze,
- changes));
+ Assert.assertNotNull(
+ AtsTestUtil.getOrCreateDecisionReview(ReviewBlockType.Commit, AtsTestUtilState.Analyze, changes));
changes.execute();
AtsTestUtil.cleanup();
@@ -132,7 +148,8 @@ public class AtsTestUtilTest extends AtsTestUtil {
AtsTestUtil.validateArtifactCache();
AtsChangeSet changes = new AtsChangeSet("testGetPeerReview");
- Assert.assertNotNull(AtsTestUtil.getOrCreatePeerReview(ReviewBlockType.Commit, AtsTestUtilState.Analyze, changes));
+ Assert.assertNotNull(
+ AtsTestUtil.getOrCreatePeerReview(ReviewBlockType.Commit, AtsTestUtilState.Analyze, changes));
changes.execute();
AtsTestUtil.cleanup();
diff --git a/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/core/client/review/DecisionReviewDefinitionManagerTest.java b/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/core/client/review/DecisionReviewDefinitionManagerTest.java
index f54da8b22f0..ae06a0f5888 100644
--- a/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/core/client/review/DecisionReviewDefinitionManagerTest.java
+++ b/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/core/client/review/DecisionReviewDefinitionManagerTest.java
@@ -12,37 +12,40 @@ package org.eclipse.osee.ats.client.integration.tests.ats.core.client.review;
import java.util.Arrays;
import org.eclipse.osee.ats.api.data.AtsAttributeTypes;
-import org.eclipse.osee.ats.api.workdef.IAtsStateDefinition;
+import org.eclipse.osee.ats.api.workdef.JaxAtsWorkDef;
import org.eclipse.osee.ats.api.workdef.ReviewBlockType;
-import org.eclipse.osee.ats.api.workdef.StateEventType;
import org.eclipse.osee.ats.api.workflow.transition.IAtsTransitionManager;
import org.eclipse.osee.ats.api.workflow.transition.TransitionOption;
import org.eclipse.osee.ats.api.workflow.transition.TransitionResults;
+import org.eclipse.osee.ats.client.integration.AtsClientIntegrationTestSuite;
import org.eclipse.osee.ats.client.integration.tests.AtsClientService;
import org.eclipse.osee.ats.client.integration.tests.ats.core.client.AtsTestUtil;
import org.eclipse.osee.ats.client.integration.tests.ats.core.client.workflow.transition.MockTransitionHelper;
import org.eclipse.osee.ats.core.client.review.DecisionReviewArtifact;
import org.eclipse.osee.ats.core.client.review.DecisionReviewDefinitionManager;
-import org.eclipse.osee.ats.core.client.review.DecisionReviewManager;
import org.eclipse.osee.ats.core.client.review.DecisionReviewState;
import org.eclipse.osee.ats.core.client.review.ReviewManager;
import org.eclipse.osee.ats.core.client.team.TeamWorkFlowArtifact;
import org.eclipse.osee.ats.core.client.util.AtsChangeSet;
+import org.eclipse.osee.ats.core.workflow.state.TeamState;
import org.eclipse.osee.ats.core.workflow.transition.TransitionFactory;
-import org.eclipse.osee.ats.mocks.MockDecisionReviewDefinition;
-import org.eclipse.osee.framework.core.enums.SystemUser;
import org.eclipse.osee.framework.jdk.core.type.OseeCoreException;
+import org.eclipse.osee.framework.ui.ws.AWorkspace;
import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.BeforeClass;
/**
* Test unit for {@link DecisionReviewDefinitionManager}
- *
+ *
* @author Donald G. Dunne
*/
public class DecisionReviewDefinitionManagerTest extends DecisionReviewDefinitionManager {
+ public static String WORK_DEF_FILE_NAME = "support/WorkDef_Team_DecisionReviewDefinitionManagerTest_toDecision.ats";
+ public static String WORK_DEF_FILE_NAME_PREPARE =
+ "support/WorkDef_Team_DecisionReviewDefinitionManagerTest_Prepare.ats";
+
@BeforeClass
@AfterClass
public static void cleanup() throws Exception {
@@ -53,34 +56,32 @@ public class DecisionReviewDefinitionManagerTest extends DecisionReviewDefinitio
public void testCreateDecisionReviewDuringTransition_ToDecision() throws OseeCoreException {
AtsTestUtil.cleanupAndReset("DecisionReviewDefinitionManagerTest - ToDecision");
- // configure WorkDefinition to create a new Review on transition to Implement
- IAtsStateDefinition implement = AtsTestUtil.getImplementStateDef();
-
- MockDecisionReviewDefinition revDef = new MockDecisionReviewDefinition("Create New on Implement");
- revDef.setAutoTransitionToDecision(true);
- revDef.setBlockingType(ReviewBlockType.Transition);
- revDef.setDescription("the description");
- revDef.setRelatedToState(implement.getName());
- revDef.setStateEventType(StateEventType.TransitionTo);
- revDef.setReviewTitle("This is my review title");
- revDef.getOptions().addAll(DecisionReviewManager.getDefaultDecisionReviewOptions());
- revDef.getAssignees().add(SystemUser.UnAssigned.getUserId());
-
- implement.getDecisionReviews().add(revDef);
+ try {
+ String atsDsl = AWorkspace.getOseeInfResource(WORK_DEF_FILE_NAME, AtsClientIntegrationTestSuite.class);
+ JaxAtsWorkDef jaxWorkDef = new JaxAtsWorkDef();
+ jaxWorkDef.setName(AtsTestUtil.WORK_DEF_NAME);
+ jaxWorkDef.setWorkDefDsl(atsDsl);
+ AtsTestUtil.importWorkDefinition(jaxWorkDef);
+ AtsClientService.get().getWorkDefinitionAdmin().clearCaches();
+ } catch (Exception ex) {
+ throw new OseeCoreException(ex, "Error importing " + WORK_DEF_FILE_NAME);
+ }
TeamWorkFlowArtifact teamArt = AtsTestUtil.getTeamWf();
+ Assert.assertEquals("Implement State should have a single decision review definition", 1,
+ teamArt.getWorkDefinition().getStateByName(TeamState.Implement.getName()).getDecisionReviews().size());
Assert.assertEquals("No reviews should be present", 0, ReviewManager.getReviews(teamArt).size());
AtsChangeSet changes = new AtsChangeSet(getClass().getSimpleName());
- MockTransitionHelper helper =
- new MockTransitionHelper(getClass().getSimpleName(), Arrays.asList(teamArt), implement.getName(),
- Arrays.asList(AtsClientService.get().getUserService().getCurrentUser()), null, changes, TransitionOption.None);
+ MockTransitionHelper helper = new MockTransitionHelper(getClass().getSimpleName(), Arrays.asList(teamArt),
+ TeamState.Implement.getName(), Arrays.asList(AtsClientService.get().getUserService().getCurrentUser()), null,
+ changes, TransitionOption.None);
IAtsTransitionManager transitionMgr = TransitionFactory.getTransitionManager(helper);
TransitionResults results = transitionMgr.handleAllAndPersist();
+ Assert.assertTrue(results.toString(), results.isEmpty());
Assert.assertFalse(teamArt.isDirty());
Assert.assertFalse(teamArt.getLog().isDirty());
- Assert.assertTrue(results.toString(), results.isEmpty());
Assert.assertEquals("One review should be present", 1, ReviewManager.getReviews(teamArt).size());
DecisionReviewArtifact decArt = (DecisionReviewArtifact) ReviewManager.getReviews(teamArt).iterator().next();
@@ -91,7 +92,8 @@ public class DecisionReviewDefinitionManagerTest extends DecisionReviewDefinitio
decArt.getSoleAttributeValue(AtsAttributeTypes.ReviewBlocks));
Assert.assertEquals("This is my review title", decArt.getName());
Assert.assertEquals("the description", decArt.getSoleAttributeValue(AtsAttributeTypes.Description));
- Assert.assertEquals(implement.getName(), decArt.getSoleAttributeValue(AtsAttributeTypes.RelatedToState));
+ Assert.assertEquals(TeamState.Implement.getName(),
+ decArt.getSoleAttributeValue(AtsAttributeTypes.RelatedToState));
AtsTestUtil.validateArtifactCache();
}
@@ -100,27 +102,25 @@ public class DecisionReviewDefinitionManagerTest extends DecisionReviewDefinitio
public void testCreateDecisionReviewDuringTransition_Prepare() throws OseeCoreException {
AtsTestUtil.cleanupAndReset("DecisionReviewDefinitionManagerTest - Prepare");
- // configure WorkDefinition to create a new Review on transition to Implement
- IAtsStateDefinition implement = AtsTestUtil.getImplementStateDef();
-
- MockDecisionReviewDefinition revDef = new MockDecisionReviewDefinition("Create New on Implement");
- revDef.setAutoTransitionToDecision(false);
- revDef.setBlockingType(ReviewBlockType.Commit);
- revDef.setReviewTitle("This is the title");
- revDef.setDescription("the description");
- revDef.setRelatedToState(implement.getName());
- revDef.setStateEventType(StateEventType.TransitionTo);
- revDef.getOptions().addAll(DecisionReviewManager.getDefaultDecisionReviewOptions());
-
- implement.getDecisionReviews().add(revDef);
+ try {
+ String atsDsl = AWorkspace.getOseeInfResource(WORK_DEF_FILE_NAME_PREPARE, AtsClientIntegrationTestSuite.class);
+ JaxAtsWorkDef jaxWorkDef = new JaxAtsWorkDef();
+ jaxWorkDef.setName(AtsTestUtil.WORK_DEF_NAME);
+ jaxWorkDef.setWorkDefDsl(atsDsl);
+ AtsTestUtil.importWorkDefinition(jaxWorkDef);
+ AtsClientService.get().getWorkDefinitionAdmin().clearCaches();
+ } catch (Exception ex) {
+ throw new OseeCoreException(ex, "Error importing " + WORK_DEF_FILE_NAME_PREPARE);
+ }
TeamWorkFlowArtifact teamArt = AtsTestUtil.getTeamWf();
Assert.assertEquals("No reviews should be present", 0, ReviewManager.getReviews(teamArt).size());
AtsChangeSet changes = new AtsChangeSet(getClass().getSimpleName());
- MockTransitionHelper helper =
- new MockTransitionHelper(getClass().getSimpleName(), Arrays.asList(teamArt), implement.getName(),
- Arrays.asList(AtsClientService.get().getUserService().getCurrentUser()), null, changes, TransitionOption.None);
+ MockTransitionHelper helper = new MockTransitionHelper(getClass().getSimpleName(), Arrays.asList(teamArt),
+ TeamState.Implement.getName(), Arrays.asList(AtsClientService.get().getUserService().getCurrentUser
+
+ ()), null, changes, TransitionOption.None);
IAtsTransitionManager transitionMgr = TransitionFactory.getTransitionManager(helper);
TransitionResults results = transitionMgr.handleAllAndPersist();
@@ -135,7 +135,8 @@ public class DecisionReviewDefinitionManagerTest extends DecisionReviewDefinitio
Assert.assertEquals(ReviewBlockType.Commit.name(), decArt.getSoleAttributeValue(AtsAttributeTypes.ReviewBlocks));
Assert.assertEquals("This is the title", decArt.getName());
Assert.assertEquals("the description", decArt.getSoleAttributeValue(AtsAttributeTypes.Description));
- Assert.assertEquals(implement.getName(), decArt.getSoleAttributeValue(AtsAttributeTypes.RelatedToState));
+ Assert.assertEquals(TeamState.Implement.getName(),
+ decArt.getSoleAttributeValue(AtsAttributeTypes.RelatedToState));
AtsTestUtil.validateArtifactCache();
}
diff --git a/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/core/client/review/PeerReviewDefinitionManagerTest.java b/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/core/client/review/PeerReviewDefinitionManagerTest.java
index f55a721a200..4ddbbf43ffd 100644
--- a/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/core/client/review/PeerReviewDefinitionManagerTest.java
+++ b/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/core/client/review/PeerReviewDefinitionManagerTest.java
@@ -12,12 +12,12 @@ package org.eclipse.osee.ats.client.integration.tests.ats.core.client.review;
import java.util.Arrays;
import org.eclipse.osee.ats.api.data.AtsAttributeTypes;
-import org.eclipse.osee.ats.api.workdef.IAtsStateDefinition;
+import org.eclipse.osee.ats.api.workdef.JaxAtsWorkDef;
import org.eclipse.osee.ats.api.workdef.ReviewBlockType;
-import org.eclipse.osee.ats.api.workdef.StateEventType;
import org.eclipse.osee.ats.api.workflow.transition.IAtsTransitionManager;
import org.eclipse.osee.ats.api.workflow.transition.TransitionOption;
import org.eclipse.osee.ats.api.workflow.transition.TransitionResults;
+import org.eclipse.osee.ats.client.integration.AtsClientIntegrationTestSuite;
import org.eclipse.osee.ats.client.integration.tests.AtsClientService;
import org.eclipse.osee.ats.client.integration.tests.ats.core.client.AtsTestUtil;
import org.eclipse.osee.ats.client.integration.tests.ats.core.client.workflow.transition.MockTransitionHelper;
@@ -27,21 +27,23 @@ import org.eclipse.osee.ats.core.client.review.PeerToPeerReviewState;
import org.eclipse.osee.ats.core.client.review.ReviewManager;
import org.eclipse.osee.ats.core.client.team.TeamWorkFlowArtifact;
import org.eclipse.osee.ats.core.client.util.AtsChangeSet;
+import org.eclipse.osee.ats.core.workflow.state.TeamState;
import org.eclipse.osee.ats.core.workflow.transition.TransitionFactory;
-import org.eclipse.osee.ats.mocks.MockPeerReviewDefinition;
-import org.eclipse.osee.framework.core.enums.SystemUser;
import org.eclipse.osee.framework.jdk.core.type.OseeCoreException;
+import org.eclipse.osee.framework.ui.ws.AWorkspace;
import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.BeforeClass;
/**
* Test unit for {@link PeerReviewDefinitionManager}
- *
+ *
* @author Donald G. Dunne
*/
public class PeerReviewDefinitionManagerTest extends PeerReviewDefinitionManager {
+ public static String WORK_DEF_FILE_NAME = "support/WorkDef_Team_PeerReviewDefinitionManagerTest_Transition.ats";
+
@BeforeClass
@AfterClass
public static void cleanup() throws Exception {
@@ -52,26 +54,26 @@ public class PeerReviewDefinitionManagerTest extends PeerReviewDefinitionManager
public void testCreatePeerReviewDuringTransition() throws OseeCoreException {
AtsTestUtil.cleanupAndReset("PeerReviewDefinitionManagerTest");
- // configure WorkDefinition to create a new Review on transition to Implement
- IAtsStateDefinition implement = AtsTestUtil.getImplementStateDef();
-
- MockPeerReviewDefinition revDef = new MockPeerReviewDefinition("Create New on Implement");
- revDef.setBlockingType(ReviewBlockType.Transition);
- revDef.setDescription("the description");
- revDef.setRelatedToState(implement.getName());
- revDef.setStateEventType(StateEventType.TransitionTo);
- revDef.setReviewTitle("This is my review title");
- revDef.getAssignees().add(SystemUser.UnAssigned.getUserId());
-
- implement.getPeerReviews().add(revDef);
+ try {
+ String atsDsl = AWorkspace.getOseeInfResource(WORK_DEF_FILE_NAME, AtsClientIntegrationTestSuite.class);
+ JaxAtsWorkDef jaxWorkDef = new JaxAtsWorkDef();
+ jaxWorkDef.setName(AtsTestUtil.WORK_DEF_NAME);
+ jaxWorkDef.setWorkDefDsl(atsDsl);
+ AtsTestUtil.importWorkDefinition(jaxWorkDef);
+ AtsClientService.get().getWorkDefinitionAdmin().clearCaches();
+ } catch (Exception ex) {
+ throw new OseeCoreException(ex, "Error importing " + WORK_DEF_FILE_NAME);
+ }
TeamWorkFlowArtifact teamArt = AtsTestUtil.getTeamWf();
+ Assert.assertEquals("Implement State should have a single peer review definition", 1,
+ teamArt.getWorkDefinition().getStateByName(TeamState.Implement.getName()).getPeerReviews().size());
Assert.assertEquals("No reviews should be present", 0, ReviewManager.getReviews(teamArt).size());
AtsChangeSet changes = new AtsChangeSet(getClass().getSimpleName());
- MockTransitionHelper helper =
- new MockTransitionHelper(getClass().getSimpleName(), Arrays.asList(teamArt), implement.getName(),
- Arrays.asList(AtsClientService.get().getUserService().getCurrentUser()), null, changes, TransitionOption.None);
+ MockTransitionHelper helper = new MockTransitionHelper(getClass().getSimpleName(), Arrays.asList(teamArt),
+ TeamState.Implement.getName(), Arrays.asList(AtsClientService.get().getUserService().getCurrentUser()), null,
+ changes, TransitionOption.None);
IAtsTransitionManager transitionMgr = TransitionFactory.getTransitionManager(helper);
TransitionResults results = transitionMgr.handleAllAndPersist();
@@ -86,7 +88,8 @@ public class PeerReviewDefinitionManagerTest extends PeerReviewDefinitionManager
decArt.getSoleAttributeValue(AtsAttributeTypes.ReviewBlocks));
Assert.assertEquals("This is my review title", decArt.getName());
Assert.assertEquals("the description", decArt.getSoleAttributeValue(AtsAttributeTypes.Description));
- Assert.assertEquals(implement.getName(), decArt.getSoleAttributeValue(AtsAttributeTypes.RelatedToState));
+ Assert.assertEquals(TeamState.Implement.getName(),
+ decArt.getSoleAttributeValue(AtsAttributeTypes.RelatedToState));
AtsTestUtil.validateArtifactCache();
}
diff --git a/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/core/client/review/PeerToPeerReviewManagerTest.java b/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/core/client/review/PeerToPeerReviewManagerTest.java
index aacff78dd36..952d8cd3bc2 100644
--- a/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/core/client/review/PeerToPeerReviewManagerTest.java
+++ b/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/core/client/review/PeerToPeerReviewManagerTest.java
@@ -35,7 +35,7 @@ import org.junit.BeforeClass;
/**
* Test unit for {@link PeerToPeerReviewManager}
- *
+ *
* @author Donald G. Dunne
*/
public class PeerToPeerReviewManagerTest extends PeerToPeerReviewManager {
@@ -44,9 +44,8 @@ public class PeerToPeerReviewManagerTest extends PeerToPeerReviewManager {
@AfterClass
public static void cleanup() throws Exception {
AtsTestUtil.cleanup();
- SkynetTransaction transaction =
- TransactionManager.createTransaction(AtsUtilCore.getAtsBranch(),
- PeerToPeerReviewManagerTest.class.getSimpleName());
+ SkynetTransaction transaction = TransactionManager.createTransaction(AtsUtilCore.getAtsBranch(),
+ PeerToPeerReviewManagerTest.class.getSimpleName());
for (Artifact art : ArtifactQuery.getArtifactListFromTypeAndName(AtsArtifactTypes.PeerToPeerReview,
"PeerToPeerReviewManagerTest", AtsUtilCore.getAtsBranch(), QueryOption.CONTAINS_MATCH_OPTIONS)) {
if (art.getName().contains("StandAlone")) {
@@ -65,10 +64,9 @@ public class PeerToPeerReviewManagerTest extends PeerToPeerReviewManager {
AtsChangeSet changes = new AtsChangeSet(getClass().getSimpleName());
String reviewTitle = "Test Review - " + teamArt.getName();
- PeerToPeerReviewArtifact peerArt =
- PeerToPeerReviewManager.createNewPeerToPeerReview(teamArt, reviewTitle,
- AtsTestUtil.getAnalyzeStateDef().getName(), new Date(),
- AtsClientService.get().getUserService().getCurrentUser(), changes);
+ PeerToPeerReviewArtifact peerArt = PeerToPeerReviewManager.createNewPeerToPeerReview(teamArt, reviewTitle,
+ AtsTestUtil.getAnalyzeStateDef().getName(), new Date(),
+ AtsClientService.get().getUserService().getCurrentUser(), changes);
changes.execute();
Assert.assertNotNull(peerArt);
@@ -92,9 +90,8 @@ public class PeerToPeerReviewManagerTest extends PeerToPeerReviewManager {
AtsChangeSet changes = new AtsChangeSet(getClass().getSimpleName());
String reviewTitle = "Test Review - " + teamArt.getName();
- PeerToPeerReviewArtifact peerArt =
- PeerToPeerReviewManager.createNewPeerToPeerReview(teamArt, reviewTitle,
- AtsTestUtil.getAnalyzeStateDef().getName(), changes);
+ PeerToPeerReviewArtifact peerArt = PeerToPeerReviewManager.createNewPeerToPeerReview(teamArt, reviewTitle,
+ AtsTestUtil.getAnalyzeStateDef().getName(), changes);
changes.execute();
Assert.assertNotNull(peerArt);
@@ -117,9 +114,8 @@ public class PeerToPeerReviewManagerTest extends PeerToPeerReviewManager {
AtsChangeSet changes = new AtsChangeSet(getClass().getSimpleName());
String reviewTitle = "Test Review - " + testAi;
- PeerToPeerReviewArtifact peerArt =
- PeerToPeerReviewManager.createNewPeerToPeerReview(testAi, reviewTitle, null, new Date(),
- AtsClientService.get().getUserService().getCurrentUser(), changes);
+ PeerToPeerReviewArtifact peerArt = PeerToPeerReviewManager.createNewPeerToPeerReview(testAi, reviewTitle, null,
+ new Date(), AtsClientService.get().getUserService().getCurrentUser(), changes);
changes.execute();
Assert.assertNotNull(peerArt);
@@ -128,6 +124,7 @@ public class PeerToPeerReviewManagerTest extends PeerToPeerReviewManager {
peerArt.isDirty());
Assert.assertEquals(PeerToPeerReviewState.Prepare.getName(), peerArt.getCurrentStateName());
Assert.assertEquals("Joe Smith", peerArt.getStateMgr().getAssigneesStr());
- Assert.assertEquals(peerArt.getSoleAttributeValue(AtsAttributeTypes.ActionableItem), AtsUtilCore.getGuid(testAi));
+ Assert.assertEquals(((Artifact) AtsTestUtil.getTestAi().getStoreObject()).getGuid(),
+ peerArt.getSoleAttributeValue(AtsAttributeTypes.ActionableItem));
}
}
diff --git a/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/core/client/task/TaskManagerTest.java b/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/core/client/task/TaskManagerTest.java
index f26775ac0db..954e79eada0 100644
--- a/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/core/client/task/TaskManagerTest.java
+++ b/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/core/client/task/TaskManagerTest.java
@@ -10,10 +10,17 @@
*******************************************************************************/
package org.eclipse.osee.ats.client.integration.tests.ats.core.client.task;
+import static org.mockito.Mockito.when;
+import java.util.ArrayList;
import java.util.Arrays;
+import java.util.List;
import org.eclipse.osee.ats.api.data.AtsAttributeTypes;
-import org.eclipse.osee.ats.api.team.IAtsTeamDefinition;
import org.eclipse.osee.ats.api.workdef.IAtsWorkDefinition;
+import org.eclipse.osee.ats.api.workdef.IAtsWorkDefinitionAdmin;
+import org.eclipse.osee.ats.api.workdef.IWorkDefinitionMatch;
+import org.eclipse.osee.ats.api.workdef.JaxAtsWorkDef;
+import org.eclipse.osee.ats.api.workflow.IAtsTask;
+import org.eclipse.osee.ats.api.workflow.IAtsTeamWorkflow;
import org.eclipse.osee.ats.client.integration.tests.AtsClientService;
import org.eclipse.osee.ats.client.integration.tests.ats.core.client.AtsTestUtil;
import org.eclipse.osee.ats.core.client.task.TaskArtifact;
@@ -25,19 +32,34 @@ import org.eclipse.osee.ats.core.util.HoursSpentUtil;
import org.eclipse.osee.framework.core.util.Result;
import org.eclipse.osee.framework.core.util.XResultData;
import org.eclipse.osee.framework.jdk.core.type.OseeCoreException;
-import org.junit.AfterClass;
import org.junit.Assert;
+import org.junit.Before;
import org.junit.BeforeClass;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
/**
* Test unit for {@link TaskManager}
- *
+ *
* @author Donald G. Dunne
*/
public class TaskManagerTest extends TaskManager {
+ // @formatter:off
+ @Mock private IAtsTeamWorkflow teamWf, teamWf2;
+ @Mock private IAtsTask task1;
+ @Mock private IAtsWorkDefinitionAdmin workDefinitionAdmin;
+ @Mock private IWorkDefinitionMatch match1;
+ @Mock private IAtsWorkDefinition taskWorkDef1, taskWorkDef2;
+ // @formatter:on
+
+ @Before
+ public void setup() {
+ AtsTestUtil.cleanup();
+ MockitoAnnotations.initMocks(this);
+ }
+
@BeforeClass
- @AfterClass
public static void cleanup() throws OseeCoreException {
AtsTestUtil.cleanup();
}
@@ -48,15 +70,14 @@ public class TaskManagerTest extends TaskManager {
@org.junit.Test
public void testMoveTasks_sameWorkDefinitions() throws OseeCoreException {
AtsTestUtil.cleanupAndReset("testMoveTasks - sameWorkDefs");
- AtsChangeSet changes = new AtsChangeSet(getClass().getSimpleName());
- TaskArtifact taskToMove = AtsTestUtil.getOrCreateTaskOffTeamWf1(changes);
- changes.execute();
+ TaskArtifact taskToMove = AtsTestUtil.getOrCreateTaskOffTeamWf1();
TeamWorkFlowArtifact teamWf2 = AtsTestUtil.getTeamWf2();
IAtsWorkDefinition taskWorkDef =
AtsClientService.get().getWorkDefinitionAdmin().getWorkDefinitionForTask(taskToMove).getWorkDefinition();
IAtsWorkDefinition newTaskWorkDef =
- AtsClientService.get().getWorkDefinitionAdmin().getWorkDefinitionForTaskNotYetCreated(teamWf2).getWorkDefinition();
+ AtsClientService.get().getWorkDefinitionAdmin().getWorkDefinitionForTaskNotYetCreated(
+ teamWf2).getWorkDefinition();
Assert.assertNotNull(taskWorkDef);
Assert.assertEquals(taskWorkDef, newTaskWorkDef);
@@ -70,34 +91,29 @@ public class TaskManagerTest extends TaskManager {
*/
@org.junit.Test
public void testMoveTasks_differentWorkDefinitions() throws OseeCoreException {
- AtsTestUtil.cleanupAndReset("testMoveTasks - diffWorkDefs");
- AtsChangeSet changes = new AtsChangeSet(getClass().getSimpleName());
- TaskArtifact taskToMove = AtsTestUtil.getOrCreateTaskOffTeamWf1(changes);
- changes.execute();
- TeamWorkFlowArtifact teamWf2 = AtsTestUtil.getTeamWf2();
- IAtsWorkDefinition taskWorkDef =
- AtsClientService.get().getWorkDefinitionAdmin().getWorkDefinitionForTask(taskToMove).getWorkDefinition();
-
- // create new task work def
- XResultData resultData = new XResultData();
- AtsClientService.get().getWorkDefinitionAdmin();
- IAtsWorkDefinition differentTaskWorkDef =
- AtsClientService.get().getWorkDefinitionAdmin().copyWorkDefinition(taskWorkDef.getName() + "2", taskWorkDef,
- resultData);
- Assert.assertFalse("Should be no errors", resultData.isErrors());
- AtsClientService.get().getWorkDefinitionAdmin().addWorkDefinition(differentTaskWorkDef);
-
- // set teamWf2 to use that work def for tasks
- IAtsTeamDefinition teamDef = teamWf2.getTeamDefinition();
- teamDef.setRelatedTaskWorkDefinition(differentTaskWorkDef.getName());
-
- IAtsWorkDefinition newTaskWorkDef =
- AtsClientService.get().getWorkDefinitionAdmin().getWorkDefinitionForTaskNotYetCreated(teamWf2).getWorkDefinition();
- Assert.assertNotNull(taskWorkDef);
- Assert.assertNotSame("Should be different", taskWorkDef, newTaskWorkDef);
- Result result = TaskManager.moveTasks(teamWf2, Arrays.asList(taskToMove));
-
- Assert.assertTrue("This should failed: " + result.getText(), result.isFalse());
+ List<IAtsTask> tasks = new ArrayList<>();
+ tasks.add(task1);
+ when(teamWf.getUuid()).thenReturn(34534L);
+ when(teamWf2.getUuid()).thenReturn(9999L);
+ when(task1.getParentTeamWorkflow()).thenReturn(teamWf);
+
+ // fail when moving to same workflow as is already parent
+ Result result = TaskManager.moveTasksIsValid(teamWf, tasks, workDefinitionAdmin);
+ Assert.assertTrue(result.isFalse());
+ Assert.assertTrue(result.toString().contains("workflows are the same"));
+
+ // move if task defines it's own work definition
+ when(workDefinitionAdmin.isTaskOverridingItsWorkDefinition(task1)).thenReturn(true);
+ result = TaskManager.moveTasksIsValid(teamWf2, tasks, workDefinitionAdmin);
+ Assert.assertTrue(result.isTrue());
+
+ when(workDefinitionAdmin.isTaskOverridingItsWorkDefinition(task1)).thenReturn(false);
+ when(workDefinitionAdmin.getWorkDefinitionForTaskNotYetCreated(teamWf2)).thenReturn(match1);
+ when(match1.getWorkDefinition()).thenReturn(taskWorkDef1);
+ when(task1.getWorkDefinition()).thenReturn(taskWorkDef2);
+ result = TaskManager.moveTasksIsValid(teamWf2, tasks, workDefinitionAdmin);
+ Assert.assertTrue(result.isFalse());
+ Assert.assertTrue(result.toString().contains("does not match current"));
}
/**
@@ -107,9 +123,7 @@ public class TaskManagerTest extends TaskManager {
@org.junit.Test
public void testMoveTasks_diffWorkDefinitionsButTaskOverride() throws OseeCoreException {
AtsTestUtil.cleanupAndReset("testMoveTasks - diffWorkDefinitionsButTaskOverride");
- AtsChangeSet changes = new AtsChangeSet(getClass().getSimpleName());
- TaskArtifact taskToMove = AtsTestUtil.getOrCreateTaskOffTeamWf1(changes);
- changes.execute();
+ TaskArtifact taskToMove = AtsTestUtil.getOrCreateTaskOffTeamWf1();
TeamWorkFlowArtifact teamWf2 = AtsTestUtil.getTeamWf2();
IAtsWorkDefinition taskWorkDef =
AtsClientService.get().getWorkDefinitionAdmin().getWorkDefinitionForTask(taskToMove).getWorkDefinition();
@@ -117,10 +131,14 @@ public class TaskManagerTest extends TaskManager {
// create new task work def
XResultData resultData = new XResultData();
AtsClientService.get().getWorkDefinitionAdmin();
- IAtsWorkDefinition differentTaskWorkDef =
- AtsClientService.get().getWorkDefinitionAdmin().copyWorkDefinition(taskWorkDef.getName() + "2", taskWorkDef,
- resultData);
- Assert.assertFalse("Should be no errors", resultData.isErrors());
+ IAtsWorkDefinition differentTaskWorkDef = AtsClientService.get().getWorkDefinitionAdmin().copyWorkDefinition(
+ taskWorkDef.getName() + "2", taskWorkDef, resultData);
+ Assert.assertFalse("Should be no errors: " + resultData.toString(), resultData.isErrors());
+ resultData.clear();
+
+ storeWorkDefinition(resultData, differentTaskWorkDef);
+
+ Assert.assertFalse("Should be no errors: " + resultData.toString(), resultData.isErrors());
AtsClientService.get().getWorkDefinitionAdmin().addWorkDefinition(differentTaskWorkDef);
// set work definition override on task; move should go through
@@ -128,7 +146,8 @@ public class TaskManagerTest extends TaskManager {
taskToMove.persist("testMoveTasks - set workDef attribute on task");
IAtsWorkDefinition newTaskWorkDef =
- AtsClientService.get().getWorkDefinitionAdmin().getWorkDefinitionForTaskNotYetCreated(teamWf2).getWorkDefinition();
+ AtsClientService.get().getWorkDefinitionAdmin().getWorkDefinitionForTaskNotYetCreated(
+ teamWf2).getWorkDefinition();
Assert.assertNotNull(taskWorkDef);
Assert.assertSame("Should be same", taskWorkDef, newTaskWorkDef);
Result result = TaskManager.moveTasks(teamWf2, Arrays.asList(taskToMove));
@@ -136,20 +155,34 @@ public class TaskManagerTest extends TaskManager {
Assert.assertTrue("This should pass: " + result.getText(), result.isTrue());
}
+ private void storeWorkDefinition(XResultData resultData, IAtsWorkDefinition differentTaskWorkDef) {
+ JaxAtsWorkDef jaxWorkDef = new JaxAtsWorkDef();
+ jaxWorkDef.setName(differentTaskWorkDef.getName());
+ String workDefXml;
+ try {
+ workDefXml =
+ AtsClientService.get().getWorkDefinitionAdmin().getStorageString(differentTaskWorkDef, resultData);
+ } catch (Exception ex) {
+ resultData.errorf("Exception getting storage string for work def [%s]: ex [%s]",
+ differentTaskWorkDef.getName(), ex.getLocalizedMessage());
+ return;
+ }
+ jaxWorkDef.setWorkDefDsl(workDefXml);
+ AtsClientService.getConfigEndpoint().storeWorkDef(jaxWorkDef);
+ }
+
@org.junit.Test
public void testTransitionToCompletedThenInWork() throws OseeCoreException {
AtsTestUtil.cleanupAndReset("TaskManagerTest - TransitionToCompleted");
- AtsChangeSet changes = new AtsChangeSet(getClass().getSimpleName());
- TaskArtifact taskArt = AtsTestUtil.getOrCreateTaskOffTeamWf1(changes);
- changes.execute();
+ TaskArtifact taskArt = AtsTestUtil.getOrCreateTaskOffTeamWf1();
// ensure nothing dirty
AtsTestUtil.validateArtifactCache();
// transition to Completed
- changes = new AtsChangeSet(getClass().getSimpleName() + " testTransitionToCompletedThenInWork() 1");
+ AtsChangeSet changes = new AtsChangeSet(getClass().getSimpleName() + " testTransitionToCompletedThenInWork() 1");
Result result = TaskManager.transitionToCompleted(taskArt, 0.0, 3, changes);
Assert.assertEquals(Result.TrueResult, result);
changes.execute();
@@ -163,9 +196,8 @@ public class TaskManagerTest extends TaskManager {
// transition back to InWork
changes = new AtsChangeSet(getClass().getSimpleName() + " testTransitionToCompletedThenInWork() 2");
- result =
- TaskManager.transitionToInWork(taskArt, AtsClientService.get().getUserService().getCurrentUser(), 45, .5,
- changes);
+ result = TaskManager.transitionToInWork(taskArt, AtsClientService.get().getUserService().getCurrentUser(), 45, .5,
+ changes);
Assert.assertEquals(Result.TrueResult, result);
changes.execute();
Assert.assertEquals(TaskStates.InWork.getName(), taskArt.getCurrentStateName());
diff --git a/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/core/client/util/CopyActionDetailsTest.java b/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/core/client/util/CopyActionDetailsTest.java
index 9ce07b97e91..1a156d0381d 100644
--- a/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/core/client/util/CopyActionDetailsTest.java
+++ b/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/core/client/util/CopyActionDetailsTest.java
@@ -48,12 +48,10 @@ public class CopyActionDetailsTest {
@Test
public void test02GetDetailsStringForTask() throws OseeCoreException {
- AtsChangeSet changes = new AtsChangeSet(getClass().getSimpleName());
- String str = new CopyActionDetails(AtsTestUtil.getOrCreateTaskOffTeamWf1(changes)).getDetailsString();
+ String str = new CopyActionDetails(AtsTestUtil.getOrCreateTaskOffTeamWf1()).getDetailsString();
assertEquals(
- "\"Task\" - " + AtsTestUtil.getOrCreateTaskOffTeamWf1(changes).getAtsId() + " - \"AtsTestUtil - Task [CopyActionDetailsTest]\"",
+ "\"Task\" - " + AtsTestUtil.getOrCreateTaskOffTeamWf1().getAtsId() + " - \"AtsTestUtil - Task [CopyActionDetailsTest]\"",
str);
- changes.execute();
}
@Test
@@ -68,9 +66,8 @@ public class CopyActionDetailsTest {
@Test
public void test04GetDetailsStringForPeerReview() throws OseeCoreException {
- PeerToPeerReviewArtifact review =
- AtsTestUtil.getOrCreatePeerReview(ReviewBlockType.None, AtsTestUtilState.Analyze, new AtsChangeSet(
- "test04GetDetailsStringForPeerReview"));
+ PeerToPeerReviewArtifact review = AtsTestUtil.getOrCreatePeerReview(ReviewBlockType.None,
+ AtsTestUtilState.Analyze, new AtsChangeSet("test04GetDetailsStringForPeerReview"));
String str = new CopyActionDetails(review).getDetailsString();
assertEquals("\"PeerToPeer Review\" - " + review.getAtsId() + " - \"AtsTestUtil Test Peer Review\"", str);
review.persist(getClass().getSimpleName());
diff --git a/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/core/client/workflow/transition/TransitionManagerTest.java b/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/core/client/workflow/transition/TransitionManagerTest.java
index f66a41b7ff8..320046172a4 100644
--- a/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/core/client/workflow/transition/TransitionManagerTest.java
+++ b/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/core/client/workflow/transition/TransitionManagerTest.java
@@ -10,24 +10,30 @@
*******************************************************************************/
package org.eclipse.osee.ats.client.integration.tests.ats.core.client.workflow.transition;
+import static org.mockito.Mockito.when;
import java.util.ArrayList;
import java.util.Arrays;
-import java.util.Date;
+import java.util.Collections;
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.team.IAtsTeamDefinition;
import org.eclipse.osee.ats.api.user.IAtsUser;
import org.eclipse.osee.ats.api.workdef.IAtsStateDefinition;
-import org.eclipse.osee.ats.api.workdef.IAtsWidgetDefinition;
+import org.eclipse.osee.ats.api.workdef.JaxAtsWorkDef;
import org.eclipse.osee.ats.api.workdef.ReviewBlockType;
import org.eclipse.osee.ats.api.workdef.RuleDefinitionOption;
-import org.eclipse.osee.ats.api.workdef.WidgetOption;
+import org.eclipse.osee.ats.api.workdef.StateType;
+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.api.workflow.state.IAtsStateManager;
import org.eclipse.osee.ats.api.workflow.transition.IAtsTransitionManager;
import org.eclipse.osee.ats.api.workflow.transition.TransitionOption;
import org.eclipse.osee.ats.api.workflow.transition.TransitionResult;
import org.eclipse.osee.ats.api.workflow.transition.TransitionResults;
import org.eclipse.osee.ats.client.demo.DemoUsers;
+import org.eclipse.osee.ats.client.integration.AtsClientIntegrationTestSuite;
import org.eclipse.osee.ats.client.integration.tests.AtsClientService;
import org.eclipse.osee.ats.client.integration.tests.ats.core.client.AtsTestUtil;
import org.eclipse.osee.ats.client.integration.tests.ats.core.client.AtsTestUtil.AtsTestUtilState;
@@ -35,8 +41,6 @@ import org.eclipse.osee.ats.core.client.review.DecisionReviewArtifact;
import org.eclipse.osee.ats.core.client.review.DecisionReviewManager;
import org.eclipse.osee.ats.core.client.review.DecisionReviewState;
import org.eclipse.osee.ats.core.client.review.PeerToPeerReviewArtifact;
-import org.eclipse.osee.ats.core.client.task.TaskArtifact;
-import org.eclipse.osee.ats.core.client.task.TaskManager;
import org.eclipse.osee.ats.core.client.team.TeamWorkFlowArtifact;
import org.eclipse.osee.ats.core.client.util.AtsChangeSet;
import org.eclipse.osee.ats.core.client.workflow.AbstractWorkflowArtifact;
@@ -44,13 +48,16 @@ import org.eclipse.osee.ats.core.workflow.state.TeamState;
import org.eclipse.osee.ats.core.workflow.transition.TransitionFactory;
import org.eclipse.osee.ats.core.workflow.transition.TransitionHelper;
import org.eclipse.osee.ats.core.workflow.transition.TransitionManager;
-import org.eclipse.osee.ats.mocks.MockStateDefinition;
import org.eclipse.osee.framework.core.enums.SystemUser;
import org.eclipse.osee.framework.core.util.Result;
import org.eclipse.osee.framework.jdk.core.type.OseeCoreException;
+import org.eclipse.osee.framework.ui.ws.AWorkspace;
import org.junit.AfterClass;
import org.junit.Assert;
+import org.junit.Before;
import org.junit.BeforeClass;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
/**
* Test unit for {@link TransitionManager}
@@ -60,6 +67,25 @@ import org.junit.BeforeClass;
public class TransitionManagerTest {
private static List<AbstractWorkflowArtifact> EMPTY_AWAS = new ArrayList<>();
+ public static String WORK_DEF_TARGETED_VERSION_FILE_NAME =
+ "support/WorkDef_Team_TransitionManagerTest_TargetedVersion.ats";
+ public static String WORK_DEF_WIDGET_REQUIRED_TRANSITION_FILE_NAME =
+ "support/WorkDef_Team_TransitionManagerTest_WidgetRequiredTransition.ats";
+ private static String WORK_DEF_WIDGET_REQUIRED_COMPLETION_FILE_NAME =
+ "support/WorkDef_Team_TransitionManagerTest_WidgetRequiredCompletion.ats";
+
+ // @formatter:off
+ @Mock private IAtsTeamWorkflow teamWf;
+ @Mock private IAtsTask task;
+ @Mock private IAtsStateDefinition toStateDef;
+ @Mock private IAtsWorkItemService workItemService;
+ @Mock private IAtsStateManager teamWfStateMgr, taskStateMgr;
+ // @formatter:on
+
+ @Before
+ public void setup() {
+ MockitoAnnotations.initMocks(this);
+ }
@BeforeClass
@AfterClass
@@ -249,24 +275,13 @@ public class TransitionManagerTest {
transMgr.handleTransitionValidation(results);
Assert.assertTrue("Test wasn't reset to allow transition", results.isEmpty());
- IAtsWidgetDefinition estHoursWidget = AtsTestUtil.getEstHoursWidgetDef();
- fromStateDef.getLayoutItems().add(estHoursWidget);
- IAtsWidgetDefinition workPackageWidget = AtsTestUtil.getWorkPackageWidgetDef();
- fromStateDef.getLayoutItems().add(workPackageWidget);
-
// test that two widgets validate
transMgr.handleTransitionValidation(results);
Assert.assertTrue(results.isEmpty());
// test that estHours required fails validation
results.clear();
- estHoursWidget.getOptions().add(WidgetOption.REQUIRED_FOR_TRANSITION);
- transMgr.handleTransitionValidation(results);
- Assert.assertTrue(results.contains("[Estimated Hours] is required for transition"));
-
- // test that workPackage required fails both widgets
- results.clear();
- workPackageWidget.getOptions().add(WidgetOption.REQUIRED_FOR_TRANSITION);
+ loadWorkDefForTest(WORK_DEF_WIDGET_REQUIRED_TRANSITION_FILE_NAME);
transMgr.handleTransitionValidation(results);
Assert.assertTrue(results.contains("[Estimated Hours] is required for transition"));
Assert.assertTrue(results.contains("[Work Package] is required for transition"));
@@ -289,26 +304,20 @@ public class TransitionManagerTest {
transMgr.handleTransitionValidation(results);
Assert.assertTrue("Test wasn't reset to allow transition", results.isEmpty());
- IAtsWidgetDefinition estHoursWidget = AtsTestUtil.getEstHoursWidgetDef();
- fromStateDef.getLayoutItems().add(estHoursWidget);
- IAtsWidgetDefinition workPackageWidget = AtsTestUtil.getWorkPackageWidgetDef();
- fromStateDef.getLayoutItems().add(workPackageWidget);
-
// test that two widgets validate
transMgr.handleTransitionValidation(results);
Assert.assertTrue(results.isEmpty());
- // test that Work Package only widget required for normal transition
+ // test that neither are required for transition to implement
results.clear();
helper.setToStateName(AtsTestUtil.getImplementStateDef().getName());
- estHoursWidget.getOptions().add(WidgetOption.REQUIRED_FOR_COMPLETION);
- workPackageWidget.getOptions().add(WidgetOption.REQUIRED_FOR_TRANSITION);
transMgr.handleTransitionValidation(results);
- Assert.assertTrue(results.contains("[Work Package] is required for transition"));
+ Assert.assertTrue(results.isEmpty());
- // test that Estimated House and Work Package required for transition to completed
+ // test that Work Package only widget required for normal transition
results.clear();
helper.setToStateName(AtsTestUtil.getCompletedStateDef().getName());
+ loadWorkDefForTest(WORK_DEF_WIDGET_REQUIRED_COMPLETION_FILE_NAME);
transMgr.handleTransitionValidation(results);
Assert.assertTrue(results.contains("[Estimated Hours] is required for transition to [Completed]"));
Assert.assertTrue(results.contains("[Work Package] is required for transition"));
@@ -329,64 +338,40 @@ public class TransitionManagerTest {
@org.junit.Test
public void testIsStateTransitionable__ValidateTasks() throws OseeCoreException {
- AtsTestUtil.cleanupAndReset("TransitionManagerTest-3");
- TeamWorkFlowArtifact teamArt = AtsTestUtil.getTeamWf();
- MockTransitionHelper helper = new MockTransitionHelper(getClass().getSimpleName(), Arrays.asList(teamArt),
- AtsTestUtil.getImplementStateDef().getName(),
- Arrays.asList(AtsClientService.get().getUserService().getCurrentUser()), null,
- new AtsChangeSet(getClass().getSimpleName()), TransitionOption.None);
- IAtsTransitionManager transMgr = TransitionFactory.getTransitionManager(helper);
+
TransitionResults results = new TransitionResults();
+ when(teamWf.isTeamWorkflow()).thenReturn(true);
- // validate that can transition
- transMgr.handleTransitionValidation(results);
+ // validate that if rule exists and is working, then transition with tasks is ok
+ when(teamWf.getStateDefinition()).thenReturn(toStateDef);
+ when(toStateDef.getStateType()).thenReturn(StateType.Working);
+ when(toStateDef.hasRule(RuleDefinitionOption.AllowTransitionWithoutTaskCompletion.name())).thenReturn(true);
+ TransitionManager.validateTaskCompletion(results, teamWf, toStateDef, workItemService);
Assert.assertTrue(results.isEmpty());
- // validate that can't transition with InWork task
- AtsChangeSet changes = new AtsChangeSet(getClass().getSimpleName());
- TaskArtifact taskArt = teamArt.createNewTask("New Tasks", new Date(),
- AtsClientService.get().getUserService().getCurrentUser(), teamArt.getCurrentStateName(), changes);
- changes.execute();
- String relatedToState = taskArt.getSoleAttributeValue(AtsAttributeTypes.RelatedToState, "");
+ // test only check if Team Workflow
+ when(toStateDef.hasRule(RuleDefinitionOption.AllowTransitionWithoutTaskCompletion.name())).thenReturn(false);
+ TransitionManager.validateTaskCompletion(results, task, toStateDef, workItemService);
+ Assert.assertTrue(results.isEmpty());
- results.clear();
- transMgr.handleTransitionValidation(results);
- Assert.assertTrue(results.contains(teamArt, TransitionResult.TASKS_NOT_COMPLETED));
+ // test not check if working state
+ when(teamWf.getStateMgr()).thenReturn(teamWfStateMgr);
+ when(teamWfStateMgr.getStateType()).thenReturn(StateType.Working);
+ TransitionManager.validateTaskCompletion(results, teamWf, toStateDef, workItemService);
+ Assert.assertTrue(results.isEmpty());
- MockStateDefinition teamCurrentState = (MockStateDefinition) teamArt.getStateDefinition();
+ // test transition to completed; all tasks are completed
+ when(toStateDef.getStateType()).thenReturn(StateType.Completed);
+ when(workItemService.getTaskArtifacts(teamWf)).thenReturn(Collections.singleton(task));
+ when(task.getStateMgr()).thenReturn(taskStateMgr);
+ when(taskStateMgr.getStateType()).thenReturn(StateType.Completed);
+ TransitionManager.validateTaskCompletion(results, teamWf, toStateDef, workItemService);
+ Assert.assertTrue(results.isEmpty());
- try {
- // test that can transition with AllowTransitionWithoutTaskCompletion rule on state
- teamCurrentState.addRule(RuleDefinitionOption.AllowTransitionWithoutTaskCompletion.name());
- // transition task to completed
- results.clear();
-
- // should not get transition validation error now
- results.clear();
- transMgr.handleTransitionValidation(results);
- Assert.assertTrue(results.isEmpty());
-
- // attempt to transition parent to cancelled, should not be able to transition with un-completed/cancelled tasks
- helper = new MockTransitionHelper(getClass().getSimpleName(), Arrays.asList(teamArt),
- AtsTestUtil.getCancelledStateDef().getName(),
- Arrays.asList(AtsClientService.get().getUserService().getCurrentUser()), null,
- new AtsChangeSet(getClass().getSimpleName()), TransitionOption.None);
- transMgr = TransitionFactory.getTransitionManager(helper);
- results.clear();
- transMgr.handleTransitionValidation(results);
- Assert.assertTrue(results.contains(teamArt, TransitionResult.TASKS_NOT_COMPLETED));
-
- // Cleanup task by completing and validate can transition
- changes = new AtsChangeSet(getClass().getSimpleName());
- TaskManager.transitionToCompleted(taskArt, 0.0, 0.1, changes);
- changes.execute();
- results.clear();
- transMgr.handleTransitionValidation(results);
- Assert.assertTrue(results.isEmpty());
- } finally {
- // just in case test goes bad, make sure we remove this rule
- teamCurrentState.removeRule(RuleDefinitionOption.AllowTransitionWithoutTaskCompletion.name());
- }
+ // test transtion to completed; task is not completed
+ when(taskStateMgr.getStateType()).thenReturn(StateType.Working);
+ TransitionManager.validateTaskCompletion(results, teamWf, toStateDef, workItemService);
+ Assert.assertTrue(results.contains(TransitionResult.TASKS_NOT_COMPLETED.getDetails()));
}
@@ -434,7 +419,8 @@ public class TransitionManagerTest {
Assert.assertTrue(results.isEmpty());
// validate that can't transition without targeted version when team def rule is set
- AtsTestUtil.getAnalyzeStateDef().addRule(RuleDefinitionOption.RequireTargetedVersion.name());
+ loadWorkDefForTest(WORK_DEF_TARGETED_VERSION_FILE_NAME);
+
results.clear();
transMgr.handleTransitionValidation(results);
Assert.assertTrue(results.contains(teamArt, TransitionResult.MUST_BE_TARGETED_FOR_VERSION));
@@ -446,6 +432,19 @@ public class TransitionManagerTest {
Assert.assertTrue(results.isEmpty());
}
+ private void loadWorkDefForTest(String workDefFilename) {
+ try {
+ String atsDsl = AWorkspace.getOseeInfResource(workDefFilename, AtsClientIntegrationTestSuite.class);
+ JaxAtsWorkDef jaxWorkDef = new JaxAtsWorkDef();
+ jaxWorkDef.setName(AtsTestUtil.WORK_DEF_NAME);
+ jaxWorkDef.setWorkDefDsl(atsDsl);
+ AtsTestUtil.importWorkDefinition(jaxWorkDef);
+ AtsClientService.get().getWorkDefinitionAdmin().clearCaches();
+ } catch (Exception ex) {
+ throw new OseeCoreException(ex, "Error importing " + workDefFilename);
+ }
+ }
+
@org.junit.Test
public void testIsStateTransitionable__ReviewsCompleted() throws OseeCoreException {
diff --git a/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/workflow/AtsTaskEndpointImplTest.java b/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/workflow/AtsTaskEndpointImplTest.java
index f649da447c2..583d2c69bcf 100644
--- a/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/workflow/AtsTaskEndpointImplTest.java
+++ b/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/workflow/AtsTaskEndpointImplTest.java
@@ -20,6 +20,8 @@ import org.eclipse.osee.ats.api.task.AtsTaskEndpointApi;
import org.eclipse.osee.ats.api.task.JaxAtsTask;
import org.eclipse.osee.ats.api.task.JaxAttribute;
import org.eclipse.osee.ats.api.task.NewTaskData;
+import org.eclipse.osee.ats.api.task.NewTaskDataFactory;
+import org.eclipse.osee.ats.api.task.NewTaskDatas;
import org.eclipse.osee.ats.client.demo.DemoUsers;
import org.eclipse.osee.ats.client.demo.DemoUtil;
import org.eclipse.osee.ats.client.integration.tests.AtsClientService;
@@ -61,12 +63,10 @@ public class AtsTaskEndpointImplTest {
@Test
public void testTaskCRD() {
// Test Create
- NewTaskData data = new NewTaskData();
String createdByUserId = DemoUsers.Joe_Smith.getUserId();
- data.setAsUserId(createdByUserId);
Date createdDate = new Date();
- data.setCommitComment("Create Tasks via - " + getClass().getSimpleName());
- data.setTeamWfUuid(codeTeamWfUuid);
+ NewTaskData data = NewTaskDataFactory.get("Create Tasks via - " + getClass().getSimpleName(),
+ DemoUsers.Joe_Smith.getUserId(), codeTeamWfUuid);
JaxAtsTask task = createJaxAtsTask(taskUuid1, "Task 1", "description", createdByUserId, createdDate, null);
task.setTaskWorkDef("WorkDef_Task_Default");
@@ -80,7 +80,7 @@ public class AtsTaskEndpointImplTest {
task3.addAttribute(CoreAttributeTypes.StaticId.getName(), "my static id");
data.getNewTasks().add(task3);
- Response response = taskEp.create(data);
+ Response response = taskEp.create(new NewTaskDatas(data));
Assert.assertEquals(Response.Status.OK.getStatusCode(), response.getStatus());
// Test Get
diff --git a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/branch/AtsBranchUtil.java b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/branch/AtsBranchUtil.java
index ab19cf4bfef..fe5783e96ad 100644
--- a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/branch/AtsBranchUtil.java
+++ b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/branch/AtsBranchUtil.java
@@ -57,6 +57,7 @@ public class AtsBranchUtil {
* @return true if one or more reviews were created
*/
public static boolean createNecessaryBranchEventReviews(StateEventType stateEventType, TeamWorkFlowArtifact teamArt, Date createdDate, IAtsUser createdBy, IAtsChangeSet changes) throws OseeCoreException {
+ Conditions.checkNotNull(teamArt, "Team Workflow");
boolean created = false;
if (stateEventType != StateEventType.CommitBranch && stateEventType != StateEventType.CreateBranch) {
throw new OseeStateException("Invalid stateEventType [%s]", stateEventType);
@@ -64,9 +65,8 @@ public class AtsBranchUtil {
// Create any decision and peerToPeer reviews for createBranch and commitBranch
for (IAtsDecisionReviewDefinition decRevDef : teamArt.getStateDefinition().getDecisionReviews()) {
if (decRevDef.getStateEventType() != null && decRevDef.getStateEventType().equals(stateEventType)) {
- DecisionReviewArtifact decArt =
- DecisionReviewDefinitionManager.createNewDecisionReview(decRevDef, changes, teamArt, createdDate,
- createdBy);
+ DecisionReviewArtifact decArt = DecisionReviewDefinitionManager.createNewDecisionReview(decRevDef, changes,
+ teamArt, createdDate, createdBy);
if (decArt != null) {
created = true;
changes.add(decArt);
@@ -75,9 +75,8 @@ public class AtsBranchUtil {
}
for (IAtsPeerReviewDefinition peerRevDef : teamArt.getStateDefinition().getPeerReviews()) {
if (peerRevDef.getStateEventType() != null && peerRevDef.getStateEventType().equals(stateEventType)) {
- PeerToPeerReviewArtifact peerArt =
- PeerReviewDefinitionManager.createNewPeerToPeerReview(peerRevDef, changes, teamArt, createdDate,
- createdBy);
+ PeerToPeerReviewArtifact peerArt = PeerReviewDefinitionManager.createNewPeerToPeerReview(peerRevDef,
+ changes, teamArt, createdDate, createdBy);
if (peerArt != null) {
created = true;
changes.add(peerArt);
@@ -89,7 +88,7 @@ public class AtsBranchUtil {
/**
* Perform error checks and popup confirmation dialogs associated with creating a working branch.
- *
+ *
* @param popup if true, errors are popped up to user; otherwise sent silently in Results
* @return Result return of status
*/
@@ -178,14 +177,13 @@ public class AtsBranchUtil {
private static void performPostBranchCreationTasks(final TeamWorkFlowArtifact teamArt) throws OseeCoreException {
// Create reviews as necessary
AtsChangeSet changes = new AtsChangeSet("Create Reviews upon Transition");
- boolean created =
- createNecessaryBranchEventReviews(StateEventType.CreateBranch, teamArt, new Date(), AtsCoreUsers.SYSTEM_USER,
- changes);
+ boolean created = createNecessaryBranchEventReviews(StateEventType.CreateBranch, teamArt, new Date(),
+ AtsCoreUsers.SYSTEM_USER, changes);
if (created) {
changes.execute();
}
- // Notify extensions of branch creation
+ // Notify extensions of branch creation
for (IAtsStateItemCore item : AtsStateItemCoreManager.getStateItems()) {
item.workingBranchCreated(teamArt);
}
diff --git a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/config/IAtsClientVersionService.java b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/config/IAtsClientVersionService.java
index 7b04588472c..50ac01af975 100644
--- a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/config/IAtsClientVersionService.java
+++ b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/config/IAtsClientVersionService.java
@@ -32,7 +32,7 @@ public interface IAtsClientVersionService extends IAtsVersionService {
Branch getBranch(IAtsVersion version);
- IAtsVersion createVersion(String title, String guid, long uuid);
+ IAtsVersion createVersion(String name, String guid, long uuid);
IAtsVersion createVersion(String name);
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 21cfd88f349..a65b2fafdd4 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
@@ -499,6 +499,7 @@ public class AtsClientImpl extends AtsCoreServiceImpl implements IAtsClient {
*/
@Override
public Artifact getArtifact(long uuid) throws OseeCoreException {
+ Conditions.checkExpressionFailOnTrue(uuid <= 0, "Uuid must be > 0; is %d", uuid);
Artifact result = null;
try {
result = ArtifactQuery.getArtifactFromId((int) uuid, AtsUtilCore.getAtsBranch());
@@ -816,7 +817,7 @@ public class AtsClientImpl extends AtsCoreServiceImpl implements IAtsClient {
}
@Override
- public Artifact getArtifactByName(IArtifactType artType, String name) {
+ public ArtifactId getArtifactByName(IArtifactType artType, String name) {
return ArtifactQuery.getArtifactFromTypeAndNameNoException(artType, name, AtsUtilCore.getAtsBranch());
}
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 1ff69e21bfc..db2f7325f72 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
@@ -11,34 +11,25 @@
package org.eclipse.osee.ats.core.client.task;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.Collection;
-import java.util.Date;
-import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.logging.Level;
-import org.eclipse.osee.ats.api.data.AtsArtifactTypes;
import org.eclipse.osee.ats.api.data.AtsAttributeTypes;
import org.eclipse.osee.ats.api.data.AtsRelationTypes;
-import org.eclipse.osee.ats.api.user.IAtsUser;
-import org.eclipse.osee.ats.api.util.IAtsChangeSet;
import org.eclipse.osee.ats.api.workdef.IStateToken;
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;
import org.eclipse.osee.ats.core.client.workflow.AbstractWorkflowArtifact;
-import org.eclipse.osee.ats.core.util.AtsUtilCore;
import org.eclipse.osee.ats.core.util.PercentCompleteTotalUtil;
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.util.Strings;
import org.eclipse.osee.framework.logging.OseeLog;
import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
-import org.eclipse.osee.framework.skynet.core.artifact.ArtifactTypeManager;
/**
* @author Donald G. Dunne
@@ -89,41 +80,6 @@ public abstract class AbstractTaskableArtifact extends AbstractWorkflowArtifact
return getRelatedArtifactsCount(AtsRelationTypes.TeamWfToTask_Task) > 0;
}
- public TaskArtifact createNewTask(String title, Date createdDate, IAtsUser createdBy, IAtsChangeSet changes) throws OseeCoreException {
- return createNewTask(Arrays.asList(AtsClientService.get().getUserService().getCurrentUser()), title, createdDate,
- createdBy, null, changes);
- }
-
- public TaskArtifact createNewTask(List<? extends IAtsUser> assignees, String title, Date createdDate, IAtsUser createdBy, IAtsChangeSet changes) throws OseeCoreException {
- return createNewTask(assignees, title, createdDate, createdBy, null, changes);
- }
-
- public TaskArtifact createNewTask(String title, Date createdDate, IAtsUser createdBy, String relatedToState, IAtsChangeSet changes) throws OseeCoreException {
- return createNewTask(Arrays.asList(AtsClientService.get().getUserService().getCurrentUser()), title, createdDate,
- createdBy, relatedToState, changes);
- }
-
- public TaskArtifact createNewTask(List<? extends IAtsUser> assignees, String title, Date createdDate, IAtsUser createdBy, String relatedToState, IAtsChangeSet changes) throws OseeCoreException {
- TaskArtifact taskArt = null;
- taskArt =
- (TaskArtifact) ArtifactTypeManager.addArtifact(AtsArtifactTypes.Task, AtsUtilCore.getAtsBranch(), title);
-
- AtsClientService.get().getUtilService().setAtsId(AtsClientService.get().getSequenceProvider(), taskArt,
- getParentTeamWorkflow().getTeamDefinition(), changes);
-
- addRelation(AtsRelationTypes.TeamWfToTask_Task, taskArt);
- taskArt.initializeNewStateMachine(assignees, new Date(),
- (createdBy == null ? AtsClientService.get().getUserService().getCurrentUser() : createdBy), changes);
-
- // Set parent state task is related to if set
- if (Strings.isValid(relatedToState)) {
- taskArt.setSoleAttributeValue(AtsAttributeTypes.RelatedToState, relatedToState);
- }
- AtsTaskCache.decache(this);
- changes.add(taskArt);
- return taskArt;
- }
-
public Result areTasksComplete() {
try {
for (TaskArtifact taskArt : getTaskArtifacts()) {
@@ -238,30 +194,6 @@ public abstract class AbstractTaskableArtifact extends AbstractWorkflowArtifact
return spent / taskArts.size();
}
- public Collection<TaskArtifact> createTasks(List<String> titles, List<IAtsUser> assignees, Date createdDate, IAtsUser createdBy, IAtsChangeSet changes) throws OseeCoreException {
- return createTasks(titles, assignees, createdDate, createdBy, null, changes);
- }
-
- /**
- * @param relatedToState State name Tasks must be completed in or null
- */
- public Collection<TaskArtifact> createTasks(List<String> titles, List<IAtsUser> assignees, Date createdDate, IAtsUser createdBy, String relatedToState, IAtsChangeSet changes) throws OseeCoreException {
- List<TaskArtifact> tasks = new ArrayList<>();
- for (String title : titles) {
- TaskArtifact taskArt = createNewTask(title, createdDate, createdBy, relatedToState, changes);
- if (assignees != null && !assignees.isEmpty()) {
- Set<IAtsUser> users = new HashSet<>(); // NOPMD by b0727536 on 9/29/10 8:51 AM
- for (IAtsUser art : assignees) {
- users.add(art);
- }
- taskArt.getStateMgr().setAssignees(users);
- }
- tasks.add(taskArt);
- changes.add(taskArt);
- }
- return tasks;
- }
-
public int getPercentCompleteFromTasks() {
int spent = 0;
Collection<TaskArtifact> taskArts = getTaskArtifacts();
diff --git a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/task/AtsTaskService.java b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/task/AtsTaskService.java
index 0427f9d286f..8e8a83a292b 100644
--- a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/task/AtsTaskService.java
+++ b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/task/AtsTaskService.java
@@ -16,6 +16,7 @@ import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import javax.ws.rs.core.Response;
+import javax.ws.rs.core.Response.Status;
import org.eclipse.osee.ats.api.data.AtsArtifactTypes;
import org.eclipse.osee.ats.api.data.AtsRelationTypes;
import org.eclipse.osee.ats.api.task.AbstractAtsTaskService;
@@ -23,6 +24,7 @@ import org.eclipse.osee.ats.api.task.AtsTaskEndpointApi;
import org.eclipse.osee.ats.api.task.JaxAtsTask;
import org.eclipse.osee.ats.api.task.JaxAtsTasks;
import org.eclipse.osee.ats.api.task.NewTaskData;
+import org.eclipse.osee.ats.api.task.NewTaskDatas;
import org.eclipse.osee.ats.api.user.IAtsUser;
import org.eclipse.osee.ats.api.util.IAtsChangeSet;
import org.eclipse.osee.ats.api.workflow.IAtsTask;
@@ -33,6 +35,7 @@ import org.eclipse.osee.ats.core.util.AtsUtilCore;
import org.eclipse.osee.framework.core.enums.DeletionFlag;
import org.eclipse.osee.framework.core.model.event.DefaultBasicGuidArtifact;
import org.eclipse.osee.framework.core.model.event.DefaultBasicUuidRelation;
+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.search.ArtifactQuery;
import org.eclipse.osee.framework.skynet.core.event.OseeEventManager;
@@ -55,15 +58,33 @@ public class AtsTaskService extends AbstractAtsTaskService {
}
@Override
- public Collection<IAtsTask> createTasks(NewTaskData newTaskData) {
+ public Collection<IAtsTask> createTasks(NewTaskDatas newTaskDatas) {
AtsTaskEndpointApi taskEp = AtsClientService.getTaskEp();
- Response response = taskEp.create(newTaskData);
+ Response response = taskEp.create(newTaskDatas);
+ if (response.getStatus() != Status.OK.getStatusCode()) {
+ throw new OseeCoreException("Error creating task [%s] [%s]", newTaskDatas, response.toString());
+ }
+
+ List<IAtsTask> tasks = new LinkedList<>();
+ ArtifactEvent artifactEvent = new ArtifactEvent(AtsUtilCore.getAtsBranch());
+ for (NewTaskData newTaskData : newTaskDatas.getTaskDatas()) {
+ processForEvents(newTaskData, response, tasks, artifactEvent);
+ }
+
+ OseeEventManager.kickPersistEvent(getClass(), artifactEvent);
+ return tasks;
+ }
+
+ private void processForEvents(NewTaskData newTaskData, Response response, List<IAtsTask> tasks, ArtifactEvent artifactEvent2) {
Artifact teamWf = atsClient.getArtifact(newTaskData.getTeamWfUuid());
JaxAtsTasks jaxTasks = response.readEntity(JaxAtsTasks.class);
ArtifactEvent artifactEvent = new ArtifactEvent(AtsUtilCore.getAtsBranch());
List<Long> artUuids = new LinkedList<>();
+
+ teamWf.reloadAttributesAndRelations();
+
for (JaxAtsTask task : jaxTasks.getTasks()) {
String guid = ArtifactQuery.getGuidFromUuid(task.getUuid(), AtsUtilCore.getAtsBranch());
artifactEvent.getArtifacts().add(new EventBasicGuidArtifact(EventModType.Added,
@@ -71,23 +92,22 @@ public class AtsTaskService extends AbstractAtsTaskService {
artUuids.add(task.getUuid());
RelationLink relation = getRelation(teamWf, task);
- Artifact taskArt = atsClient.getArtifact(task.getUuid());
+ relation = getRelation(teamWf, task);
+ if (relation != null) {
+ Artifact taskArt = atsClient.getArtifact(task.getUuid());
- DefaultBasicUuidRelation guidRelation = new DefaultBasicUuidRelation(AtsUtilCore.getAtsBranch().getUuid(),
- AtsRelationTypes.TeamWfToTask_Task.getGuid(), relation.getId(), relation.getGammaId(),
- getBasicGuidArtifact(teamWf), getBasicGuidArtifact(taskArt));
+ DefaultBasicUuidRelation guidRelation = new DefaultBasicUuidRelation(AtsUtilCore.getAtsBranch().getUuid(),
+ AtsRelationTypes.TeamWfToTask_Task.getGuid(), relation.getId(), relation.getGammaId(),
+ getBasicGuidArtifact(teamWf), getBasicGuidArtifact(taskArt));
- artifactEvent.getRelations().add(new EventBasicGuidRelation(RelationEventType.Added,
- newTaskData.getTeamWfUuid().intValue(), new Long(task.getUuid()).intValue(), guidRelation));
+ artifactEvent.getRelations().add(new EventBasicGuidRelation(RelationEventType.Added,
+ newTaskData.getTeamWfUuid().intValue(), new Long(task.getUuid()).intValue(), guidRelation));
+ }
}
- OseeEventManager.kickPersistEvent(getClass(), artifactEvent);
-
- List<IAtsTask> tasks = new LinkedList<>();
for (Long uuid : artUuids) {
tasks.add(AtsClientService.get().getWorkItemFactory().getTask(AtsClientService.get().getArtifact(uuid)));
}
- return tasks;
}
public static DefaultBasicGuidArtifact getBasicGuidArtifact(Artifact artifact) {
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 b7ff9d50b9b..73f0ed9a06d 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
@@ -18,7 +18,10 @@ 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.IAtsWorkDefinitionAdmin;
import org.eclipse.osee.ats.api.workdef.IWorkDefinitionMatch;
+import org.eclipse.osee.ats.api.workflow.IAtsTask;
+import org.eclipse.osee.ats.api.workflow.IAtsTeamWorkflow;
import org.eclipse.osee.ats.api.workflow.transition.IAtsTransitionManager;
import org.eclipse.osee.ats.api.workflow.transition.TransitionOption;
import org.eclipse.osee.ats.api.workflow.transition.TransitionResults;
@@ -62,9 +65,8 @@ public class TaskManager {
if (estimatedHours > 0.0) {
taskArt.setSoleAttributeValue(AtsAttributeTypes.EstimatedHours, estimatedHours);
}
- TransitionHelper helper =
- new TransitionHelper("Transition to Completed", Arrays.asList(taskArt), TaskStates.Completed.getName(),
- null, null, changes, AtsClientService.get().getServices());
+ TransitionHelper helper = new TransitionHelper("Transition to Completed", Arrays.asList(taskArt),
+ TaskStates.Completed.getName(), null, null, changes, AtsClientService.get().getServices());
IAtsTransitionManager transitionMgr = TransitionFactory.getTransitionManager(helper);
TransitionResults results = transitionMgr.handleAll();
@@ -83,16 +85,16 @@ public class TaskManager {
if (taskArt.isInState(TaskStates.InWork)) {
return Result.TrueResult;
}
- TransitionHelper helper =
- new TransitionHelper("Transition to InWork", Arrays.asList(taskArt), TaskStates.InWork.getName(),
- Arrays.asList(toUser), null, changes, AtsClientService.get().getServices(),
- TransitionOption.OverrideAssigneeCheck);
+ TransitionHelper helper = new TransitionHelper("Transition to InWork", Arrays.asList(taskArt),
+ TaskStates.InWork.getName(), Arrays.asList(toUser), null, changes, AtsClientService.get().getServices(),
+ TransitionOption.OverrideAssigneeCheck);
IAtsTransitionManager transitionMgr = TransitionFactory.getTransitionManager(helper);
TransitionResults results = transitionMgr.handleAll();
if (!results.isEmpty()) {
return new Result("Transition Error %s", results.toString());
}
- if (taskArt.getStateMgr().getPercentComplete(taskArt.getCurrentStateName()) != percentComplete || additionalHours > 0) {
+ if (taskArt.getStateMgr().getPercentComplete(
+ taskArt.getCurrentStateName()) != percentComplete || additionalHours > 0) {
taskArt.getStateMgr().updateMetrics(taskArt.getStateDefinition(), additionalHours, percentComplete, true,
AtsClientService.get().getUserService().getCurrentUser());
}
@@ -103,21 +105,9 @@ public class TaskManager {
}
public static Result moveTasks(TeamWorkFlowArtifact newParent, List<TaskArtifact> taskArts) throws OseeCoreException {
- for (TaskArtifact taskArt : taskArts) {
- // task dropped on same awa as current parent; do nothing
- if (taskArt.getParentAWA().equals(newParent)) {
- return Result.FalseResult;
- }
-
- // Validate able to move tasks; WorkDefinitions must match
- boolean taskOverridesItsWorkDefinition =
- AtsClientService.get().getWorkDefinitionAdmin().isTaskOverridingItsWorkDefinition(taskArt);
- IWorkDefinitionMatch match =
- AtsClientService.get().getWorkDefinitionAdmin().getWorkDefinitionForTaskNotYetCreated(newParent);
- if (!taskOverridesItsWorkDefinition && !taskArt.getWorkDefinition().equals(match.getWorkDefinition())) {
- return new Result(
- "Desitination Task WorkDefinition does not match current Task WorkDefintion; Move Aborted");
- }
+ Result result = moveTasksIsValid(newParent, taskArts, AtsClientService.get().getWorkDefinitionAdmin());
+ if (result.isFalse()) {
+ return result;
}
// Move Tasks
@@ -139,4 +129,22 @@ public class TaskManager {
return Result.TrueResult;
}
+ protected static Result moveTasksIsValid(IAtsTeamWorkflow newParent, List<? extends IAtsTask> tasks, IAtsWorkDefinitionAdmin workDefinitionAdmin) {
+ for (IAtsTask task : tasks) {
+ // task dropped on same awa as current parent; do nothing
+ if (task.getParentTeamWorkflow().getUuid() == newParent.getUuid()) {
+ return new Result("Source and Destination workflows are the same; Move Aborted");
+ }
+
+ // Validate able to move tasks; WorkDefinitions must match
+ boolean taskOverridesItsWorkDefinition = workDefinitionAdmin.isTaskOverridingItsWorkDefinition(task);
+ IWorkDefinitionMatch match = workDefinitionAdmin.getWorkDefinitionForTaskNotYetCreated(newParent);
+ if (!taskOverridesItsWorkDefinition && !task.getWorkDefinition().equals(match.getWorkDefinition())) {
+ return new Result(
+ "Desitination Task WorkDefinition does not match current Task WorkDefintion; Move Aborted");
+ }
+ }
+ 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 bdf85845fe8..92521ae4114 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
@@ -54,14 +54,14 @@ import org.eclipse.osee.framework.skynet.core.transaction.TransactionManager;
*/
public class AtsChangeSet extends AbstractAtsChangeSet {
- public AtsChangeSet(String comment, IAtsUser user) {
- super(comment, user);
- }
-
public AtsChangeSet(String comment) {
this(comment, AtsClientService.get().getUserService().getCurrentUser());
}
+ public AtsChangeSet(String comment, IAtsUser atsUser) {
+ super(comment, atsUser);
+ }
+
@Override
public void execute() throws OseeCoreException {
Conditions.checkNotNull(comment, "comment");
diff --git a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/util/AtsUtilClient.java b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/util/AtsUtilClient.java
index e5fdc2138a8..28b833f9c18 100644
--- a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/util/AtsUtilClient.java
+++ b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/util/AtsUtilClient.java
@@ -27,14 +27,13 @@ import org.eclipse.osee.framework.core.enums.Active;
import org.eclipse.osee.framework.jdk.core.type.OseeCoreException;
import org.eclipse.osee.framework.jdk.core.util.Collections;
import org.eclipse.osee.framework.jdk.core.util.Conditions;
+import org.eclipse.osee.framework.jdk.core.util.Lib;
import org.eclipse.osee.framework.logging.OseeLog;
import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
-import org.eclipse.osee.framework.skynet.core.artifact.ArtifactFactory;
import org.eclipse.osee.framework.skynet.core.artifact.search.ArtifactQuery;
import org.eclipse.osee.framework.skynet.core.event.filter.ArtifactTypeEventFilter;
import org.eclipse.osee.framework.skynet.core.event.filter.BranchUuidEventFilter;
import org.eclipse.osee.framework.skynet.core.event.filter.IEventFilter;
-import org.eclipse.osee.framework.skynet.core.utility.ConnectionHandler;
import org.eclipse.osee.framework.skynet.core.utility.DbUtil;
/**
@@ -64,7 +63,7 @@ public class AtsUtilClient {
* @return uuid for ATS Config Object creation
*/
public static long createConfigObjectUuid() {
- return ConnectionHandler.getNextSequence(ArtifactFactory.ART_ID_SEQ, true);
+ return Lib.generateArtifactIdAsInt();
}
public static void setEmailEnabled(boolean enabled) {
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 d67a8f769f4..cba7fde3f1b 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
@@ -517,7 +517,7 @@ public abstract class AbstractWorkflowArtifact extends AbstractAtsArtifact imple
}
} else {
if (changes.isAttributeTypeValid(this, AtsAttributeTypes.CreatedBy)) {
- changes.setSoleAttributeValue((ArtifactId) this, AtsAttributeTypes.CreatedBy, user.getUserId());
+ changes.setSoleAttributeValue((IAtsWorkItem) this, AtsAttributeTypes.CreatedBy, user.getUserId());
}
if (date != null && changes.isAttributeTypeValid(this, AtsAttributeTypes.CreatedDate)) {
changes.setSoleAttributeValue(this, AtsAttributeTypes.CreatedDate, date);
@@ -544,7 +544,7 @@ public abstract class AbstractWorkflowArtifact extends AbstractAtsArtifact imple
public void internalSetCreatedBy(IAtsUser user, IAtsChangeSet changes) throws OseeCoreException {
if (changes.isAttributeTypeValid(this, AtsAttributeTypes.CreatedBy)) {
- changes.setSoleAttributeValue((ArtifactId) this, AtsAttributeTypes.CreatedBy, user.getUserId());
+ changes.setSoleAttributeValue((IAtsWorkItem) this, AtsAttributeTypes.CreatedBy, user.getUserId());
}
}
@@ -600,7 +600,7 @@ public abstract class AbstractWorkflowArtifact extends AbstractAtsArtifact imple
if (changes == null) {
setSoleAttributeValue(AtsAttributeTypes.CancelledReason, reason);
} else {
- changes.setSoleAttributeValue((ArtifactId) this, AtsAttributeTypes.CancelledReason, reason);
+ changes.setSoleAttributeValue((IAtsWorkItem) this, AtsAttributeTypes.CancelledReason, reason);
}
}
@@ -790,7 +790,7 @@ public abstract class AbstractWorkflowArtifact extends AbstractAtsArtifact imple
@Override
public void setAtsId(String atsId, IAtsChangeSet changes) throws OseeCoreException {
- changes.setSoleAttributeValue((ArtifactId) this, AtsAttributeTypes.AtsId, atsId);
+ changes.setSoleAttributeValue((IAtsWorkItem) this, AtsAttributeTypes.AtsId, atsId);
}
@Override
diff --git a/plugins/org.eclipse.osee.ats.core.test/src/org/eclipse/osee/ats/core/workdef/AtsWorkDefinitionAdminImplTest.java b/plugins/org.eclipse.osee.ats.core.test/src/org/eclipse/osee/ats/core/workdef/AtsWorkDefinitionAdminImplTest.java
index 0095b44862e..9e70e6faddf 100644
--- a/plugins/org.eclipse.osee.ats.core.test/src/org/eclipse/osee/ats/core/workdef/AtsWorkDefinitionAdminImplTest.java
+++ b/plugins/org.eclipse.osee.ats.core.test/src/org/eclipse/osee/ats/core/workdef/AtsWorkDefinitionAdminImplTest.java
@@ -19,6 +19,7 @@ import static org.mockito.Mockito.when;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
+import org.eclipse.osee.ats.api.IAtsServices;
import org.eclipse.osee.ats.api.ai.IAtsActionableItem;
import org.eclipse.osee.ats.api.data.AtsAttributeTypes;
import org.eclipse.osee.ats.api.review.IAtsPeerToPeerReview;
@@ -70,6 +71,7 @@ public class AtsWorkDefinitionAdminImplTest {
@Mock CacheProvider<AtsWorkDefinitionCache> cacheProvider;
@Mock IAttributeResolver attributeResolver;
@Mock IAtsTask task;
+ @Mock IAtsServices services;
private AtsWorkDefinitionAdminImpl workDefAmin;
diff --git a/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/workdef/AtsWorkDefinitionAdminImpl.java b/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/workdef/AtsWorkDefinitionAdminImpl.java
index dff66799174..33b5243e04e 100644
--- a/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/workdef/AtsWorkDefinitionAdminImpl.java
+++ b/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/workdef/AtsWorkDefinitionAdminImpl.java
@@ -155,11 +155,11 @@ public class AtsWorkDefinitionAdminImpl implements IAtsWorkDefinitionAdmin {
}
}
if (match.isMatched()) {
- OseeLog.logf(AtsWorkDefinitionAdminImpl.class, Level.INFO, "Loaded Work Definition [%s]", match);
+ OseeLog.logf(AtsWorkDefinitionAdminImpl.class, Level.FINE, "Loaded Work Definition [%s]", match);
getCache().cache(id, match);
toReturn = match;
} else {
- OseeLog.logf(AtsWorkDefinitionAdminImpl.class, Level.INFO, "Unable to load Work Definition [%s]", id);
+ OseeLog.logf(AtsWorkDefinitionAdminImpl.class, Level.SEVERE, "Unable to load Work Definition [%s]", id);
}
}
if (toReturn == null) {
@@ -480,4 +480,5 @@ public class AtsWorkDefinitionAdminImpl implements IAtsWorkDefinitionAdmin {
Collection<IAtsRuleDefinition> ruleDefs = ruleDefinitionCache.asMap().values();
return ruleDefs;
}
+
}
diff --git a/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/workflow/transition/TransitionManager.java b/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/workflow/transition/TransitionManager.java
index 45cc8dc902c..faa5b3ed485 100644
--- a/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/workflow/transition/TransitionManager.java
+++ b/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/workflow/transition/TransitionManager.java
@@ -355,7 +355,7 @@ public class TransitionManager implements IAtsTransitionManager {
helper.isOverrideTransitionValidityCheck() || workItem.getStateDefinition().getOverrideAttributeValidationStates().contains(
toStateDef);
if (toStateDef.getStateType().isCancelledState()) {
- validateTaskCompletion(results, workItem, toStateDef);
+ validateTaskCompletion(results, workItem, toStateDef, workItemService);
validateReviewsCancelled(results, workItem, toStateDef);
} else if (!toStateDef.getStateType().isCancelledState() && !isOverrideAttributeValidationState) {
@@ -367,7 +367,7 @@ public class TransitionManager implements IAtsTransitionManager {
}
}
- validateTaskCompletion(results, workItem, toStateDef);
+ validateTaskCompletion(results, workItem, toStateDef, workItemService);
// Don't transition without targeted version if so configured
boolean teamDefRequiresTargetedVersion =
@@ -407,7 +407,10 @@ public class TransitionManager implements IAtsTransitionManager {
}
}
- private void validateTaskCompletion(TransitionResults results, IAtsWorkItem workItem, IAtsStateDefinition toStateDef) throws OseeCoreException {
+ public static void validateTaskCompletion(TransitionResults results, IAtsWorkItem workItem, IAtsStateDefinition toStateDef, IAtsWorkItemService workItemService) throws OseeCoreException {
+ if (!workItem.isTeamWorkflow()) {
+ return;
+ }
// Loop through this state's tasks to confirm complete
boolean checkTasksCompletedForState = true;
// Don't check for task completion if transition to working state and AllowTransitionWithoutTaskCompletion rule is set
@@ -415,7 +418,7 @@ public class TransitionManager implements IAtsTransitionManager {
RuleDefinitionOption.AllowTransitionWithoutTaskCompletion.name()) && toStateDef.getStateType().isWorkingState()) {
checkTasksCompletedForState = false;
}
- if (checkTasksCompletedForState && workItem.isTeamWorkflow() && !workItem.getStateMgr().getStateType().isCompletedOrCancelled()) {
+ if (checkTasksCompletedForState && workItem.getStateMgr().getStateType().isInWork()) {
Set<IAtsTask> tasksToCheck = new HashSet<>();
// If transitioning to completed/cancelled, all tasks must be completed/cancelled
if (toStateDef.getStateType().isCompletedOrCancelledState()) {
@@ -425,8 +428,8 @@ public class TransitionManager implements IAtsTransitionManager {
else {
tasksToCheck.addAll(workItemService.getTasks(workItem, workItem.getStateDefinition()));
}
- for (IAtsTask taskArt : tasksToCheck) {
- if (taskArt.getStateMgr().getStateType().isInWork()) {
+ for (IAtsTask task : tasksToCheck) {
+ if (task.getStateMgr().getStateType().isInWork()) {
results.addResult(workItem, TransitionResult.TASKS_NOT_COMPLETED);
break;
}
diff --git a/plugins/org.eclipse.osee.ats.dsl.integration/src/org/eclipse/osee/ats/dsl/integration/internal/AtsWorkDefinitionServiceImpl.java b/plugins/org.eclipse.osee.ats.dsl.integration/src/org/eclipse/osee/ats/dsl/integration/internal/AtsWorkDefinitionServiceImpl.java
index b120dff8bbd..2a6904ecedb 100644
--- a/plugins/org.eclipse.osee.ats.dsl.integration/src/org/eclipse/osee/ats/dsl/integration/internal/AtsWorkDefinitionServiceImpl.java
+++ b/plugins/org.eclipse.osee.ats.dsl.integration/src/org/eclipse/osee/ats/dsl/integration/internal/AtsWorkDefinitionServiceImpl.java
@@ -35,6 +35,7 @@ import org.eclipse.osee.ats.dsl.atsDsl.AtsDsl;
import org.eclipse.osee.framework.core.util.XResultData;
import org.eclipse.osee.framework.jdk.core.type.OseeCoreException;
import org.eclipse.osee.framework.jdk.core.type.Pair;
+import org.eclipse.osee.framework.jdk.core.util.Conditions;
import org.eclipse.osee.framework.jdk.core.util.Lib;
import org.eclipse.osee.framework.jdk.core.util.Strings;
import org.eclipse.osee.framework.jdk.core.util.io.StringOutputStream;
@@ -113,7 +114,9 @@ public class AtsWorkDefinitionServiceImpl implements IAtsWorkDefinitionService {
@Override
public IAtsWorkDefinition getWorkDef(String workDefId, XResultData resultData) throws Exception {
+ Conditions.checkNotNullOrEmpty(workDefId, "workDefId");
String workDefStr = workDefStore.loadWorkDefinitionString(workDefId);
+ Conditions.checkNotNullOrEmpty(workDefStr, "workDefStr");
AtsDsl atsDsl = ModelUtil.loadModel(workDefId + ".ats", workDefStr);
ConvertAtsDslToWorkDefinition convert =
new ConvertAtsDslToWorkDefinition(workDefId, atsDsl, resultData, attrResolver, userService);
diff --git a/plugins/org.eclipse.osee.ats.dsl.integration/src/org/eclipse/osee/ats/dsl/integration/internal/ConvertAtsDslToWorkDefinition.java b/plugins/org.eclipse.osee.ats.dsl.integration/src/org/eclipse/osee/ats/dsl/integration/internal/ConvertAtsDslToWorkDefinition.java
index 20290432df7..532325acc66 100644
--- a/plugins/org.eclipse.osee.ats.dsl.integration/src/org/eclipse/osee/ats/dsl/integration/internal/ConvertAtsDslToWorkDefinition.java
+++ b/plugins/org.eclipse.osee.ats.dsl.integration/src/org/eclipse/osee/ats/dsl/integration/internal/ConvertAtsDslToWorkDefinition.java
@@ -213,8 +213,8 @@ public class ConvertAtsDslToWorkDefinition {
try {
blockType = ReviewBlockType.valueOf(dslBlockType);
} catch (IllegalArgumentException ex) {
- throw new IllegalArgumentException(String.format("Unknown ReviewBlockType [%s]; Defaulting to None",
- dslBlockType));
+ throw new IllegalArgumentException(
+ String.format("Unknown ReviewBlockType [%s]; Defaulting to None", dslBlockType));
}
revDef.setBlockingType(blockType);
@@ -223,8 +223,8 @@ public class ConvertAtsDslToWorkDefinition {
try {
eventType = StateEventType.valueOf(dslEventType);
} catch (IllegalArgumentException ex) {
- throw new IllegalArgumentException(String.format("Unknown StateEventType [%s]; Defaulting to None",
- dslEventType));
+ throw new IllegalArgumentException(
+ String.format("Unknown StateEventType [%s]; Defaulting to None", dslEventType));
}
revDef.setStateEventType(eventType);
revDef.setAutoTransitionToDecision(BooleanDefUtil.get(dslRevDef.getAutoTransitionToDecision(), false));
@@ -235,6 +235,7 @@ public class ConvertAtsDslToWorkDefinition {
if (followupRef == null) {
revOpt.setFollowupRequired(false);
} else {
+ revOpt.setFollowupRequired(true);
revOpt.getUserIds().addAll(UserRefUtil.getUserIds(followupRef.getAssigneeRefs()));
revOpt.getUserNames().addAll(UserRefUtil.getUserNames(followupRef.getAssigneeRefs()));
}
@@ -268,8 +269,8 @@ public class ConvertAtsDslToWorkDefinition {
String attributeName = Strings.unquote(attrWidget.getAttributeName());
try {
if (!attrResolver.isAttributeNamed(attributeName)) {
- resultData.errorf("Invalid attribute name [%s] in WorkDefinition [%s] (1)",
- attributeName, SHEET_NAME);
+ resultData.errorf("Invalid attribute name [%s] in WorkDefinition [%s] (1)", attributeName,
+ SHEET_NAME);
} else {
WidgetDefinition widgetDef = new WidgetDefinition(attrResolver.getUnqualifiedName(attributeName));
widgetDef.setAttributeName(attributeName);
@@ -278,8 +279,7 @@ public class ConvertAtsDslToWorkDefinition {
stateItems.add(widgetDef);
}
} catch (Exception ex) {
- resultData.errorf("Error resolving attribute [%s] to WorkDefinition in [%s]", attributeName,
- SHEET_NAME);
+ resultData.errorf("Error resolving attribute [%s] to WorkDefinition in [%s]", attributeName, SHEET_NAME);
}
} else if (layoutItem instanceof Composite) {
Composite composite = (Composite) layoutItem;
@@ -382,7 +382,8 @@ public class ConvertAtsDslToWorkDefinition {
widgetDef.setDescription(dslWidgetDef.getDescription());
}
// Else, set if AtsAttributeTypes defines it
- else if (Strings.isValid(attributeName) && attrResolver.isAttributeNamed(attributeName) && Strings.isValid(attrResolver.getDescription(attributeName))) {
+ else if (Strings.isValid(attributeName) && attrResolver.isAttributeNamed(attributeName) && Strings.isValid(
+ attrResolver.getDescription(attributeName))) {
widgetDef.setDescription(attrResolver.getDescription(attributeName));
}
} catch (Exception ex) {
@@ -396,18 +397,17 @@ public class ConvertAtsDslToWorkDefinition {
if (Strings.isValid(attributeName)) {
try {
if (!attrResolver.isAttributeNamed(attributeName)) {
- resultData.errorf("Invalid attribute name [%s] in WorkDefinition [%s] (2)",
- attributeName, SHEET_NAME);
+ resultData.errorf("Invalid attribute name [%s] in WorkDefinition [%s] (2)", attributeName,
+ SHEET_NAME);
} else {
attrResolver.setXWidgetNameBasedOnAttributeName(attributeName, widgetDef);
}
} catch (Exception ex) {
- resultData.errorf("Error resolving attribute name [%s] in WorkDefinition [%s]",
- attributeName, SHEET_NAME);
+ resultData.errorf("Error resolving attribute name [%s] in WorkDefinition [%s]", attributeName,
+ SHEET_NAME);
}
} else {
- resultData.errorf("Invalid attribute name [%s] in WorkDefinition [%s] (3)", attributeName,
- SHEET_NAME);
+ resultData.errorf("Invalid attribute name [%s] in WorkDefinition [%s] (3)", attributeName, SHEET_NAME);
}
}
processMinMaxConstraints(widgetDef, dslWidgetDef.getMinConstraint(), dslWidgetDef.getMaxConstraint());
diff --git a/plugins/org.eclipse.osee.ats.impl/src/org/eclipse/osee/ats/impl/internal/AtsServerImpl.java b/plugins/org.eclipse.osee.ats.impl/src/org/eclipse/osee/ats/impl/internal/AtsServerImpl.java
index d252866b433..9bab660b260 100644
--- a/plugins/org.eclipse.osee.ats.impl/src/org/eclipse/osee/ats/impl/internal/AtsServerImpl.java
+++ b/plugins/org.eclipse.osee.ats.impl/src/org/eclipse/osee/ats/impl/internal/AtsServerImpl.java
@@ -145,6 +145,7 @@ public class AtsServerImpl extends AtsCoreServiceImpl implements IAtsServer {
private IAtsTaskService taskService;
private volatile boolean emailEnabled = true;
+ private boolean loggedNotificationDisabled = false;
private final List<IAtsNotifierServer> notifiers = new CopyOnWriteArrayList<>();
private final Map<String, IAtsDatabaseConversion> externalConversions =
@@ -476,7 +477,10 @@ public class AtsServerImpl extends AtsCoreServiceImpl implements IAtsServer {
public void sendNotifications(AtsNotificationCollector notifications) {
if (isEmailEnabled()) {
if (notifiers.isEmpty() || !isProduction()) {
- logger.info("Osee Notification Disabled");
+ if (!loggedNotificationDisabled) {
+ logger.info("Osee Notification Disabled");
+ loggedNotificationDisabled = true;
+ }
} else {
workItemNotificationProcessor =
new WorkItemNotificationProcessor(logger, this, workItemFactory, userService, attributeResolverService);
@@ -599,7 +603,7 @@ public class AtsServerImpl extends AtsCoreServiceImpl implements IAtsServer {
}
@Override
- public ArtifactReadable getArtifactByName(IArtifactType artifactType, String name) {
+ public ArtifactId getArtifactByName(IArtifactType artifactType, String name) {
return orcsApi.getQueryFactory().fromBranch(AtsUtilCore.getAtsBranch()).andIsOfType(artifactType).andNameEquals(
name).getResults().getAtMostOneOrNull();
}
diff --git a/plugins/org.eclipse.osee.ats.impl/src/org/eclipse/osee/ats/impl/internal/util/AtsChangeSet.java b/plugins/org.eclipse.osee.ats.impl/src/org/eclipse/osee/ats/impl/internal/util/AtsChangeSet.java
index c2a90f62b18..1c17773483e 100644
--- a/plugins/org.eclipse.osee.ats.impl/src/org/eclipse/osee/ats/impl/internal/util/AtsChangeSet.java
+++ b/plugins/org.eclipse.osee.ats.impl/src/org/eclipse/osee/ats/impl/internal/util/AtsChangeSet.java
@@ -298,4 +298,5 @@ public class AtsChangeSet extends AbstractAtsChangeSet {
getTransaction().setSoleAttributeValue(art, attrType, value);
add(art);
}
+
}
diff --git a/plugins/org.eclipse.osee.ats.impl/src/org/eclipse/osee/ats/impl/internal/workitem/AtsTaskService.java b/plugins/org.eclipse.osee.ats.impl/src/org/eclipse/osee/ats/impl/internal/workitem/AtsTaskService.java
index a16627480ee..f25b79a24b9 100644
--- a/plugins/org.eclipse.osee.ats.impl/src/org/eclipse/osee/ats/impl/internal/workitem/AtsTaskService.java
+++ b/plugins/org.eclipse.osee.ats.impl/src/org/eclipse/osee/ats/impl/internal/workitem/AtsTaskService.java
@@ -18,6 +18,7 @@ import java.util.Map;
import org.eclipse.osee.ats.api.task.AbstractAtsTaskService;
import org.eclipse.osee.ats.api.task.JaxAtsTask;
import org.eclipse.osee.ats.api.task.NewTaskData;
+import org.eclipse.osee.ats.api.task.NewTaskDatas;
import org.eclipse.osee.ats.api.user.IAtsUser;
import org.eclipse.osee.ats.api.util.IAtsChangeSet;
import org.eclipse.osee.ats.api.workflow.IAtsTask;
@@ -50,11 +51,26 @@ public class AtsTaskService extends AbstractAtsTaskService {
public Collection<IAtsTask> createTasks(NewTaskData newTaskData, IAtsChangeSet changes) {
CreateTasksOperation operation = new CreateTasksOperation(newTaskData, atsServer, new XResultData());
XResultData results = operation.validate();
+ operation.run(changes);
+ if (results.isErrors()) {
+ throw new OseeStateException("Error creating tasks - " + results.toString());
+ }
+ List<IAtsTask> tasks = new LinkedList<>();
+ for (JaxAtsTask task : operation.getTasks()) {
+ tasks.add(atsServer.getWorkItemFactory().getTask(atsServer.getArtifactByUuid(task.getUuid())));
+ }
+ return tasks;
+ }
+
+ @Override
+ public Collection<IAtsTask> createTasks(NewTaskDatas newTaskDatas) {
+ CreateTasksOperation operation = new CreateTasksOperation(newTaskDatas, atsServer, new XResultData());
+ XResultData results = operation.validate();
if (results.isErrors()) {
throw new OseeStateException("Error validating task creation - " + results.toString());
}
- operation.run(changes);
+ operation.run();
if (results.isErrors()) {
throw new OseeStateException("Error creating tasks - " + results.toString());
}
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 7695ee5c322..804e18b94a6 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
@@ -13,8 +13,10 @@ package org.eclipse.osee.ats.impl.workitem;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
+import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
+import java.util.Map;
import org.eclipse.osee.ats.api.IAtsWorkItem;
import org.eclipse.osee.ats.api.data.AtsArtifactTypes;
import org.eclipse.osee.ats.api.data.AtsAttributeTypes;
@@ -22,11 +24,13 @@ 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.NewTaskData;
+import org.eclipse.osee.ats.api.task.NewTaskDatas;
import org.eclipse.osee.ats.api.user.IAtsUser;
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.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;
@@ -45,16 +49,22 @@ import org.eclipse.osee.orcs.data.ArtifactReadable;
public class CreateTasksOperation {
private XResultData resultData;
- private final NewTaskData newTaskData;
+ private final NewTaskDatas newTaskDatas;
private final IAtsServer atsServer;
- private ArtifactReadable teamWfArt;
private IAtsUser asUser;
private final List<JaxAtsTask> tasks = new ArrayList<>();
- private IAtsTeamWorkflow teamWf;
private Date createdByDate;
+ private Map<Long, IAtsTeamWorkflow> uuidToTeamWf;
public CreateTasksOperation(NewTaskData newTaskData, IAtsServer atsServer, XResultData resultData) {
- this.newTaskData = newTaskData;
+ newTaskDatas = new NewTaskDatas();
+ newTaskDatas.add(newTaskData);
+ this.atsServer = atsServer;
+ this.resultData = resultData;
+ }
+
+ public CreateTasksOperation(NewTaskDatas newTaskDatas, IAtsServer atsServer, XResultData resultData) {
+ this.newTaskDatas = newTaskDatas;
this.atsServer = atsServer;
this.resultData = resultData;
}
@@ -63,93 +73,96 @@ public class CreateTasksOperation {
if (resultData == null) {
resultData = new XResultData(false);
}
- Long teamWfUuid = newTaskData.getTeamWfUuid();
- if (teamWfUuid == null) {
- resultData.error("Team Workflow uuid not specified");
- }
- teamWfArt = atsServer.getArtifactByUuid(teamWfUuid);
- if (teamWfArt == null) {
- resultData.errorf("Team Workflow uuid %d does not exist", teamWfUuid);
- }
- teamWf = atsServer.getWorkItemFactory().getTeamWf(teamWfArt);
- String asUserId = newTaskData.getAsUserId();
- if (asUserId == null) {
- resultData.error("As User Id uuid not specified");
- }
- asUser = atsServer.getUserService().getUserById(asUserId);
- if (asUser == null) {
- resultData.errorf("As User Id uuid %d does not exist", asUserId);
- }
- if (!Strings.isValid(newTaskData.getCommitComment())) {
- resultData.errorf("Inavlidate Commit Comment [%s]", newTaskData.getCommitComment());
- }
-
- for (JaxAtsTask task : newTaskData.getNewTasks()) {
- Long taskUuid = task.getUuid();
- if (teamWfUuid != null && taskUuid > 0L) {
- ArtifactReadable taskArt = atsServer.getArtifactByUuid(taskUuid);
- if (taskArt != null) {
- resultData.errorf("Task with uuid %d already exists for %s", taskUuid, task);
- }
+ uuidToTeamWf = new HashMap<>();
+ for (NewTaskData newTaskData : newTaskDatas.getTaskDatas()) {
+ Long teamWfUuid = newTaskData.getTeamWfUuid();
+ if (teamWfUuid == null) {
+ resultData.error("Team Workflow uuid not specified");
}
- if (!Strings.isValid(task.getName())) {
- resultData.errorf("Task name [%s] is invalid for %s", task.getName(), task);
+ ArtifactReadable teamWfArt = atsServer.getArtifactByUuid(teamWfUuid);
+ if (teamWfArt == null) {
+ resultData.errorf("Team Workflow uuid %d does not exist", teamWfUuid);
}
- IAtsUser createdBy = atsServer.getUserService().getUserById(task.getCreatedByUserId());
- if (createdBy == null) {
- resultData.errorf("Task Created By user id %d does not exist in %s", createdBy, task);
+ IAtsTeamWorkflow teamWf = uuidToTeamWf.get(teamWfUuid);
+ if (teamWf == null) {
+ teamWf = atsServer.getWorkItemFactory().getTeamWf(teamWfArt);
+ uuidToTeamWf.put(teamWfUuid, teamWf);
}
- createdByDate = task.getCreatedDate();
- if (createdByDate == null) {
- resultData.errorf("Task Created By Date %s does not exist in %s", createdByDate, task);
+ String asUserId = newTaskData.getAsUserId();
+ if (asUserId == null) {
+ resultData.error("As User Id uuid not specified");
}
- IAtsTeamWorkflow teamWorkflow = atsServer.getWorkItemFactory().getTeamWf(teamWfArt);
- String relatedToState = task.getRelatedToState();
- if (Strings.isValid(relatedToState)) {
- if (teamWorkflow.getWorkDefinition().getStateByName(relatedToState) == null) {
- resultData.errorf("Task Related To State %s invalid for Team Workflow %d", relatedToState, teamWfUuid);
- }
- }
- List<String> assigneeUserIds = task.getAssigneeUserIds();
- if (assigneeUserIds == null || assigneeUserIds.isEmpty()) {
- resultData.errorf("Task Assignees can not be empty in %s", createdByDate, task);
+ asUser = atsServer.getUserService().getUserById(asUserId);
+ if (asUser == null) {
+ resultData.errorf("As User Id uuid %d does not exist", asUserId);
}
- if (assigneeUserIds == null) {
- resultData.errorf("Task Assignees must be specified in %s", createdByDate, task);
+ if (!Strings.isValid(newTaskData.getCommitComment())) {
+ resultData.errorf("Inavlidate Commit Comment [%s]", newTaskData.getCommitComment());
}
- Collection<IAtsUser> assignees = atsServer.getUserService().getUsersByUserIds(assigneeUserIds);
- if (assigneeUserIds.size() != assignees.size()) {
- resultData.errorf("Task Assignees [%s] not all valid in %s", String.valueOf(assigneeUserIds), task);
- }
+ for (JaxAtsTask task : newTaskData.getNewTasks()) {
+ Long taskUuid = task.getUuid();
+ if (teamWfUuid != null && taskUuid > 0L) {
+ ArtifactReadable taskArt = atsServer.getArtifactByUuid(taskUuid);
+ if (taskArt != null) {
+ resultData.errorf("Task with uuid %d already exists for %s", taskUuid, task);
+ }
+ }
+ if (!Strings.isValid(task.getName())) {
+ resultData.errorf("Task name [%s] is invalid for %s", task.getName(), task);
+ }
+ IAtsUser createdBy = atsServer.getUserService().getUserById(task.getCreatedByUserId());
+ if (createdBy == null) {
+ resultData.errorf("Task Created By user id %d does not exist in %s", createdBy, task);
+ }
+ createdByDate = task.getCreatedDate();
+ if (createdByDate == null) {
+ resultData.errorf("Task Created By Date %s does not exist in %s", createdByDate, task);
+ }
+ IAtsTeamWorkflow teamWorkflow = atsServer.getWorkItemFactory().getTeamWf(teamWfArt);
+ String relatedToState = task.getRelatedToState();
+ if (Strings.isValid(relatedToState)) {
+ if (teamWorkflow.getWorkDefinition().getStateByName(relatedToState) == null) {
+ resultData.errorf("Task Related To State %s invalid for Team Workflow %d", relatedToState,
+ teamWfUuid);
+ }
+ }
- IAtsWorkDefinition workDefinition = null;
- if (Strings.isValid(task.getTaskWorkDef())) {
- try {
- XResultData rd = new XResultData();
- workDefinition = atsServer.getWorkDefService().getWorkDef(task.getTaskWorkDef(), rd);
- if (rd.isErrors()) {
- resultData.errorf("Error finding Task Work Def [%s]. Exception: %s", task.getTaskWorkDef(),
- rd.toString());
+ List<String> assigneeUserIds = task.getAssigneeUserIds();
+ if (!assigneeUserIds.isEmpty()) {
+ Collection<IAtsUser> assignees = atsServer.getUserService().getUsersByUserIds(assigneeUserIds);
+ if (assigneeUserIds.size() != assignees.size()) {
+ resultData.errorf("Task Assignees [%s] not all valid in %s", String.valueOf(assigneeUserIds), task);
}
- } catch (Exception ex) {
- resultData.errorf("Exception finding Task Work Def [%s]. Exception: %s", task.getTaskWorkDef(),
- ex.getMessage());
}
- if (workDefinition == null) {
- resultData.errorf("Task Work Def [%s] does not exist", task.getTaskWorkDef());
+
+ IAtsWorkDefinition workDefinition = null;
+ if (Strings.isValid(task.getTaskWorkDef())) {
+ try {
+ XResultData rd = new XResultData();
+ workDefinition = atsServer.getWorkDefService().getWorkDef(task.getTaskWorkDef(), rd);
+ if (rd.isErrors()) {
+ resultData.errorf("Error finding Task Work Def [%s]. Exception: %s", task.getTaskWorkDef(),
+ rd.toString());
+ }
+ } catch (Exception ex) {
+ resultData.errorf("Exception finding Task Work Def [%s]. Exception: %s", task.getTaskWorkDef(),
+ ex.getMessage());
+ }
+ if (workDefinition == null) {
+ resultData.errorf("Task Work Def [%s] does not exist", task.getTaskWorkDef());
+ }
}
- }
- for (JaxAttribute attribute : task.getAttributes()) {
- IAttributeType attrType = getAttributeType(atsServer, attribute.getAttrTypeName());
- if (attrType == null) {
- resultData.errorf("Attribute Type [%s] not valid for Task creation in %s", attribute.getAttrTypeName(),
- task);
+ for (JaxAttribute attribute : task.getAttributes()) {
+ IAttributeType attrType = getAttributeType(atsServer, attribute.getAttrTypeName());
+ if (attrType == null) {
+ resultData.errorf("Attribute Type [%s] not valid for Task creation in %s",
+ attribute.getAttrTypeName(), task);
+ }
}
}
}
-
return resultData;
}
@@ -173,16 +186,19 @@ public class CreateTasksOperation {
throw new OseeArgumentException(results.toString());
}
- IAtsChangeSet changes = atsServer.getStoreService().createAtsChangeSet(newTaskData.getCommitComment(), asUser);
+ IAtsChangeSet changes = atsServer.getStoreService().createAtsChangeSet(
+ newTaskDatas.getTaskDatas().iterator().next().getCommitComment(), asUser);
run(changes);
changes.execute();
- for (JaxAtsTask jaxTask : newTaskData.getNewTasks()) {
- JaxAtsTask newJaxTask = createNewJaxTask(jaxTask.getUuid(), atsServer);
- if (newJaxTask == null) {
- throw new OseeStateException("Unable to create return New Task for uuid " + jaxTask.getUuid());
+ for (NewTaskData newTaskData : newTaskDatas.getTaskDatas()) {
+ for (JaxAtsTask jaxTask : newTaskData.getNewTasks()) {
+ JaxAtsTask newJaxTask = createNewJaxTask(jaxTask.getUuid(), atsServer);
+ if (newJaxTask == null) {
+ throw new OseeStateException("Unable to create return New Task for uuid " + jaxTask.getUuid());
+ }
+ this.tasks.add(newJaxTask);
}
- this.tasks.add(newJaxTask);
}
}
@@ -194,56 +210,61 @@ public class CreateTasksOperation {
}
private void createTasks(IAtsChangeSet changes) {
- for (JaxAtsTask jaxTask : newTaskData.getNewTasks()) {
+ for (NewTaskData newTaskData : newTaskDatas.getTaskDatas()) {
+ for (JaxAtsTask jaxTask : newTaskData.getNewTasks()) {
- Long uuid = jaxTask.getUuid();
- if (uuid <= 0L) {
- uuid = Lib.generateArtifactIdAsInt();
- jaxTask.setUuid(uuid);
- }
- ArtifactId taskArt = changes.createArtifact(AtsArtifactTypes.Task, jaxTask.getName(), GUID.create(), uuid);
- IAtsTask task = atsServer.getWorkItemFactory().getTask(taskArt);
-
- atsServer.getUtilService().setAtsId(atsServer.getSequenceProvider(), task, teamWf.getTeamDefinition(),
- changes);
-
- changes.relate(teamWf, AtsRelationTypes.TeamWfToTask_Task, taskArt);
+ Long uuid = jaxTask.getUuid();
+ if (uuid <= 0L) {
+ uuid = Lib.generateArtifactIdAsInt();
+ jaxTask.setUuid(uuid);
+ }
+ ArtifactId taskArt = changes.createArtifact(AtsArtifactTypes.Task, jaxTask.getName(), GUID.create(), uuid);
+ IAtsTask task = atsServer.getWorkItemFactory().getTask(taskArt);
- List<IAtsUser> assignees = new ArrayList<>();
- if (jaxTask.getAssigneeUserIds() != null) {
- assignees.addAll(atsServer.getUserService().getUsersByUserIds(jaxTask.getAssigneeUserIds()));
- }
+ IAtsTeamWorkflow teamWf = uuidToTeamWf.get(newTaskData.getTeamWfUuid());
+ atsServer.getUtilService().setAtsId(atsServer.getSequenceProvider(), task, teamWf.getTeamDefinition(),
+ changes);
+ changes.relate(teamWf, AtsRelationTypes.TeamWfToTask_Task, taskArt);
- IAtsWorkDefinition workDefinition = null;
- if (Strings.isValid(jaxTask.getTaskWorkDef())) {
- try {
- workDefinition = atsServer.getWorkDefService().getWorkDef(jaxTask.getTaskWorkDef(), new XResultData());
- } catch (Exception ex) {
- throw new OseeArgumentException("Exception finding Task Work Def [%s]", jaxTask.getTaskWorkDef(), ex);
+ List<IAtsUser> assignees = new ArrayList<>();
+ if (jaxTask.getAssigneeUserIds() != null) {
+ assignees.addAll(atsServer.getUserService().getUsersByUserIds(jaxTask.getAssigneeUserIds()));
+ }
+ if (assignees.isEmpty()) {
+ assignees.add(AtsCoreUsers.UNASSIGNED_USER);
}
- }
- if (Strings.isValid(jaxTask.getDescription())) {
- changes.setSoleAttributeValue(task, AtsAttributeTypes.Description, jaxTask.getDescription());
- }
- atsServer.getActionFactory().initializeNewStateMachine(task, assignees, createdByDate, asUser, workDefinition,
- changes);
- // Set parent state task is related to if set
- if (Strings.isValid(jaxTask.getRelatedToState())) {
- changes.setSoleAttributeValue(task, AtsAttributeTypes.RelatedToState, jaxTask.getRelatedToState());
- }
+ IAtsWorkDefinition workDefinition = null;
+ if (Strings.isValid(jaxTask.getTaskWorkDef())) {
+ try {
+ workDefinition =
+ atsServer.getWorkDefService().getWorkDef(jaxTask.getTaskWorkDef(), new XResultData());
+ } catch (Exception ex) {
+ throw new OseeArgumentException("Exception finding Task Work Def [%s]", jaxTask.getTaskWorkDef(), ex);
+ }
+ }
+ if (Strings.isValid(jaxTask.getDescription())) {
+ changes.setSoleAttributeValue(task, AtsAttributeTypes.Description, jaxTask.getDescription());
+ }
+ atsServer.getActionFactory().initializeNewStateMachine(task, assignees, createdByDate, asUser,
+ workDefinition, changes);
- for (JaxAttribute attribute : jaxTask.getAttributes()) {
- IAttributeType attrType = getAttributeType(atsServer, attribute.getAttrTypeName());
- if (attrType == null) {
- resultData.errorf("Attribute Type [%s] not valid for Task creation in %s", attribute.getAttrTypeName(),
- task);
+ // Set parent state task is related to if set
+ if (Strings.isValid(jaxTask.getRelatedToState())) {
+ changes.setSoleAttributeValue(task, AtsAttributeTypes.RelatedToState, jaxTask.getRelatedToState());
}
- changes.setValues(task, attrType, attribute.getValues());
- }
- changes.add(taskArt);
+ for (JaxAttribute attribute : jaxTask.getAttributes()) {
+ IAttributeType attrType = getAttributeType(atsServer, attribute.getAttrTypeName());
+ if (attrType == null) {
+ resultData.errorf("Attribute Type [%s] not valid for Task creation in %s",
+ attribute.getAttrTypeName(), task);
+ }
+ changes.setValues(task, attrType, attribute.getValues());
+ }
+ changes.add(taskArt);
+ }
}
}
diff --git a/plugins/org.eclipse.osee.ats.rest/src/org/eclipse/osee/ats/rest/internal/workitem/AtsTaskEndpointImpl.java b/plugins/org.eclipse.osee.ats.rest/src/org/eclipse/osee/ats/rest/internal/workitem/AtsTaskEndpointImpl.java
index 2a3d9e94599..2ce7d12f974 100644
--- a/plugins/org.eclipse.osee.ats.rest/src/org/eclipse/osee/ats/rest/internal/workitem/AtsTaskEndpointImpl.java
+++ b/plugins/org.eclipse.osee.ats.rest/src/org/eclipse/osee/ats/rest/internal/workitem/AtsTaskEndpointImpl.java
@@ -10,12 +10,17 @@
*******************************************************************************/
package org.eclipse.osee.ats.rest.internal.workitem;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.POST;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import org.eclipse.osee.ats.api.IAtsWorkItem;
import org.eclipse.osee.ats.api.task.AtsTaskEndpointApi;
import org.eclipse.osee.ats.api.task.JaxAtsTask;
import org.eclipse.osee.ats.api.task.JaxAtsTasks;
-import org.eclipse.osee.ats.api.task.NewTaskData;
+import org.eclipse.osee.ats.api.task.NewTaskDatas;
import org.eclipse.osee.ats.api.util.IAtsChangeSet;
import org.eclipse.osee.ats.api.workflow.IAtsTask;
import org.eclipse.osee.ats.core.users.AtsCoreUsers;
@@ -35,9 +40,12 @@ public class AtsTaskEndpointImpl implements AtsTaskEndpointApi {
this.atsServer = atsServer;
}
+ @POST
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
@Override
- public Response create(NewTaskData newTaskData) {
- CreateTasksOperation operation = new CreateTasksOperation(newTaskData, atsServer, new XResultData());
+ public Response create(NewTaskDatas newTaskDatas) {
+ CreateTasksOperation operation = new CreateTasksOperation(newTaskDatas, atsServer, new XResultData());
XResultData results = operation.validate();
if (results.isErrors()) {
@@ -49,6 +57,7 @@ public class AtsTaskEndpointImpl implements AtsTaskEndpointApi {
return Response.ok().entity(tasks).build();
}
+ @POST
@Override
public Response get(long taskUuid) {
IAtsWorkItem task = atsServer.getQueryService().createQuery().isOfType(IAtsTask.class).andUuids(
@@ -60,6 +69,7 @@ public class AtsTaskEndpointImpl implements AtsTaskEndpointApi {
return Response.ok().entity(jaxAtsTask).build();
}
+ @DELETE
@Override
public void delete(long taskUuid) {
IAtsWorkItem task = atsServer.getQueryService().createQuery().isOfType(IAtsTask.class).andUuids(
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/internal/AtsOseeCmService.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/internal/AtsOseeCmService.java
index 45f09d73a07..353d92493e6 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/internal/AtsOseeCmService.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/internal/AtsOseeCmService.java
@@ -21,11 +21,14 @@ import org.eclipse.osee.ats.AtsImage;
import org.eclipse.osee.ats.actions.wizard.NewActionJob;
import org.eclipse.osee.ats.api.ai.IAtsActionableItem;
import org.eclipse.osee.ats.api.data.AtsArtifactTypes;
+import org.eclipse.osee.ats.api.task.JaxAtsTaskFactory;
+import org.eclipse.osee.ats.api.task.NewTaskData;
+import org.eclipse.osee.ats.api.task.NewTaskDataFactory;
+import org.eclipse.osee.ats.api.task.NewTaskDatas;
import org.eclipse.osee.ats.api.team.ChangeType;
import org.eclipse.osee.ats.core.client.search.AtsArtifactQuery;
import org.eclipse.osee.ats.core.client.task.AbstractTaskableArtifact;
import org.eclipse.osee.ats.core.client.team.TeamWorkFlowArtifact;
-import org.eclipse.osee.ats.core.client.util.AtsChangeSet;
import org.eclipse.osee.ats.core.client.util.AtsUtilClient;
import org.eclipse.osee.ats.core.client.workflow.AbstractWorkflowArtifact;
import org.eclipse.osee.ats.core.config.ActionableItems;
@@ -128,12 +131,12 @@ public class AtsOseeCmService implements IOseeCmService {
public Artifact createWorkTask(String name, String parentPcrGuid) {
try {
Artifact artifact = AtsArtifactQuery.getArtifactFromId(parentPcrGuid);
- AtsChangeSet changes = new AtsChangeSet(getClass().getSimpleName() + " - Create Work Task");
- if (artifact instanceof AbstractTaskableArtifact) {
- return ((AbstractTaskableArtifact) artifact).createNewTask(name, new Date(),
- AtsClientService.get().getUserService().getCurrentUser(), changes);
- }
- changes.execute();
+ Date createdDate = new Date();
+ NewTaskData newTaskData = NewTaskDataFactory.get(getClass().getSimpleName() + " - Create Work Task",
+ AtsClientService.get().getUserService().getCurrentUser().getUserId(), artifact.getUuid());
+ JaxAtsTaskFactory.get(newTaskData, name, AtsClientService.get().getUserService().getCurrentUser(),
+ createdDate);
+ AtsClientService.getTaskEp().create(new NewTaskDatas(newTaskData));
} catch (OseeCoreException ex) {
OseeLog.log(Activator.class, OseeLevel.SEVERE_POPUP, ex);
}
@@ -167,9 +170,8 @@ public class AtsOseeCmService implements IOseeCmService {
boolean toReturn = false;
if (art instanceof TeamWorkFlowArtifact) {
try {
- toReturn =
- AtsClientService.get().getBranchService().isBranchesAllCommittedExcept((TeamWorkFlowArtifact) art,
- branch);
+ toReturn = AtsClientService.get().getBranchService().isBranchesAllCommittedExcept(
+ (TeamWorkFlowArtifact) art, branch);
} catch (OseeCoreException ex) {
OseeLog.log(Activator.class, Level.SEVERE, ex.toString(), ex);
toReturn = false;
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/operation/ImportTasksFromSpreadsheet.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/operation/ImportTasksFromSpreadsheet.java
index bdbb5ba731f..3070a9fc922 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/operation/ImportTasksFromSpreadsheet.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/operation/ImportTasksFromSpreadsheet.java
@@ -17,10 +17,14 @@ import java.util.List;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.osee.ats.api.data.AtsArtifactTypes;
+import org.eclipse.osee.ats.api.task.NewTaskData;
+import org.eclipse.osee.ats.api.task.NewTaskDataFactory;
+import org.eclipse.osee.ats.api.task.NewTaskDatas;
import org.eclipse.osee.ats.core.client.task.AbstractTaskableArtifact;
import org.eclipse.osee.ats.core.client.team.TeamWorkFlowArtifact;
-import org.eclipse.osee.ats.core.client.util.AtsChangeSet;
+import org.eclipse.osee.ats.core.client.util.AtsUtilClient;
import org.eclipse.osee.ats.editor.SMAEditor;
+import org.eclipse.osee.ats.internal.AtsClientService;
import org.eclipse.osee.ats.util.Import.ExcelAtsTaskArtifactExtractor;
import org.eclipse.osee.ats.util.Import.TaskImportJob;
import org.eclipse.osee.framework.jdk.core.type.OseeCoreException;
@@ -66,7 +70,8 @@ public class ImportTasksFromSpreadsheet extends AbstractBlam {
StringBuffer buffer = new StringBuffer("<xWidgets>");
buffer.append("<XWidget xwidgetType=\"XListDropViewer\" displayName=\"" + TEAM_WORKFLOW + "\" />");
buffer.append("<XWidget xwidgetType=\"XFileSelectionDialog\" displayName=\"" + TASK_IMPORT_SPREADSHEET + "\" />");
- buffer.append("<XWidget xwidgetType=\"XCheckBox\" displayName=\"" + EMAIL_POCS + "\" labelAfter=\"true\" horizontalLabel=\"true\"/>");
+ buffer.append(
+ "<XWidget xwidgetType=\"XCheckBox\" displayName=\"" + EMAIL_POCS + "\" labelAfter=\"true\" horizontalLabel=\"true\"/>");
buffer.append("</xWidgets>");
return buffer.toString();
}
@@ -119,15 +124,21 @@ public class ImportTasksFromSpreadsheet extends AbstractBlam {
}
File file = new File(filename);
try {
- AtsChangeSet changes = new AtsChangeSet("Import Tasks from Spreadsheet");
- Job job =
- Jobs.startJob(new TaskImportJob(file, new ExcelAtsTaskArtifactExtractor(
- (TeamWorkFlowArtifact) artifact, emailPocs, changes)));
+
+ AtsUtilClient.setEmailEnabled(emailPocs);
+ NewTaskData newTaskData = NewTaskDataFactory.get("Import Tasks from Spreadsheet",
+ AtsClientService.get().getUserService().getCurrentUser(), (TeamWorkFlowArtifact) artifact);
+
+ Job job = Jobs.startJob(new TaskImportJob(file,
+ new ExcelAtsTaskArtifactExtractor((TeamWorkFlowArtifact) artifact, newTaskData)));
job.join();
- changes.execute();
+
+ AtsClientService.get().getTaskService().createTasks(new NewTaskDatas(newTaskData));
} catch (Exception ex) {
log(ex);
return;
+ } finally {
+ AtsUtilClient.setEmailEnabled(true);
}
SMAEditor.editArtifact(artifact);
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/task/TaskComposite.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/task/TaskComposite.java
index 67744535453..042f69105ed 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/task/TaskComposite.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/task/TaskComposite.java
@@ -26,12 +26,16 @@ import org.eclipse.osee.ats.actions.OpenNewAtsTaskEditorAction.IOpenNewAtsTaskEd
import org.eclipse.osee.ats.actions.OpenNewAtsTaskEditorSelected.IOpenNewAtsTaskEditorSelectedHandler;
import org.eclipse.osee.ats.actions.TaskAddAction.ITaskAddActionHandler;
import org.eclipse.osee.ats.api.data.AtsArtifactTypes;
+import org.eclipse.osee.ats.api.task.JaxAtsTask;
+import org.eclipse.osee.ats.api.task.JaxAtsTaskFactory;
+import org.eclipse.osee.ats.api.task.NewTaskData;
+import org.eclipse.osee.ats.api.task.NewTaskDataFactory;
+import org.eclipse.osee.ats.api.task.NewTaskDatas;
import org.eclipse.osee.ats.column.RelatedToStateColumn;
import org.eclipse.osee.ats.core.client.task.AbstractTaskableArtifact;
import org.eclipse.osee.ats.core.client.task.TaskArtifact;
import org.eclipse.osee.ats.core.client.task.TaskManager;
import org.eclipse.osee.ats.core.client.team.TeamWorkFlowArtifact;
-import org.eclipse.osee.ats.core.client.util.AtsChangeSet;
import org.eclipse.osee.ats.core.client.util.AtsTaskCache;
import org.eclipse.osee.ats.editor.SMAEditor;
import org.eclipse.osee.ats.internal.Activator;
@@ -42,6 +46,7 @@ import org.eclipse.osee.ats.world.WorldLabelProvider;
import org.eclipse.osee.ats.world.WorldXViewer;
import org.eclipse.osee.ats.world.WorldXViewerEventManager;
import org.eclipse.osee.framework.jdk.core.type.OseeCoreException;
+import org.eclipse.osee.framework.jdk.core.util.Strings;
import org.eclipse.osee.framework.logging.OseeLevel;
import org.eclipse.osee.framework.logging.OseeLog;
import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
@@ -167,10 +172,16 @@ public class TaskComposite extends Composite implements IWorldViewerEventHandler
RelatedToStateColumn.getValidInWorkStates((TeamWorkFlowArtifact) iXTaskViewer.getAwa());
ed.setOptions(validStates);
if (ed.open() == 0) {
- AtsChangeSet changes = new AtsChangeSet("Create New Task");
- taskArt = ((AbstractTaskableArtifact) iXTaskViewer.getAwa()).createNewTask(ed.getEntry(), new Date(),
- AtsClientService.get().getUserService().getCurrentUser(), ed.getSelection(), changes);
- changes.execute();
+ NewTaskData newTaskData = NewTaskDataFactory.get("Create New Task",
+ AtsClientService.get().getUserService().getCurrentUser().getUserId(), iXTaskViewer.getAwa().getUuid());
+ JaxAtsTask task = JaxAtsTaskFactory.get(newTaskData, ed.getEntry(),
+ AtsClientService.get().getUserService().getCurrentUser(), new Date());
+ if (Strings.isValid(ed.getSelection())) {
+ task.setRelatedToState(ed.getSelection());
+ }
+ AtsClientService.get().getTaskService().createTasks(new NewTaskDatas(newTaskData));
+
+ taskArt = (TaskArtifact) AtsClientService.get().getArtifact(task.getUuid());
AtsTaskCache.decache((AbstractTaskableArtifact) iXTaskViewer.getAwa());
}
} catch (Exception ex) {
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/Import/ExcelAtsTaskArtifactExtractor.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/Import/ExcelAtsTaskArtifactExtractor.java
index d272a126977..8c6d2b21d0c 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/Import/ExcelAtsTaskArtifactExtractor.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/Import/ExcelAtsTaskArtifactExtractor.java
@@ -15,33 +15,25 @@ import java.io.FileFilter;
import java.io.InputStreamReader;
import java.net.URI;
import java.util.Date;
-import java.util.HashSet;
-import java.util.Set;
import java.util.logging.Level;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.osee.ats.api.data.AtsAttributeTypes;
-import org.eclipse.osee.ats.api.notify.AtsNotificationEventFactory;
-import org.eclipse.osee.ats.api.notify.AtsNotifyType;
+import org.eclipse.osee.ats.api.task.JaxAtsTask;
+import org.eclipse.osee.ats.api.task.JaxAtsTaskFactory;
+import org.eclipse.osee.ats.api.task.NewTaskData;
import org.eclipse.osee.ats.api.user.IAtsUser;
-import org.eclipse.osee.ats.api.util.IAtsChangeSet;
-import org.eclipse.osee.ats.core.client.task.AbstractTaskableArtifact;
-import org.eclipse.osee.ats.core.client.task.TaskArtifact;
-import org.eclipse.osee.ats.core.client.task.TaskManager;
import org.eclipse.osee.ats.core.client.team.TeamWorkFlowArtifact;
-import org.eclipse.osee.ats.core.client.util.AtsUtilClient;
import org.eclipse.osee.ats.core.client.workflow.AbstractWorkflowArtifact;
import org.eclipse.osee.ats.internal.Activator;
import org.eclipse.osee.ats.internal.AtsClientService;
import org.eclipse.osee.framework.core.exception.OseeExceptions;
-import org.eclipse.osee.framework.core.util.Result;
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.util.Strings;
import org.eclipse.osee.framework.jdk.core.util.io.xml.ExcelSaxHandler;
import org.eclipse.osee.framework.jdk.core.util.io.xml.RowProcessor;
import org.eclipse.osee.framework.logging.OseeLog;
-import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
import org.xml.sax.InputSource;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.XMLReaderFactory;
@@ -52,14 +44,11 @@ import org.xml.sax.helpers.XMLReaderFactory;
public class ExcelAtsTaskArtifactExtractor {
private final AbstractWorkflowArtifact sma;
- private final boolean emailPOCs;
- private final IAtsChangeSet changes;
-
private IProgressMonitor monitor;
+ private final NewTaskData newTaskData;
- public ExcelAtsTaskArtifactExtractor(TeamWorkFlowArtifact artifact, boolean emailPOCs, IAtsChangeSet changes) {
- this.emailPOCs = emailPOCs;
- this.changes = changes;
+ public ExcelAtsTaskArtifactExtractor(TeamWorkFlowArtifact artifact, NewTaskData newTaskData) {
+ this.newTaskData = newTaskData;
this.sma = artifact;
}
@@ -70,8 +59,7 @@ public class ExcelAtsTaskArtifactExtractor {
if (monitor == null) {
monitor = new NullProgressMonitor();
}
- xmlReader.setContentHandler(new ExcelSaxHandler(new InternalRowProcessor(monitor, changes, sma, emailPOCs),
- true));
+ xmlReader.setContentHandler(new ExcelSaxHandler(new InternalRowProcessor(monitor, newTaskData, sma), true));
xmlReader.parse(new InputSource(new InputStreamReader(source.toURL().openStream(), "UTF-8")));
} catch (Exception ex) {
OseeExceptions.wrapAndThrow(ex);
@@ -103,15 +91,13 @@ public class ExcelAtsTaskArtifactExtractor {
private int rowNum;
private final IProgressMonitor monitor;
private final AbstractWorkflowArtifact sma;
- private final IAtsChangeSet changes;
- private final boolean emailPOCs;
private final Date createdDate;
private final IAtsUser createdBy;
+ private final NewTaskData newTaskData;
- protected InternalRowProcessor(IProgressMonitor monitor, IAtsChangeSet changes, AbstractWorkflowArtifact sma, boolean emailPOCs) throws OseeCoreException {
+ protected InternalRowProcessor(IProgressMonitor monitor, NewTaskData newTaskData, AbstractWorkflowArtifact sma) throws OseeCoreException {
this.monitor = monitor;
- this.changes = changes;
- this.emailPOCs = emailPOCs;
+ this.newTaskData = newTaskData;
this.sma = sma;
createdDate = new Date();
createdBy = AtsClientService.get().getUserService().getCurrentUser();
@@ -151,60 +137,38 @@ public class ExcelAtsTaskArtifactExtractor {
public void processRow(String[] row) throws OseeCoreException {
rowNum++;
monitor.setTaskName("Processing Row " + rowNum);
- TaskArtifact taskArt =
- ((AbstractTaskableArtifact) sma).createNewTask("", createdDate, createdBy, null, changes);
+ JaxAtsTask task = JaxAtsTaskFactory.get(newTaskData, "", createdBy, createdDate);
monitor.subTask("Validating...");
boolean valid = validateRow(row);
if (!valid) {
return;
}
- AtsUtilClient.setEmailEnabled(false);
for (int i = 0; i < row.length; i++) {
if (headerRow[i] == null) {
OseeLog.log(Activator.class, Level.SEVERE, "Null header column => " + i);
- } else if (headerRow[i].equalsIgnoreCase("Originator")) {
- processOriginator(row, taskArt, i);
} else if (headerRow[i].equalsIgnoreCase("Assignees")) {
- processAssignees(row, taskArt, i);
+ processAssignees(row, task, i);
} else if (headerRow[i].equalsIgnoreCase("Resolution")) {
- processResolution(row, taskArt, i);
+ processResolution(row, task, i);
} else if (headerRow[i].equalsIgnoreCase("Description")) {
- processDescription(row, taskArt, i);
+ processDescription(row, task, i);
} else if (headerRow[i].equalsIgnoreCase("Related to State")) {
- processRelatedToState(row, taskArt, i);
+ processRelatedToState(row, task, i);
} else if (headerRow[i].equalsIgnoreCase("Notes")) {
- processNotes(row, taskArt, i);
+ processNotes(row, task, i);
} else if (headerRow[i].equalsIgnoreCase("Title")) {
- processTitle(row, taskArt, i);
+ processTitle(row, task, i);
} else if (headerRow[i].equalsIgnoreCase("Percent Complete")) {
processPercentComplete(row, i);
} else if (headerRow[i].equalsIgnoreCase("Hours Spent")) {
processHoursSpent(row, i);
} else if (headerRow[i].equalsIgnoreCase("Estimated Hours")) {
- processEstimatedHours(row, taskArt, i);
+ processEstimatedHours(row, task, i);
} else {
OseeLog.log(Activator.class, Level.SEVERE, "Unhandled column => " + headerRow[i]);
}
}
- AtsUtilClient.setEmailEnabled(true);
- if (taskArt.isCompleted()) {
- Result result = TaskManager.transitionToCompleted(taskArt, 0.0, 0, changes);
- if (result.isFalse()) {
- AWorkbench.popup(result);
- }
- }
- // always persist
- changes.add(taskArt);
- if (emailPOCs && !taskArt.isCompleted() && !taskArt.isCancelled()) {
- try {
- changes.getNotifications().addWorkItemNotificationEvent(
- AtsNotificationEventFactory.getWorkItemNotificationEvent(
- AtsClientService.get().getUserService().getCurrentUser(), sma, AtsNotifyType.Assigned));
- } catch (OseeCoreException ex) {
- OseeLog.log(Activator.class, Level.SEVERE, "Error adding ATS Notification Event", ex);
- }
- }
}
private boolean validateRow(String[] row) {
@@ -221,7 +185,7 @@ public class ExcelAtsTaskArtifactExtractor {
return fullRow;
}
- private void processTitle(String[] row, TaskArtifact taskArt, int i) throws OseeCoreException {
+ private void processTitle(String[] row, JaxAtsTask taskArt, int i) throws OseeCoreException {
String str = row[i];
if (Strings.isValid(str)) {
monitor.subTask(String.format("Title \"%s\"", str));
@@ -229,35 +193,35 @@ public class ExcelAtsTaskArtifactExtractor {
}
}
- private void processNotes(String[] row, TaskArtifact taskArt, int i) throws OseeCoreException {
+ private void processNotes(String[] row, JaxAtsTask taskArt, int i) throws OseeCoreException {
String str = row[i];
if (Strings.isValid(str)) {
- taskArt.setSoleAttributeValue(AtsAttributeTypes.SmaNote, str);
+ taskArt.addAttribute(AtsAttributeTypes.SmaNote, str);
}
}
- private void processRelatedToState(String[] row, TaskArtifact taskArt, int i) throws OseeCoreException {
+ private void processRelatedToState(String[] row, JaxAtsTask taskArt, int i) throws OseeCoreException {
String str = row[i];
if (Strings.isValid(str)) {
- taskArt.setSoleAttributeValue(AtsAttributeTypes.RelatedToState, str);
+ taskArt.addAttribute(AtsAttributeTypes.RelatedToState, str);
}
}
- private void processDescription(String[] row, TaskArtifact taskArt, int i) throws OseeCoreException {
+ private void processDescription(String[] row, JaxAtsTask taskArt, int i) throws OseeCoreException {
String str = row[i];
if (Strings.isValid(str)) {
- taskArt.setSoleAttributeValue(AtsAttributeTypes.Description, str);
+ taskArt.addAttribute(AtsAttributeTypes.Description, str);
}
}
- private void processResolution(String[] row, TaskArtifact taskArt, int i) throws OseeCoreException {
+ private void processResolution(String[] row, JaxAtsTask taskArt, int i) throws OseeCoreException {
String str = row[i];
if (Strings.isValid(str)) {
- taskArt.setSoleAttributeValue(AtsAttributeTypes.Resolution, str);
+ taskArt.addAttribute(AtsAttributeTypes.Resolution, str);
}
}
- private void processEstimatedHours(String[] row, TaskArtifact taskArt, int i) throws OseeArgumentException, OseeCoreException {
+ private void processEstimatedHours(String[] row, JaxAtsTask taskArt, int i) throws OseeArgumentException, OseeCoreException {
String str = row[i];
double hours = 0;
if (Strings.isValid(str)) {
@@ -266,7 +230,7 @@ public class ExcelAtsTaskArtifactExtractor {
} catch (Exception ex) {
throw new OseeArgumentException("Invalid Estimated Hours \"%s\" for row %d", str, rowNum);
}
- taskArt.setSoleAttributeValue(AtsAttributeTypes.EstimatedHours, hours);
+ taskArt.addAttribute(AtsAttributeTypes.EstimatedHours, String.valueOf(hours));
}
}
@@ -303,8 +267,7 @@ public class ExcelAtsTaskArtifactExtractor {
}
}
- private void processAssignees(String[] row, TaskArtifact taskArt, int i) throws OseeCoreException {
- Set<IAtsUser> assignees = new HashSet<>();
+ private void processAssignees(String[] row, JaxAtsTask taskArt, int i) throws OseeCoreException {
for (String userName : row[i].split(";")) {
userName = userName.replaceAll("^\\s+", "");
userName = userName.replaceAll("\\+$", "");
@@ -323,24 +286,9 @@ public class ExcelAtsTaskArtifactExtractor {
userName, rowNum);
user = AtsClientService.get().getUserService().getCurrentUser();
}
- assignees.add(user);
+ taskArt.getAssigneeUserIds().add(user.getUserId());
}
- taskArt.getStateMgr().setAssignees(assignees);
}
- private void processOriginator(String[] row, TaskArtifact taskArt, int i) throws OseeCoreException {
- String userName = row[i];
- IAtsUser user = null;
- if (!Strings.isValid(userName)) {
- user = AtsClientService.get().getUserService().getCurrentUser();
- } else {
- user = AtsClientService.get().getUserService().getUserByName(userName);
- }
- if (user == null) {
- OseeLog.logf(Activator.class, Level.SEVERE,
- "Invalid Originator \"%s\" for row %d\nSetting to current user.", userName, rowNum);
- }
- taskArt.internalSetCreatedBy(user, changes);
- }
}
} \ No newline at end of file
diff --git a/plugins/org.eclipse.osee.framework.jdk.core/src/org/eclipse/osee/framework/jdk/core/util/Lib.java b/plugins/org.eclipse.osee.framework.jdk.core/src/org/eclipse/osee/framework/jdk/core/util/Lib.java
index a42d6c7d4ae..e60478ba303 100644
--- a/plugins/org.eclipse.osee.framework.jdk.core/src/org/eclipse/osee/framework/jdk/core/util/Lib.java
+++ b/plugins/org.eclipse.osee.framework.jdk.core/src/org/eclipse/osee/framework/jdk/core/util/Lib.java
@@ -85,6 +85,17 @@ public final class Lib {
public final static String lineSeparator = System.getProperty("line.separator");
+ public static String getFileAtsClass(String filename, Class<?> clazz) {
+ URL url = clazz.getResource(filename);
+ File file = new File(url.getPath());
+ try {
+ return fileToString(file);
+ } catch (IOException ex) {
+ // do nothing
+ }
+ return "";
+ }
+
public static String toFirstCharUpperCase(String str) {
if (str == null) {
return null;
@@ -162,7 +173,7 @@ public final class Lib {
/**
* Move an object one before the previous object
- *
+ *
* @return true if successful
*/
public static boolean moveBack(ArrayList<Object> list, Object obj) {
@@ -179,7 +190,7 @@ public final class Lib {
/**
* Move an object one after the next object
- *
+ *
* @return true if successful
*/
public static boolean moveForward(ArrayList<Object> list, Object obj) {
@@ -297,7 +308,7 @@ public final class Lib {
/**
* Delete the current file and all empty parents. The method will stop deleting empty parents once it reaches the
* stopAt parent.
- *
+ *
* @param stopAt path of the parent file to stop deleting at
* @param file to delete
* @return status <b>true</b> if successful
@@ -567,7 +578,7 @@ public final class Lib {
/**
* Get file extension from the file path
- *
+ *
* @return file extension
*/
public static String getExtension(String filepath) {
@@ -625,7 +636,7 @@ public final class Lib {
* Sets up an error, input, and output stream for the given process. The error stream gives all information coming
* FROM the process through it's err stream. The "outThread" will be what come from the FROM the process through it's
* normal output stream. The "inThread" is the stream for issuing commands TO the process.
- *
+ *
* @param proc The process whose streams we are setting up
* @param output Where all info coming FROM the minicom is sent
* @param input Where all data going TO the minicom is sent
@@ -906,7 +917,7 @@ public final class Lib {
/**
* Remove the file extension from the file path
- *
+ *
* @return modified file path
*/
public static String removeExtension(String filepath) {
@@ -923,7 +934,7 @@ public final class Lib {
/**
* Determine if file is a compressed file
- *
+ *
* @param file to check
* @return <b>true</b> if the files is a compressed file
*/
@@ -1251,7 +1262,7 @@ public final class Lib {
/**
* Finds the index of the closing bracket for a function.
- *
+ *
* @param start -the index of the character AFTER the opening bracket for the function
* @param seq -sequence containing the local function
* @return -the index of the matching bracket to the opening bracket of this function
@@ -1320,7 +1331,7 @@ public final class Lib {
/**
* This method takes in any name separated by underscores and converts it into a java standard variable name.
- *
+ *
* @return java variable name
*/
public static final String convertToJavaVariableName(String name) {
@@ -1403,7 +1414,7 @@ public final class Lib {
/**
* Determine is OS is windows
- *
+ *
* @return <b>true</b> if OS is windows
*/
public static boolean isWindows() {
@@ -1433,9 +1444,8 @@ public final class Lib {
outputStream.flush();
} catch (Exception ex) {
- String information =
- String.format("JarFile: %s\nEntry: %s\nDestination: %s\n", jarFile.getAbsolutePath(), entry,
- destination.getAbsolutePath());
+ String information = String.format("JarFile: %s\nEntry: %s\nDestination: %s\n", jarFile.getAbsolutePath(),
+ entry, destination.getAbsolutePath());
throw new IOException(information + ex.getMessage());
} finally {
Lib.close(outputStream);
@@ -1631,7 +1641,7 @@ public final class Lib {
/**
* Determine whether the input stream is word xml content.
- *
+ *
* @return <b>true</b> is the input stream is word xml content.
*/
public static boolean isWordML(InputStream inputStream) {
@@ -1703,7 +1713,7 @@ public final class Lib {
/**
* This will go away once database takes long for artId
- *
+ *
* @return unique > 0 int
*/
public static Long generateArtifactIdAsInt() {
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/artifact/ArtifactTypeManager.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/artifact/ArtifactTypeManager.java
index 7a2f40d09bf..6a0775704e7 100644
--- a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/artifact/ArtifactTypeManager.java
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/artifact/ArtifactTypeManager.java
@@ -38,6 +38,7 @@ import org.eclipse.osee.framework.core.services.IOseeCachingService;
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.Conditions;
import org.eclipse.osee.framework.skynet.core.artifact.factory.ArtifactFactoryManager;
import org.eclipse.osee.framework.skynet.core.artifact.search.ArtifactQuery;
import org.eclipse.osee.framework.skynet.core.internal.OseeTypesExportOperation;
@@ -164,10 +165,13 @@ public class ArtifactTypeManager {
}
public static Artifact addArtifact(IArtifactType artifactType, IOseeBranch branch, String name, String guid, long uuid) {
+ Conditions.checkExpressionFailOnTrue(uuid <= 0L, "Invalid Uuid %d. Must be > 0", uuid);
return getFactory(artifactType).makeNewArtifact(branch, artifactType, name, guid, uuid);
}
public static Artifact addArtifact(IArtifactToken artifactToken, IOseeBranch branch) throws OseeCoreException {
+ Conditions.checkExpressionFailOnTrue(artifactToken.getUuid() <= 0L, "Invalid Uuid %d. Must be > 0",
+ artifactToken.getUuid());
return getFactory(artifactToken.getArtifactType()).makeNewArtifact(branch, artifactToken.getArtifactType(),
artifactToken.getName(), artifactToken.getGuid(), artifactToken.getUuid());
}
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/artifact/search/ArtifactQuery.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/artifact/search/ArtifactQuery.java
index fb311ed7647..72141171fb6 100644
--- a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/artifact/search/ArtifactQuery.java
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/artifact/search/ArtifactQuery.java
@@ -574,12 +574,8 @@ public class ArtifactQuery {
}
public static Collection<? extends Artifact> reloadArtifacts(Collection<? extends Artifact> artifacts) throws OseeCoreException {
- return reloadArtifacts(artifacts, true);
- }
-
- public static Collection<? extends Artifact> reloadArtifacts(Collection<? extends Artifact> artifacts, boolean sendRemoteEvent) throws OseeCoreException {
- Collection<Artifact> reloadedArts = new ArrayList<>(artifacts.size());
- HashCollection<IOseeBranch, Artifact> branchMap = new HashCollection<>();
+ Collection<Artifact> reloadedArts = new ArrayList<Artifact>(artifacts.size());
+ HashCollection<IOseeBranch, Artifact> branchMap = new HashCollection<IOseeBranch, Artifact>();
if (artifacts.isEmpty()) {
return artifacts;
}
@@ -597,9 +593,7 @@ public class ArtifactQuery {
ArtifactQueryBuilder query = new ArtifactQueryBuilder(artIds, entrySet.getKey(), INCLUDE_DELETED, ALL);
reloadedArts.addAll(query.reloadArtifacts(artIds.size()));
- if (sendRemoteEvent) {
- OseeEventManager.kickLocalArtifactReloadEvent(query, reloadedArts);
- }
+ OseeEventManager.kickLocalArtifactReloadEvent(query, reloadedArts);
artIds.clear();
}
return reloadedArts;
diff --git a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/massEditor/MassArtifactEditor.java b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/massEditor/MassArtifactEditor.java
index e029b3cf5d5..e755be208c4 100644
--- a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/massEditor/MassArtifactEditor.java
+++ b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/massEditor/MassArtifactEditor.java
@@ -159,7 +159,7 @@ public class MassArtifactEditor extends AbstractArtifactEditor {
item.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
- ArtifactQuery.reloadArtifacts(xViewer.getArtifacts(), false);
+ ArtifactQuery.reloadArtifacts(xViewer.getArtifacts());
xViewer.refresh();
}
});
diff --git a/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/internal/transaction/TransactionBuilderImpl.java b/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/internal/transaction/TransactionBuilderImpl.java
index 4682571c779..6c395d126a6 100644
--- a/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/internal/transaction/TransactionBuilderImpl.java
+++ b/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/internal/transaction/TransactionBuilderImpl.java
@@ -94,11 +94,13 @@ public class TransactionBuilderImpl implements TransactionBuilder {
@Override
public ArtifactId createArtifact(IArtifactType artifactType, String name, String guid, long uuid) throws OseeCoreException {
+ Conditions.checkExpressionFailOnTrue(uuid <= 0L, "Invalid Uuid %d. Must be > 0", uuid);
return txManager.createArtifact(txData, artifactType, name, guid, uuid);
}
@Override
public ArtifactId createArtifact(IArtifactToken token) throws OseeCoreException {
+ Conditions.checkExpressionFailOnTrue(token.getUuid() <= 0L, "Invalid Uuid %d. Must be > 0", token.getUuid());
return txManager.createArtifact(txData, token.getArtifactType(), token.getName(), token.getGuid(),
token.getUuid());
}
diff --git a/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/util/IdentityManagerImpl.java b/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/util/IdentityManagerImpl.java
index 2e8ba218307..8b4fe4bad59 100644
--- a/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/util/IdentityManagerImpl.java
+++ b/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/util/IdentityManagerImpl.java
@@ -14,6 +14,7 @@ import org.eclipse.osee.framework.core.exception.OseeDataStoreException;
import org.eclipse.osee.framework.jdk.core.type.OseeCoreException;
import org.eclipse.osee.framework.jdk.core.util.GUID;
import org.eclipse.osee.framework.jdk.core.util.HexUtil;
+import org.eclipse.osee.framework.jdk.core.util.Lib;
import org.eclipse.osee.jdbc.JdbcClient;
import org.eclipse.osee.orcs.db.internal.IdentityManager;
@@ -37,7 +38,7 @@ public class IdentityManagerImpl implements IdentityManager {
@Override
public int getNextArtifactId() {
- return (int) client.getNextSequence(ART_ID_SEQ, true);
+ return Lib.generateArtifactIdAsInt().intValue();
}
@Override

Back to the top