diff options
author | donald.g.dunne | 2016-08-18 03:54:18 +0000 |
---|---|---|
committer | Donald Dunne | 2016-09-15 16:59:26 +0000 |
commit | c800c9d8ac661cbf545fec359a867e9ba3c7f0bc (patch) | |
tree | de7a42f722dfcc401cea3fa7860ac1a435908bb5 /plugins/org.eclipse.osee.ats | |
parent | d5a2dd61569f06e2bc4813e300048f25e9843512 (diff) | |
download | org.eclipse.osee-c800c9d8ac661cbf545fec359a867e9ba3c7f0bc.tar.gz org.eclipse.osee-c800c9d8ac661cbf545fec359a867e9ba3c7f0bc.tar.xz org.eclipse.osee-c800c9d8ac661cbf545fec359a867e9ba3c7f0bc.zip |
feature[ats_ATS310912]: Add ConvertVersionToAgileSprint
Change-Id: I0c2a09a1d8f2c70518e9228bad0782d8bcc5566a
Diffstat (limited to 'plugins/org.eclipse.osee.ats')
3 files changed, 221 insertions, 0 deletions
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/AtsNavigateViewItems.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/AtsNavigateViewItems.java index 3b62be19fc1..4cd3b3318b5 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/AtsNavigateViewItems.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/AtsNavigateViewItems.java @@ -313,6 +313,9 @@ public final class AtsNavigateViewItems implements XNavigateViewItems, IXNavigat new CreateNewAgileFeatureGroup(agileItems); new CreateNewAgileSprint(agileItems); new CreateNewAgileBacklog(agileItems); + XNavigateItem conversionItems = new XNavigateItem(agileItems, "Conversions", FrameworkImage.VERSION); + new ConvertVersionToAgileSprint(conversionItems); + items.add(agileItems); } catch (OseeCoreException ex) { OseeLog.log(Activator.class, Level.SEVERE, "Can't create Agile section"); diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/ConvertVersionToAgileSprint.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/ConvertVersionToAgileSprint.java new file mode 100644 index 00000000000..0003944f14a --- /dev/null +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/ConvertVersionToAgileSprint.java @@ -0,0 +1,135 @@ +/******************************************************************************* + * Copyright (c) 2016 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.navigate; + +import java.util.Collection; +import java.util.LinkedList; +import java.util.List; +import javax.ws.rs.core.Response; +import org.eclipse.osee.ats.AtsImage; +import org.eclipse.osee.ats.api.agile.AgileEndpointApi; +import org.eclipse.osee.ats.api.agile.IAgileSprint; +import org.eclipse.osee.ats.api.agile.IAgileTeam; +import org.eclipse.osee.ats.api.agile.JaxAgileSprint; +import org.eclipse.osee.ats.api.agile.JaxNewAgileSprint; +import org.eclipse.osee.ats.api.data.AtsArtifactTypes; +import org.eclipse.osee.ats.api.data.AtsRelationTypes; +import org.eclipse.osee.ats.api.team.IAtsTeamDefinition; +import org.eclipse.osee.ats.api.util.IAtsChangeSet; +import org.eclipse.osee.ats.api.version.IAtsVersion; +import org.eclipse.osee.ats.core.client.IAtsClient; +import org.eclipse.osee.ats.core.client.artifact.SprintArtifact; +import org.eclipse.osee.ats.internal.Activator; +import org.eclipse.osee.ats.internal.AtsClientService; +import org.eclipse.osee.ats.util.AtsUtil; +import org.eclipse.osee.ats.util.widgets.dialog.AtsConfigCheckTreeDialog; +import org.eclipse.osee.framework.core.data.ArtifactId; +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; +import org.eclipse.osee.framework.ui.plugin.util.AWorkbench; +import org.eclipse.osee.framework.ui.plugin.xnavigate.XNavigateComposite.TableLoadOption; +import org.eclipse.osee.framework.ui.plugin.xnavigate.XNavigateItem; +import org.eclipse.osee.framework.ui.plugin.xnavigate.XNavigateItemAction; +import org.eclipse.osee.framework.ui.skynet.widgets.dialog.EntryDialog; + +/** + * @author Donald G. Dunne + */ +public class ConvertVersionToAgileSprint extends XNavigateItemAction { + + public ConvertVersionToAgileSprint(XNavigateItem parent) { + super(parent, "Convert Version(s) to Agile Sprint", AtsImage.AGILE_SPRINT); + } + + @Override + public void run(TableLoadOption... tableLoadOptions) throws OseeCoreException { + + List<IAgileTeam> activeAgileTeams = new LinkedList<>(); + IAtsClient client = AtsClientService.get(); + activeAgileTeams.addAll( + client.getQueryService().createQuery(AtsArtifactTypes.AgileTeam).andActive(true).getItems()); + + AtsConfigCheckTreeDialog<IAgileTeam> teamDialog = + new AtsConfigCheckTreeDialog<IAgileTeam>(getName(), "Select Agile Team", activeAgileTeams, true); + IAgileTeam agileTeam = null; + if (teamDialog.open() != 0) { + return; + } + agileTeam = teamDialog.getChecked().iterator().next(); + + Collection<IAtsTeamDefinition> teamDefs = client.getTeamDefinitionService().getTeamDefinitions(agileTeam); + if (teamDefs.isEmpty()) { + AWorkbench.popup("No Team Definitions configured for Agile Team " + agileTeam); + return; + } + IAtsTeamDefinition teamDefHoldingVersions = + client.getTeamDefinitionService().getTeamDefHoldingVersions(teamDefs.iterator().next()); + Collection<IAtsVersion> versions = client.getVersionService().getVersions(teamDefHoldingVersions); + + AtsConfigCheckTreeDialog<IAtsVersion> versionDialog = + new AtsConfigCheckTreeDialog<IAtsVersion>(getName(), "Select Version(s)", versions, true); + Collection<IAtsVersion> selectedVersions = null; + if (versionDialog.open() != 0) { + return; + } + selectedVersions = versionDialog.getChecked(); + + String newTitle = null; + boolean useVersionTitle = true; + if (selectedVersions.size() == 1) { + EntryDialog ed = new EntryDialog(getName(), "Enter new Agile Sprint name(s) (comma delimited)"); + ed.setEntry(selectedVersions.iterator().next().getName()); + if (ed.open() == 0) { + if (Strings.isValid(ed.getEntry())) { + newTitle = ed.getEntry(); + useVersionTitle = false; + } + } + } + try { + AgileEndpointApi ageilEp = AtsClientService.getAgileEndpoint(); + JaxNewAgileSprint newSprint = new JaxNewAgileSprint(); + long teamUuid = agileTeam.getUuid(); + + List<IAgileSprint> sprints = new LinkedList<>(); + for (IAtsVersion version : selectedVersions) { + newSprint.setName(useVersionTitle ? version.getName() : newTitle); + newSprint.setTeamUuid(teamUuid); + Response response = ageilEp.createSprint(new Long(teamUuid), newSprint); + JaxAgileSprint jaxSprint = response.readEntity(JaxAgileSprint.class); + if (jaxSprint != null) { + long uuid = jaxSprint.getUuid(); + IAgileSprint sprint = (SprintArtifact) client.getArtifact(uuid); + ((Artifact) sprint.getStoreObject()).getParent().reloadAttributesAndRelations(); + + IAtsChangeSet changes = + client.getStoreService().createAtsChangeSet(getName(), client.getUserService().getCurrentUser()); + Collection<ArtifactId> teamWfs = client.getRelationResolver().getRelated(version, + AtsRelationTypes.TeamWorkflowTargetedForVersion_Workflow); + for (ArtifactId teamWf : teamWfs) { + changes.relate(sprint, AtsRelationTypes.AgileSprintToItem_AtsItem, teamWf); + } + changes.executeIfNeeded(); + + } else { + AWorkbench.popup("Error creating Agile Team [%s]", response.toString()); + return; + } + } + AtsUtil.openInAtsWorldEditor(sprints, getName()); + } catch (Exception ex) { + OseeLog.log(Activator.class, OseeLevel.SEVERE_POPUP, ex); + } + } +} diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/dialog/AtsConfigCheckTreeDialog.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/dialog/AtsConfigCheckTreeDialog.java new file mode 100644 index 00000000000..3bb1bc9a3fb --- /dev/null +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/dialog/AtsConfigCheckTreeDialog.java @@ -0,0 +1,83 @@ +/******************************************************************************* + * Copyright (c) 2016 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.util.widgets.dialog; + +import java.util.Collection; +import java.util.List; +import org.eclipse.osee.ats.config.editor.AtsConfigContentProvider; +import org.eclipse.osee.ats.internal.Activator; +import org.eclipse.osee.ats.util.AtsObjectLabelProvider; +import org.eclipse.osee.framework.core.util.Result; +import org.eclipse.osee.framework.logging.OseeLevel; +import org.eclipse.osee.framework.logging.OseeLog; +import org.eclipse.osee.framework.ui.skynet.ToStringViewerSorter; +import org.eclipse.osee.framework.ui.skynet.widgets.dialog.FilteredCheckboxTreeDialog; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; + +/** + * @author Donald G. Dunne + */ +public class AtsConfigCheckTreeDialog<T> extends FilteredCheckboxTreeDialog { + + private List<T> initialConfigObjects; + private final boolean requiredSelection; + private final Collection<T> selectableConfigObjects; + + public AtsConfigCheckTreeDialog(String title, String message, Collection<T> selectableTeamDefs, boolean requiredSelection) { + super(title, message, new AtsConfigContentProvider(), new AtsObjectLabelProvider(), new ToStringViewerSorter()); + this.selectableConfigObjects = selectableTeamDefs; + this.requiredSelection = requiredSelection; + } + + @SuppressWarnings("unchecked") + @Override + public Collection<T> getChecked() { + return super.getTreeViewer().getChecked(); + } + + @Override + protected Control createDialogArea(Composite container) { + Control comp = super.createDialogArea(container); + try { + getTreeViewer().getViewer().setInput(selectableConfigObjects); + if (getInitialConfigObjects() != null) { + getTreeViewer().setInitalChecked(getInitialConfigObjects()); + } + } catch (Exception ex) { + OseeLog.log(Activator.class, OseeLevel.SEVERE_POPUP, ex); + } + return comp; + } + + @Override + protected Result isComplete() { + Result result = Result.TrueResult; + try { + if (requiredSelection && getChecked().isEmpty()) { + result = new Result("Must select Item(s)"); + } + } catch (Exception ex) { + OseeLog.log(Activator.class, OseeLevel.SEVERE_POPUP, ex); + } + return result; + } + + public List<T> getInitialConfigObjects() { + return initialConfigObjects; + } + + public void setInitialConfigObjects(List<T> initialConfigObjects) { + this.initialConfigObjects = initialConfigObjects; + } + +} |