diff options
author | donald.g.dunne | 2015-09-16 19:54:43 +0000 |
---|---|---|
committer | Ryan D. Brooks | 2015-09-16 19:54:43 +0000 |
commit | f12239abe2b4267948195947a6b59ab0bd1917a4 (patch) | |
tree | d243c024cd5da2f68e4d0d3bfc84d46c483c4580 /plugins | |
parent | 76241f8d2fedfee92f8bc7d2e24dfe6780d76e71 (diff) | |
download | org.eclipse.osee-f12239abe2b4267948195947a6b59ab0bd1917a4.tar.gz org.eclipse.osee-f12239abe2b4267948195947a6b59ab0bd1917a4.tar.xz org.eclipse.osee-f12239abe2b4267948195947a6b59ab0bd1917a4.zip |
feature[ats_ATS217737]: Add store work definition to server
Change-Id: Ifcb7bb4129269b0254bbf3578b38af1e3c03b01e
Diffstat (limited to 'plugins')
14 files changed, 300 insertions, 70 deletions
diff --git a/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/IAtsServices.java b/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/IAtsServices.java index 30fe616db84..a1893118722 100644 --- a/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/IAtsServices.java +++ b/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/IAtsServices.java @@ -92,4 +92,6 @@ public interface IAtsServices { IAtsTaskService getTaskService(); + ArtifactId getArtifactByName(IArtifactType artifactType, String name); + } diff --git a/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/config/AtsConfigEndpointApi.java b/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/config/AtsConfigEndpointApi.java index 84b62a653b6..81cff27ef66 100644 --- a/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/config/AtsConfigEndpointApi.java +++ b/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/config/AtsConfigEndpointApi.java @@ -13,6 +13,7 @@ package org.eclipse.osee.ats.api.config; import javax.ws.rs.Consumes; import javax.ws.rs.GET; import javax.ws.rs.POST; +import javax.ws.rs.PUT; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.Context; @@ -20,6 +21,7 @@ import javax.ws.rs.core.MediaType; import javax.ws.rs.core.MultivaluedMap; import javax.ws.rs.core.Response; import javax.ws.rs.core.UriInfo; +import org.eclipse.osee.ats.api.workdef.JaxAtsWorkDef; import org.eclipse.osee.framework.jdk.core.type.ViewModel; /** @@ -60,4 +62,9 @@ public interface AtsConfigEndpointApi { @POST public Response createUpdateConfig(); + @PUT + @Path("workDef") + @Consumes(MediaType.APPLICATION_JSON) + public Response storeWorkDef(JaxAtsWorkDef jaxWorkDef); + } diff --git a/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/workdef/JaxAtsWorkDef.java b/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/workdef/JaxAtsWorkDef.java new file mode 100644 index 00000000000..824886ec0e5 --- /dev/null +++ b/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/workdef/JaxAtsWorkDef.java @@ -0,0 +1,37 @@ +/******************************************************************************* + * 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.workdef; + +/** + * @author Donald G. Dunne + */ +public class JaxAtsWorkDef { + + private String name; + private String workDefDsl; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getWorkDefDsl() { + return workDefDsl; + } + + public void setWorkDefDsl(String workDefDsl) { + this.workDefDsl = workDefDsl; + } + +} 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 e56b0fad88e..61d0ee6e669 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 @@ -120,6 +120,7 @@ Import-Package: com.google.common.collect, org.eclipse.osee.framework.ui.skynet.widgets.util, org.eclipse.osee.framework.ui.skynet.widgets.xnavigate, org.eclipse.osee.framework.ui.swt, + org.eclipse.osee.framework.ui.ws, org.eclipse.osee.jaxrs, org.eclipse.osee.jaxrs.client, org.eclipse.osee.orcs.rest.model, diff --git a/plugins/org.eclipse.osee.ats.client.integration.tests/OSEE-INF/support/WorkDef_Team_AtsTestUtil.ats b/plugins/org.eclipse.osee.ats.client.integration.tests/OSEE-INF/support/WorkDef_Team_AtsTestUtil.ats new file mode 100644 index 00000000000..167ac05144f --- /dev/null +++ b/plugins/org.eclipse.osee.ats.client.integration.tests/OSEE-INF/support/WorkDef_Team_AtsTestUtil.ats @@ -0,0 +1,74 @@ +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 + 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/build.properties b/plugins/org.eclipse.osee.ats.client.integration.tests/build.properties index c58ea2178c3..f6362c7e7c6 100644 --- a/plugins/org.eclipse.osee.ats.client.integration.tests/build.properties +++ b/plugins/org.eclipse.osee.ats.client.integration.tests/build.properties @@ -2,4 +2,5 @@ source.. = src/ output.. = bin/ bin.includes = META-INF/,\ .,\ - OSGI-INF/ + OSGI-INF/,\ + OSEE-INF/ diff --git a/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/AtsClientService.java b/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/AtsClientService.java index e362e560b5a..f638128eddb 100644 --- a/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/AtsClientService.java +++ b/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/AtsClientService.java @@ -11,6 +11,7 @@ package org.eclipse.osee.ats.client.integration.tests; import org.eclipse.osee.ats.api.agile.AgileEndpointApi; +import org.eclipse.osee.ats.api.config.AtsConfigEndpointApi; import org.eclipse.osee.ats.api.country.CountryEndpointApi; import org.eclipse.osee.ats.api.insertion.InsertionActivityEndpointApi; import org.eclipse.osee.ats.api.insertion.InsertionEndpointApi; @@ -40,6 +41,7 @@ public class AtsClientService { private static AtsTaskEndpointApi taskEp; private static AtsRuleEndpointApi ruleEp; private static AtsNotifyEndpointApi notifyEp; + private static AtsConfigEndpointApi configEp; public void setAtsClient(IAtsClient atsClient) { AtsClientService.atsClient = atsClient; @@ -125,4 +127,11 @@ public class AtsClientService { return notifyEp; } + public static AtsConfigEndpointApi getConfigEndpoint() { + if (configEp == null) { + configEp = getTarget().newProxy(AtsConfigEndpointApi.class); + } + return configEp; + } + } 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 12451e5e6d9..ff86c6a4246 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 @@ -85,7 +85,7 @@ import org.eclipse.osee.support.test.util.TestUtil; /** * Test utility that will create a new work definition, team definition, versions and allow tests to easily * create/cleanup team workflows, tasks and reviews. - * + * * @author Donald G. Dunne */ public class AtsTestUtil { @@ -100,7 +100,7 @@ public class AtsTestUtil { private static ActionArtifact actionArt = null, actionArt2 = null, actionArt3 = null, actionArt4 = null; private static MockStateDefinition analyze, implement, completed, cancelled = null; private static MockWorkDefinition workDef = null; - public static String WORK_DEF_NAME = "Test_Team _Workflow_Definition"; + public static String WORK_DEF_NAME = "WorkDef_Team_AtsTestUtil"; private static MockWidgetDefinition estHoursWidgetDef, workPackageWidgetDef; private static String postFixName; @@ -308,41 +308,36 @@ public class AtsTestUtil { AtsClientService.get().getWorkDefinitionAdmin().addWorkDefinition(workDef); String guid = GUID.create(); - testAi = - AtsClientService.get().createActionableItem(guid, getTitle("AI", postFixName), - AtsUtilClient.createConfigObjectUuid()); + 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 = 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 = 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 = 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), - AtsUtilClient.createConfigObjectUuid()); + teamDef = AtsClientService.get().createTeamDefinition(guid, getTitle("Team Def", postFixName), + AtsUtilClient.createConfigObjectUuid()); teamDef.setWorkflowDefinition(WORK_DEF_NAME); teamDef.setActive(true); teamDef.getLeads().add(AtsClientService.get().getUserService().getCurrentUser()); @@ -354,37 +349,32 @@ public class AtsTestUtil { testAi4.setTeamDefinition(teamDef); guid = GUID.create(); - verArt1 = - AtsClientService.get().getVersionService().createVersion(guid, getTitle("ver 1.0", postFixName), - AtsUtilClient.createConfigObjectUuid()); + verArt1 = AtsClientService.get().getVersionService().createVersion(guid, getTitle("ver 1.0", postFixName), + AtsUtilClient.createConfigObjectUuid()); teamDef.getVersions().add(verArt1); AtsUtilCore.putUuidToGuid(guid, verArt1); guid = GUID.create(); - verArt2 = - AtsClientService.get().getVersionService().createVersion(guid, getTitle("ver 2.0", postFixName), - AtsUtilClient.createConfigObjectUuid()); + verArt2 = AtsClientService.get().getVersionService().createVersion(guid, getTitle("ver 2.0", postFixName), + AtsUtilClient.createConfigObjectUuid()); teamDef.getVersions().add(verArt2); AtsUtilCore.putUuidToGuid(guid, verArt2); guid = GUID.create(); - verArt3 = - AtsClientService.get().getVersionService().createVersion(guid, getTitle("ver 3.0", postFixName), - AtsUtilClient.createConfigObjectUuid()); + verArt3 = AtsClientService.get().getVersionService().createVersion(guid, getTitle("ver 3.0", postFixName), + AtsUtilClient.createConfigObjectUuid()); teamDef.getVersions().add(verArt3); AtsUtilCore.putUuidToGuid(guid, verArt3); guid = GUID.create(); - verArt4 = - AtsClientService.get().getVersionService().createVersion(guid, getTitle("ver 4.0", postFixName), - AtsUtilClient.createConfigObjectUuid()); + verArt4 = AtsClientService.get().getVersionService().createVersion(guid, getTitle("ver 4.0", postFixName), + AtsUtilClient.createConfigObjectUuid()); teamDef.getVersions().add(verArt4); AtsUtilCore.putUuidToGuid(guid, verArt4); - 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); + 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(); @@ -396,9 +386,8 @@ public class AtsTestUtil { 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 = teamArt.createNewTask(getTitle("Task", postFixName), new Date(), + AtsClientService.get().getUserService().getCurrentUser(), changes); taskArtWf1.setSoleAttributeValue(AtsAttributeTypes.RelatedToState, teamArt.getCurrentStateName()); AtsUtilCore.putUuidToGuid(taskArtWf1.getGuid(), taskArtWf1); } @@ -408,9 +397,8 @@ public class AtsTestUtil { public static TaskArtifact getOrCreateTaskOffTeamWf2(AtsChangeSet changes) throws OseeCoreException { ensureLoaded(); if (taskArtWf2 == null) { - taskArtWf2 = - teamArt.createNewTask(getTitle("Task", postFixName), new Date(), - AtsClientService.get().getUserService().getCurrentUser(), changes); + taskArtWf2 = teamArt.createNewTask(getTitle("Task", postFixName), new Date(), + AtsClientService.get().getUserService().getCurrentUser(), changes); taskArtWf2.setSoleAttributeValue(AtsAttributeTypes.RelatedToState, teamArt.getCurrentStateName()); AtsUtilCore.putUuidToGuid(taskArtWf2.getGuid(), taskArtWf2); } @@ -424,11 +412,10 @@ 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, - AtsTestUtil.class.getSimpleName() + " Test Decision Review", relatedToState.getName(), - "Decision Review", options, Arrays.asList(AtsClientService.get().getUserService().getCurrentUser()), - new Date(), AtsClientService.get().getUserService().getCurrentUser(), changes); + decRevArt = DecisionReviewManager.createNewDecisionReview(teamArt, 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; @@ -523,9 +510,8 @@ public class AtsTestUtil { deleteTeamWf(teamArt3); deleteTeamWf(teamArt4); - SkynetTransaction transaction = - TransactionManager.createTransaction(AtsUtilCore.getAtsBranch(), - AtsTestUtil.class.getSimpleName() + " - cleanup config"); + SkynetTransaction transaction = TransactionManager.createTransaction(AtsUtilCore.getAtsBranch(), + AtsTestUtil.class.getSimpleName() + " - cleanup config"); for (IAtsConfigObject config : Arrays.asList(teamDef, testAi, testAi2, testAi3, testAi4)) { if (config != null && config.getStoreObject() instanceof Artifact) { Artifact art = (Artifact) config.getStoreObject(); @@ -644,10 +630,9 @@ public class AtsTestUtil { ensureLoaded(); try { if (peerRevArt == null) { - peerRevArt = - PeerToPeerReviewManager.createNewPeerToPeerReview( - AtsClientService.get().getWorkDefinitionAdmin().getDefaultPeerToPeerWorkflowDefinitionMatch().getWorkDefinition(), - teamArt, AtsTestUtil.class.getSimpleName() + " Test Peer Review", relatedToState.getName(), changes); + peerRevArt = PeerToPeerReviewManager.createNewPeerToPeerReview( + AtsClientService.get().getWorkDefinitionAdmin().getDefaultPeerToPeerWorkflowDefinitionMatch().getWorkDefinition(), + teamArt, AtsTestUtil.class.getSimpleName() + " Test Peer Review", relatedToState.getName(), changes); peerRevArt.setSoleAttributeValue(AtsAttributeTypes.ReviewBlocks, reviewBlockType.name()); } } catch (OseeCoreException ex) { @@ -660,10 +645,9 @@ public class AtsTestUtil { ensureLoaded(); if (teamArt2 == null) { AtsChangeSet changes = new AtsChangeSet(AtsTestUtil.class.getSimpleName()); - actionArt2 = - ActionManager.createAction(null, getTitle("Team WF2", postFixName), "description", ChangeType.Improvement, - "1", false, null, Arrays.asList(testAi2), new Date(), - AtsClientService.get().getUserService().getCurrentUser(), null, changes); + actionArt2 = ActionManager.createAction(null, getTitle("Team WF2", postFixName), "description", + ChangeType.Improvement, "1", false, null, Arrays.asList(testAi2), new Date(), + AtsClientService.get().getUserService().getCurrentUser(), null, changes); teamArt2 = actionArt2.getFirstTeam(); changes.execute(); AtsUtilCore.putUuidToGuid(actionArt2.getGuid(), actionArt2); @@ -681,10 +665,9 @@ public class AtsTestUtil { ensureLoaded(); if (teamArt3 == null) { AtsChangeSet changes = new AtsChangeSet(AtsTestUtil.class.getSimpleName()); - actionArt3 = - ActionManager.createAction(null, getTitle("Team WF3", postFixName), "description", ChangeType.Improvement, - "1", false, null, Arrays.asList(testAi3), new Date(), - AtsClientService.get().getUserService().getCurrentUser(), null, changes); + actionArt3 = ActionManager.createAction(null, getTitle("Team WF3", postFixName), "description", + ChangeType.Improvement, "1", false, null, Arrays.asList(testAi3), new Date(), + AtsClientService.get().getUserService().getCurrentUser(), null, changes); teamArt3 = actionArt3.getFirstTeam(); changes.execute(); AtsUtilCore.putUuidToGuid(actionArt3.getGuid(), actionArt3); @@ -702,10 +685,9 @@ public class AtsTestUtil { ensureLoaded(); if (teamArt4 == null) { AtsChangeSet changes = new AtsChangeSet(AtsTestUtil.class.getSimpleName()); - actionArt4 = - ActionManager.createAction(null, getTitle("Team WF4", postFixName), "description", ChangeType.Improvement, - "1", false, null, Arrays.asList(testAi4), new Date(), - AtsClientService.get().getUserService().getCurrentUser(), null, changes); + actionArt4 = ActionManager.createAction(null, getTitle("Team WF4", postFixName), "description", + ChangeType.Improvement, "1", false, null, Arrays.asList(testAi4), new Date(), + AtsClientService.get().getUserService().getCurrentUser(), null, changes); teamArt4 = actionArt4.getFirstTeam(); AtsClientService.get().getVersionService().setTargetedVersion(teamArt4, verArt4); diff --git a/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/workflow/AtsTest_Workflow_Suite.java b/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/workflow/AtsTest_Workflow_Suite.java index d4355bc282a..ca00fc0865c 100644 --- a/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/workflow/AtsTest_Workflow_Suite.java +++ b/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/workflow/AtsTest_Workflow_Suite.java @@ -22,6 +22,7 @@ import org.junit.runners.Suite; */ @RunWith(Suite.class) @Suite.SuiteClasses({ + StoreWorkDefinitionTest.class, AtsTaskEndpointImplTest.class, SMAPromptChangeStatusTest.class, TeamWorkflowProvidersTest.class, diff --git a/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/workflow/StoreWorkDefinitionTest.java b/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/workflow/StoreWorkDefinitionTest.java new file mode 100644 index 00000000000..26d20f2d1fa --- /dev/null +++ b/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/workflow/StoreWorkDefinitionTest.java @@ -0,0 +1,60 @@ +/******************************************************************************* + * 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.client.integration.tests.ats.workflow; + +import org.eclipse.osee.ats.api.config.AtsConfigEndpointApi; +import org.eclipse.osee.ats.api.data.AtsArtifactTypes; +import org.eclipse.osee.ats.api.workdef.IAtsWorkDefinition; +import org.eclipse.osee.ats.api.workdef.JaxAtsWorkDef; +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.framework.core.util.XResultData; +import org.eclipse.osee.framework.skynet.core.artifact.Artifact; +import org.eclipse.osee.framework.ui.ws.AWorkspace; +import org.junit.After; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +/** + * Test unit for {@link AtsConfigEndpointApi.storeWorkDef} + * + * @author Mark Joy + */ + +public class StoreWorkDefinitionTest { + + @Before + @After + public void cleanup() throws Exception { + Artifact workDefArt = (Artifact) AtsClientService.get().getArtifactByName(AtsArtifactTypes.WorkDefinition, + AtsTestUtil.WORK_DEF_NAME); + if (workDefArt != null) { + workDefArt.deleteAndPersist(); + } + } + + @Test + public void test() throws Exception { + JaxAtsWorkDef jaxWorkDef = new JaxAtsWorkDef(); + jaxWorkDef.setName(AtsTestUtil.WORK_DEF_NAME); + String atsDsl = + AWorkspace.getOseeInfResource("support/" + AtsTestUtil.WORK_DEF_NAME + ".ats", StoreWorkDefinitionTest.class); + jaxWorkDef.setWorkDefDsl(atsDsl); + AtsClientService.getConfigEndpoint().storeWorkDef(jaxWorkDef); + + XResultData resultData = new XResultData(); + IAtsWorkDefinition workDef = + AtsClientService.get().getWorkDefService().getWorkDef(AtsTestUtil.WORK_DEF_NAME, resultData); + Assert.assertNotNull(workDef); + } + +} 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 aa9fb7dd86c..21cfd88f349 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 @@ -815,4 +815,9 @@ public class AtsClientImpl extends AtsCoreServiceImpl implements IAtsClient { return taskService; } + @Override + public Artifact getArtifactByName(IArtifactType artType, String name) { + return ArtifactQuery.getArtifactFromTypeAndNameNoException(artType, name, AtsUtilCore.getAtsBranch()); + } + } 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 dae7825b8ba..d252866b433 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 @@ -598,4 +598,10 @@ public class AtsServerImpl extends AtsCoreServiceImpl implements IAtsServer { return taskService; } + @Override + public ArtifactReadable 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.rest/src/org/eclipse/osee/ats/rest/internal/config/AtsConfigEndpointImpl.java b/plugins/org.eclipse.osee.ats.rest/src/org/eclipse/osee/ats/rest/internal/config/AtsConfigEndpointImpl.java index afe7fef7570..91175654c6f 100644 --- a/plugins/org.eclipse.osee.ats.rest/src/org/eclipse/osee/ats/rest/internal/config/AtsConfigEndpointImpl.java +++ b/plugins/org.eclipse.osee.ats.rest/src/org/eclipse/osee/ats/rest/internal/config/AtsConfigEndpointImpl.java @@ -13,6 +13,7 @@ package org.eclipse.osee.ats.rest.internal.config; import java.util.concurrent.Callable; import javax.ws.rs.GET; import javax.ws.rs.POST; +import javax.ws.rs.PUT; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.Context; @@ -29,6 +30,9 @@ import org.eclipse.osee.ats.api.data.AtsArtifactToken; import org.eclipse.osee.ats.api.data.AtsArtifactTypes; import org.eclipse.osee.ats.api.data.AtsAttributeTypes; import org.eclipse.osee.ats.api.user.IAtsUser; +import org.eclipse.osee.ats.api.workdef.JaxAtsWorkDef; +import org.eclipse.osee.ats.core.users.AtsCoreUsers; +import org.eclipse.osee.ats.core.util.AtsUtilCore; import org.eclipse.osee.ats.impl.IAtsServer; import org.eclipse.osee.framework.core.data.ArtifactId; import org.eclipse.osee.framework.core.data.IArtifactToken; @@ -221,4 +225,38 @@ public final class AtsConfigEndpointImpl implements AtsConfigEndpointApi { return Response.ok(resultData.toString()).build(); } + @PUT + @Path("workDef") + @Override + public Response storeWorkDef(JaxAtsWorkDef jaxWorkDef) { + TransactionBuilder tx = orcsApi.getTransactionFactory().createTransaction(CoreBranches.COMMON, + atsServer.getArtifactByUuid(AtsCoreUsers.SYSTEM_USER.getUuid()), + "Store Work Definition " + jaxWorkDef.getName()); + ArtifactReadable workDefArt = orcsApi.getQueryFactory().fromBranch(AtsUtilCore.getAtsBranch()).andIsOfType( + AtsArtifactTypes.WorkDefinition).andNameEquals(jaxWorkDef.getName()).getResults().getAtMostOneOrNull(); + boolean changed = false; + if (workDefArt == null) { + workDefArt = (ArtifactReadable) tx.createArtifact(AtsArtifactTypes.WorkDefinition, jaxWorkDef.getName()); + changed = true; + } + + String currentDsl = workDefArt.getSoleAttributeAsString(AtsAttributeTypes.DslSheet, null); + String newDsl = jaxWorkDef.getWorkDefDsl(); + if (!newDsl.equals(currentDsl)) { + tx.setSoleAttributeValue(workDefArt, AtsAttributeTypes.DslSheet, jaxWorkDef.getWorkDefDsl()); + changed = true; + } + + if (workDefArt.getParent() == null) { + ArtifactReadable workDefFolder = atsServer.getArtifact(AtsArtifactToken.WorkDefinitionsFolder); + tx.addChildren(workDefFolder, workDefArt); + changed = true; + } + if (changed) { + tx.commit(); + } + atsServer.getWorkDefAdmin().clearCaches(); + return Response.ok().build(); + } + } diff --git a/plugins/org.eclipse.osee.framework.ui.ws/src/org/eclipse/osee/framework/ui/ws/AWorkspace.java b/plugins/org.eclipse.osee.framework.ui.ws/src/org/eclipse/osee/framework/ui/ws/AWorkspace.java index d0d3ba5837c..6ffef8be26e 100644 --- a/plugins/org.eclipse.osee.framework.ui.ws/src/org/eclipse/osee/framework/ui/ws/AWorkspace.java +++ b/plugins/org.eclipse.osee.framework.ui.ws/src/org/eclipse/osee/framework/ui/ws/AWorkspace.java @@ -11,9 +11,9 @@ package org.eclipse.osee.framework.ui.ws; import java.io.File; +import java.net.URL; import java.util.ArrayList; import java.util.List; - import org.eclipse.core.resources.IContainer; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IProject; @@ -26,6 +26,7 @@ import org.eclipse.core.runtime.Path; import org.eclipse.jdt.ui.IPackagesViewPart; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.osee.framework.jdk.core.util.Lib; import org.eclipse.osee.framework.ui.plugin.util.AWorkbench; import org.eclipse.ui.IViewPart; import org.eclipse.ui.IViewReference; @@ -34,10 +35,11 @@ import org.eclipse.ui.IWorkbenchPart; import org.eclipse.ui.PartInitException; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.ide.IDE; -import org.eclipse.ui.part.ISetSelectionTarget; +import org.eclipse.ui.navigator.CommonNavigator; import org.eclipse.ui.views.navigator.IResourceNavigator; import org.eclipse.ui.views.navigator.ResourceNavigator; -import org.eclipse.ui.navigator.CommonNavigator; +import org.osgi.framework.Bundle; +import org.osgi.framework.FrameworkUtil; /** * @author Donald G. Dunne @@ -142,9 +144,8 @@ public final class AWorkspace { if (file == null) { return false; } - IViewPart p = - PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView( - "org.eclipse.jdt.ui.PackageExplorer"); + IViewPart p = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView( + "org.eclipse.jdt.ui.PackageExplorer"); if (p != null && p instanceof IPackagesViewPart) { StructuredSelection ss = new StructuredSelection(file); IPackagesViewPart rn = (IPackagesViewPart) p; @@ -197,6 +198,12 @@ public final class AWorkspace { return !resources.isEmpty() ? resources.iterator().next() : null; } + public static String getOseeInfResource(String path, Class<?> clazz) throws Exception { + Bundle bundle = FrameworkUtil.getBundle(clazz); + URL url = bundle.getEntry("OSEE-INF/" + path); + return Lib.inputStreamToString(url.openStream()); + } + public static void recursiveFileFind(String fileName, IResource resource, List<IResource> matches) { if (resource.getName().equalsIgnoreCase(fileName)) { matches.add(resource); |