diff options
author | donald.g.dunne | 2015-04-24 21:36:33 +0000 |
---|---|---|
committer | jmisinco | 2015-04-24 21:36:33 +0000 |
commit | 369dd1eff1f9396ed758f43807a9d7c20ee02787 (patch) | |
tree | 78abebf3ffb4d3f1b0aabfa2d5b98a8cc7e22038 /plugins/org.eclipse.osee.ats.client.demo | |
parent | a71f54a7920e5a118d90e3d668e2523fc7a1b29e (diff) | |
download | org.eclipse.osee-369dd1eff1f9396ed758f43807a9d7c20ee02787.tar.gz org.eclipse.osee-369dd1eff1f9396ed758f43807a9d7c20ee02787.tar.xz org.eclipse.osee-369dd1eff1f9396ed758f43807a9d7c20ee02787.zip |
feature[ats_ATS186403]: Create Demo Agile sample data
Change-Id: I0ae7cfecf3ae78953a01ec90f37a347964e63d93
Diffstat (limited to 'plugins/org.eclipse.osee.ats.client.demo')
3 files changed, 240 insertions, 16 deletions
diff --git a/plugins/org.eclipse.osee.ats.client.demo/META-INF/MANIFEST.MF b/plugins/org.eclipse.osee.ats.client.demo/META-INF/MANIFEST.MF index 61a2c185a0e..2863321b6ad 100644 --- a/plugins/org.eclipse.osee.ats.client.demo/META-INF/MANIFEST.MF +++ b/plugins/org.eclipse.osee.ats.client.demo/META-INF/MANIFEST.MF @@ -7,25 +7,13 @@ Eclipse-ExtensibleAPI: true Bundle-Vendor: Eclipse Open System Engineering Environment Require-Bundle: org.eclipse.ui, org.eclipse.core.runtime, - org.eclipse.ui.forms + org.eclipse.ui.forms, + org.eclipse.osee.ats.api Bundle-ActivationPolicy: lazy -Import-Package: org.eclipse.core.filesystem, +Import-Package: javax.ws.rs.core;version="2.0.0", + org.eclipse.core.filesystem, org.eclipse.osee.ats, org.eclipse.osee.ats.actions.wizard, - org.eclipse.osee.ats.api, - org.eclipse.osee.ats.api.ai, - org.eclipse.osee.ats.api.commit, - org.eclipse.osee.ats.api.data, - org.eclipse.osee.ats.api.review, - org.eclipse.osee.ats.api.rule, - org.eclipse.osee.ats.api.team, - org.eclipse.osee.ats.api.user, - org.eclipse.osee.ats.api.util, - org.eclipse.osee.ats.api.version, - org.eclipse.osee.ats.api.workdef, - org.eclipse.osee.ats.api.workflow, - org.eclipse.osee.ats.api.workflow.state, - org.eclipse.osee.ats.api.workflow.transition, org.eclipse.osee.ats.artifact, org.eclipse.osee.ats.config, org.eclipse.osee.ats.core, @@ -49,6 +37,7 @@ Import-Package: org.eclipse.core.filesystem, org.eclipse.osee.ats.core.workdef, org.eclipse.osee.ats.core.workflow, org.eclipse.osee.ats.core.workflow.state, + org.eclipse.osee.ats.core.workflow.transition, org.eclipse.osee.ats.health, org.eclipse.osee.ats.navigate, org.eclipse.osee.ats.util, @@ -85,6 +74,7 @@ Import-Package: org.eclipse.core.filesystem, org.eclipse.osee.framework.ui.skynet.util, org.eclipse.osee.framework.ui.skynet.widgets.util, org.eclipse.osee.framework.ui.swt, + org.eclipse.osee.jaxrs.client, org.eclipse.osee.jdbc, org.eclipse.osee.support.test.util Export-Package: diff --git a/plugins/org.eclipse.osee.ats.client.demo/src/org/eclipse/osee/ats/client/demo/PopulateDemoAgile.java b/plugins/org.eclipse.osee.ats.client.demo/src/org/eclipse/osee/ats/client/demo/PopulateDemoAgile.java new file mode 100644 index 00000000000..e8c47eab926 --- /dev/null +++ b/plugins/org.eclipse.osee.ats.client.demo/src/org/eclipse/osee/ats/client/demo/PopulateDemoAgile.java @@ -0,0 +1,211 @@ +/******************************************************************************* + * 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.demo; + +import java.util.Arrays; +import java.util.Collection; +import java.util.logging.Level; +import javax.ws.rs.core.Response; +import org.eclipse.core.runtime.Assert; +import org.eclipse.osee.ats.api.IAtsWorkItem; +import org.eclipse.osee.ats.api.agile.AgileEndpointApi; +import org.eclipse.osee.ats.api.agile.JaxAgileItem; +import org.eclipse.osee.ats.api.agile.JaxNewAgileBacklog; +import org.eclipse.osee.ats.api.agile.JaxNewAgileFeatureGroup; +import org.eclipse.osee.ats.api.agile.JaxNewAgileSprint; +import org.eclipse.osee.ats.api.agile.JaxNewAgileTeam; +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.internal.Activator; +import org.eclipse.osee.ats.client.demo.internal.AtsClientService; +import org.eclipse.osee.ats.core.client.config.AtsBulkLoad; +import org.eclipse.osee.ats.core.client.util.AtsChangeSet; +import org.eclipse.osee.ats.core.client.util.AtsUtilClient; +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.util.AtsUtil; +import org.eclipse.osee.framework.jdk.core.type.OseeStateException; +import org.eclipse.osee.framework.jdk.core.util.GUID; +import org.eclipse.osee.framework.jdk.core.util.Lib; +import org.eclipse.osee.framework.logging.OseeLog; +import org.eclipse.osee.framework.logging.SevereLoggingMonitor; +import org.eclipse.osee.framework.skynet.core.artifact.Artifact; +import org.eclipse.osee.framework.skynet.core.artifact.ArtifactCache; +import org.eclipse.osee.framework.skynet.core.utility.Artifacts; +import org.eclipse.osee.support.test.util.TestUtil; + +/** + * Run from the ATS Navigator after the DB is configured for "OSEE Demo Database", this class will populate the database + * with sample actions written against XYZ configured teams + * + * @author Donald G. Dunne + */ +public class PopulateDemoAgile { + + private static void validateArtifactCache() throws OseeStateException { + final Collection<Artifact> list = ArtifactCache.getDirtyArtifacts(); + if (!list.isEmpty()) { + for (Artifact artifact : list) { + System.err.println(String.format("Artifact [%s] is dirty [%s]", artifact.toStringWithId(), + Artifacts.getDirtyReport(artifact))); + } + throw new OseeStateException("[%d] Dirty Artifacts found after populate (see console for details)", + list.size()); + } + + } + + public void run() throws Exception { + AtsUtilClient.setEmailEnabled(false); + if (AtsUtil.isProductionDb()) { + throw new IllegalStateException("PopulateDemoAgile should not be run on production DB"); + } + + validateArtifactCache(); + + OseeLog.log(Activator.class, Level.INFO, "Populate Demo Agile"); + + AtsBulkLoad.reloadConfig(true); + + SevereLoggingMonitor monitorLog = TestUtil.severeLoggingStart(); + + createSampleAgileTeam(); + + validateArtifactCache(); + TestUtil.severeLoggingEnd(monitorLog); + OseeLog.log(Activator.class, Level.INFO, "Populate Complete"); + + } + + private void createSampleAgileTeam() { + AgileEndpointApi agile = AtsClientService.getAgile(); + + long teamUuid = Lib.generateArtifactIdAsInt(); + String teamGuid = GUID.create(); + + // Create Team + JaxNewAgileTeam newTeam = newJaxAgileTeam(teamUuid, teamGuid); + Response response = agile.createTeam(newTeam); + Assert.isTrue(Response.Status.CREATED.getStatusCode() == response.getStatus()); + + // Create Backlog + JaxNewAgileBacklog backlog = newBacklog(teamUuid); + response = agile.createBacklog(teamUuid, backlog); + Assert.isTrue(Response.Status.CREATED.getStatusCode() == response.getStatus()); + + // Add items to backlog + Collection<IAtsWorkItem> items = + AtsClientService.get().getQueryService().createQuery().isOfType(DemoArtifactTypes.DemoCodeTeamWorkflow, + DemoArtifactTypes.DemoReqTeamWorkflow, DemoArtifactTypes.DemoTestTeamWorkflow).getItems(); + Assert.isTrue(items.size() > 0); + + JaxAgileItem item = new JaxAgileItem(); + item.setBacklogUuid(backlog.getUuid()); + item.setSetBacklog(true); + for (IAtsWorkItem workItem : items) { + item.getUuids().add(workItem.getUuid()); + } + response = agile.updateItems(item); + Assert.isTrue(Response.Status.CREATED.getStatusCode() == response.getStatus()); + + // Create Sprints + long firstSprintUuid = 0L; + long secondSprintUuid = 0L; + for (int x = 1; x < 3; x++) { + JaxNewAgileSprint newSprint = newSprint(teamUuid, x); + if (x == 1) { + firstSprintUuid = newSprint.getUuid(); + } else { + secondSprintUuid = newSprint.getUuid(); + } + response = agile.createSprint(teamUuid, newSprint); + Assert.isTrue(Response.Status.CREATED.getStatusCode() == response.getStatus()); + } + + // Add items to Sprint + JaxAgileItem completedItems = new JaxAgileItem(); + completedItems.setSprintUuid(firstSprintUuid); + completedItems.setSetSprint(true); + + JaxAgileItem inworkItems = new JaxAgileItem(); + inworkItems.setSprintUuid(secondSprintUuid); + inworkItems.setSetSprint(true); + + for (IAtsWorkItem workItem : items) { + if (workItem.getStateMgr().getStateType().isCompleted()) { + completedItems.getUuids().add(workItem.getUuid()); + } else { + inworkItems.getUuids().add(workItem.getUuid()); + } + } + response = agile.updateItems(inworkItems); + Assert.isTrue(Response.Status.CREATED.getStatusCode() == response.getStatus()); + response = agile.updateItems(completedItems); + Assert.isTrue(Response.Status.CREATED.getStatusCode() == response.getStatus()); + + // Transition First Sprint to completed + IAtsWorkItem sprint = + AtsClientService.get().getQueryService().createQuery().andUuids(firstSprintUuid).getItems().iterator().next(); + AtsChangeSet changes = new AtsChangeSet("Transition Agile Sprint"); + TransitionHelper helper = + new TransitionHelper("Transition Agile Stprint", Arrays.asList(sprint), TeamState.Completed.getName(), null, + null, changes, AtsClientService.get().getServices(), TransitionOption.OverrideAssigneeCheck); + IAtsTransitionManager transitionMgr = TransitionFactory.getTransitionManager(helper); + TransitionResults results = transitionMgr.handleAll(); + if (results.isEmpty()) { + changes.execute(); + } else { + throw new OseeStateException("Can't transition sprint to completed"); + } + + // Create Feature Groups + for (String name : Arrays.asList("Communications", "UI", "Documentation", "Framework")) { + JaxNewAgileFeatureGroup group = newFeatureGroup(teamUuid, name); + response = agile.createFeatureGroup(teamUuid, group); + Assert.isTrue(Response.Status.CREATED.getStatusCode() == response.getStatus()); + } + + } + + private JaxNewAgileBacklog newBacklog(long teamUuid) { + JaxNewAgileBacklog backlog = new JaxNewAgileBacklog(); + backlog.setName("My Backlog"); + backlog.setTeamUuid(teamUuid); + backlog.setUuid(Lib.generateArtifactIdAsInt()); + return backlog; + } + + private JaxNewAgileFeatureGroup newFeatureGroup(long teamUuid, String name) { + JaxNewAgileFeatureGroup group = new JaxNewAgileFeatureGroup(); + group.setName(name); + group.setTeamUuid(teamUuid); + group.setUuid(Lib.generateArtifactIdAsInt()); + return group; + } + + private JaxNewAgileSprint newSprint(long teamUuid, int x) { + JaxNewAgileSprint newSprint = new JaxNewAgileSprint(); + newSprint.setName("Sprint 0" + x); + newSprint.setUuid(Lib.generateArtifactIdAsInt()); + newSprint.setTeamUuid(teamUuid); + return newSprint; + } + + private JaxNewAgileTeam newJaxAgileTeam(long teamUuid, String teamGuid) { + JaxNewAgileTeam newTeam = new JaxNewAgileTeam(); + newTeam.setName("SAW Agile Team"); + newTeam.setUuid(teamUuid); + return newTeam; + } + +} diff --git a/plugins/org.eclipse.osee.ats.client.demo/src/org/eclipse/osee/ats/client/demo/internal/AtsClientService.java b/plugins/org.eclipse.osee.ats.client.demo/src/org/eclipse/osee/ats/client/demo/internal/AtsClientService.java index 904c56f3449..257a665cc2b 100644 --- a/plugins/org.eclipse.osee.ats.client.demo/src/org/eclipse/osee/ats/client/demo/internal/AtsClientService.java +++ b/plugins/org.eclipse.osee.ats.client.demo/src/org/eclipse/osee/ats/client/demo/internal/AtsClientService.java @@ -10,7 +10,11 @@ *******************************************************************************/ package org.eclipse.osee.ats.client.demo.internal; +import org.eclipse.osee.ats.api.agile.AgileEndpointApi; import org.eclipse.osee.ats.core.client.IAtsClient; +import org.eclipse.osee.framework.core.client.OseeClientProperties; +import org.eclipse.osee.jaxrs.client.JaxRsClient; +import org.eclipse.osee.jaxrs.client.JaxRsWebTarget; /** * @author Donald G. Dunne @@ -18,6 +22,8 @@ import org.eclipse.osee.ats.core.client.IAtsClient; public class AtsClientService { private static IAtsClient atsClient; + private static AgileEndpointApi agile; + private static JaxRsWebTarget target; public void setAtsClient(IAtsClient atsClient) { AtsClientService.atsClient = atsClient; @@ -27,4 +33,21 @@ public class AtsClientService { return atsClient; } + private static JaxRsWebTarget getTarget() { + if (target == null) { + String appServer = OseeClientProperties.getOseeApplicationServer(); + String atsUri = String.format("%s/ats", appServer); + JaxRsClient jaxRsClient = JaxRsClient.newBuilder().build(); + target = jaxRsClient.target(atsUri); + } + return target; + } + + public static AgileEndpointApi getAgile() { + if (agile == null) { + agile = getTarget().newProxy(AgileEndpointApi.class); + } + return agile; + } + } |