feature[TW16544]: Create Version Parallel Config Viewer Change-Id: Iad90eeb857307b3b388be9a1a34de4b8a2ee82a4
diff --git a/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/team/IAtsTeamDefinitionService.java b/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/team/IAtsTeamDefinitionService.java index 8a040d1..deecf0f 100644 --- a/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/team/IAtsTeamDefinitionService.java +++ b/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/team/IAtsTeamDefinitionService.java
@@ -130,4 +130,6 @@ Collection<IAtsTeamDefinition> getTeamDefs(Collection<TeamDefinition> jTeamDefs); + Collection<IAtsTeamDefinition> getTeamDefHoldingVersions(); + }
diff --git a/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/config/TeamDefinitionServiceImpl.java b/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/config/TeamDefinitionServiceImpl.java index d95d169..7330386 100644 --- a/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/config/TeamDefinitionServiceImpl.java +++ b/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/config/TeamDefinitionServiceImpl.java
@@ -518,13 +518,24 @@ } @Override - public Collection<IAtsTeamDefinition> getTeamDefs(Collection<TeamDefinition> jTeamDefs) { + public Collection<IAtsTeamDefinition> getTeamDefs(Collection<TeamDefinition> teamDefs) { + List<IAtsTeamDefinition> teamDefs2 = new LinkedList<>(); + for (TeamDefinition teamDef : teamDefs) { + teamDefs2.add(atsApi.getQueryService().getConfigItem(teamDef.getId())); + } + return teamDefs2; + + } + + @Override + public Collection<IAtsTeamDefinition> getTeamDefHoldingVersions() { List<IAtsTeamDefinition> teamDefs = new LinkedList<>(); - for (TeamDefinition jTeamDef : jTeamDefs) { - teamDefs.add(atsApi.getQueryService().getConfigItem(jTeamDef.getId())); + for (TeamDefinition teamDef : atsApi.getConfigService().getConfigurations().getIdToTeamDef().values()) { + if (!teamDef.getVersions().isEmpty()) { + teamDefs.add(teamDef); + } } return teamDefs; - } }
diff --git a/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/config/version/CreateNewVersionItem.java b/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/config/version/CreateNewVersionItem.java index 99984a6..3674e10 100644 --- a/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/config/version/CreateNewVersionItem.java +++ b/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/config/version/CreateNewVersionItem.java
@@ -54,7 +54,8 @@ * @param teamDefHoldingVersions Team Definition Artifact that is related to versions or null for popup selection */ public CreateNewVersionItem(XNavigateItem parent, IAtsTeamDefinition teamDefHoldingVersions) { - super(parent, "Create New " + (teamDefHoldingVersions != null ? teamDefHoldingVersions + " " : "") + "Version(s)", + super(parent, + "Create New " + (teamDefHoldingVersions != null ? teamDefHoldingVersions + " " : "") + "Version(s) (Admin)", FrameworkImage.VERSION); this.teamDefHoldingVersions = teamDefHoldingVersions; }
diff --git a/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/config/version/ParallelConfigurationView.java b/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/config/version/ParallelConfigurationView.java new file mode 100644 index 0000000..460f92b --- /dev/null +++ b/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/config/version/ParallelConfigurationView.java
@@ -0,0 +1,149 @@ +/******************************************************************************* + * Copyright (c) 2020 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.ide.config.version; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.LinkedList; +import java.util.List; +import org.eclipse.jface.window.Window; +import org.eclipse.nebula.widgets.xviewer.core.model.SortDataType; +import org.eclipse.nebula.widgets.xviewer.core.model.XViewerAlign; +import org.eclipse.nebula.widgets.xviewer.core.model.XViewerColumn; +import org.eclipse.osee.ats.api.team.IAtsTeamDefinition; +import org.eclipse.osee.ats.api.version.IAtsVersion; +import org.eclipse.osee.ats.ide.internal.AtsClientService; +import org.eclipse.osee.ats.ide.util.widgets.dialog.TeamDefinitionDialog; +import org.eclipse.osee.framework.core.data.BranchId; +import org.eclipse.osee.framework.skynet.core.artifact.BranchManager; +import org.eclipse.osee.framework.ui.plugin.PluginUiImage; +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.results.IResultsEditorProvider; +import org.eclipse.osee.framework.ui.skynet.results.IResultsEditorTab; +import org.eclipse.osee.framework.ui.skynet.results.ResultsEditor; +import org.eclipse.osee.framework.ui.skynet.results.table.IResultsXViewerRow; +import org.eclipse.osee.framework.ui.skynet.results.table.ResultsEditorTableTab; +import org.eclipse.osee.framework.ui.skynet.results.table.ResultsXViewerRow; + +/** + * @author Donald G. Dunne + */ +public class ParallelConfigurationView extends XNavigateItemAction { + + public static final String TITLE = "Pallel Configuration View"; + private static enum Columns { + AtsVersion, + Branch, + AllowCreate, + AllowCommit, + Released; + }; + + public ParallelConfigurationView(XNavigateItem parent) { + super(parent, TITLE, PluginUiImage.ADMIN); + } + + @Override + public void run(TableLoadOption... tableLoadOptions) throws Exception { + IAtsTeamDefinition teamDef; + TeamDefinitionDialog dialog = new TeamDefinitionDialog(TITLE, "Select Team"); + dialog.setMultiSelect(false); + dialog.setInput(AtsClientService.get().getTeamDefinitionService().getTeamDefHoldingVersions()); + if (dialog.open() == Window.OK) { + teamDef = dialog.getSelectedFirst(); + + ResultsEditor.open(new IResultsEditorProvider() { + + private List<IResultsEditorTab> tabs; + + @Override + public String getEditorName() { + return String.format("%s - %s", TITLE, teamDef.toStringWithId()); + } + + @Override + public List<IResultsEditorTab> getResultsEditorTabs() { + if (tabs == null) { + tabs = new LinkedList<>(); + tabs.add(createDataTab(teamDef)); + } + return tabs; + } + }); + } + } + + private IResultsEditorTab createDataTab(IAtsTeamDefinition teamDef) { + List<IResultsXViewerRow> rows = new ArrayList<>(); + for (IAtsVersion ver : AtsClientService.get().getVersionService().getVersions(teamDef)) { + rows.add(new VersionRow(ver, null)); + } + + List<XViewerColumn> columns = Arrays.asList( + new XViewerColumn(Columns.AtsVersion.name(), Columns.AtsVersion.name(), 260, XViewerAlign.Left, true, SortDataType.String, + false, ""), + new XViewerColumn(Columns.Branch.name(), Columns.Branch.name(), 260, XViewerAlign.Left, true, + SortDataType.String, false, ""), + new XViewerColumn(Columns.AllowCreate.name(), Columns.AllowCreate.name(), 126, XViewerAlign.Left, true, + SortDataType.String, false, ""), + new XViewerColumn(Columns.AllowCommit.name(), Columns.AllowCommit.name(), 126, XViewerAlign.Left, true, + SortDataType.String, false, ""), + new XViewerColumn(Columns.Released.name(), Columns.Released.name(), 126, XViewerAlign.Left, true, + SortDataType.String, false, "")); + + return new ResultsEditorTableTab("Versions", columns, rows); + } + + public static class VersionRow extends ResultsXViewerRow { + + private final IAtsVersion version; + private final VersionRow parent; + + public VersionRow(IAtsVersion version, VersionRow parent) { + this.version = version; + this.parent = parent; + setData(version.getArtifactId()); + values.add(version.getName()); + BranchId baselineBranch = version.getBaselineBranch(); + if (baselineBranch.isValid()) { + values.add(BranchManager.getBranchName(baselineBranch)); + } else { + values.add(""); + } + values.add(String.valueOf(version.isAllowCreateBranch())); + values.add(String.valueOf(version.isAllowCommitBranch())); + values.add(String.valueOf(version.isReleased())); + } + + @Override + public boolean hasChildren() { + return getChildren().size() > 0; + } + + @Override + public Collection<IResultsXViewerRow> getChildren() { + List<IResultsXViewerRow> rows = new ArrayList<>(); + for (IAtsVersion version : AtsClientService.get().getVersionService().getParallelVersions(version)) { + rows.add(new VersionRow(version, this)); + } + return rows; + } + + @Override + public IResultsXViewerRow getParent() { + return parent; + } + + } +}
diff --git a/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/config/version/ReleaseVersionItem.java b/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/config/version/ReleaseVersionItem.java index 56e70f3..96e48ba 100644 --- a/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/config/version/ReleaseVersionItem.java +++ b/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/config/version/ReleaseVersionItem.java
@@ -46,7 +46,8 @@ * @param teamDefHoldingVersions Team Definition Artifact that is related to versions or null for popup selection */ public ReleaseVersionItem(XNavigateItem parent, IAtsTeamDefinition teamDefHoldingVersions) { - super(parent, "Release " + (teamDefHoldingVersions != null ? teamDefHoldingVersions + " " : "") + "Version", + super(parent, + "Release " + (teamDefHoldingVersions != null ? teamDefHoldingVersions + " " : "") + "Version (Admin)", FrameworkImage.VERSION); this.teamDefHoldingVersions = teamDefHoldingVersions; }
diff --git a/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/navigate/NavigateViewItems.java b/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/navigate/NavigateViewItems.java index 43da8d1..c1c45df 100644 --- a/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/navigate/NavigateViewItems.java +++ b/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/navigate/NavigateViewItems.java
@@ -49,6 +49,7 @@ import org.eclipse.osee.ats.ide.config.version.GenerateFullVersionReportItem; import org.eclipse.osee.ats.ide.config.version.GenerateVersionReportItem; import org.eclipse.osee.ats.ide.config.version.MassEditTeamVersionItem; +import org.eclipse.osee.ats.ide.config.version.ParallelConfigurationView; import org.eclipse.osee.ats.ide.config.version.ReleaseVersionItem; import org.eclipse.osee.ats.ide.ev.EvNavigateItems; import org.eclipse.osee.ats.ide.export.AtsExportAction; @@ -188,6 +189,8 @@ addExtensionPointItems(item, items); + createVersionsSection(item, items); + createEmailItems(item, items); createReportItems(item, items); @@ -240,7 +243,6 @@ private void createAdminItems(XNavigateItem parent, List<XNavigateItem> items) { if (AtsClientService.get().getUserService().isAtsAdmin()) { - createVersionsSection(parent, items); createWorkDefinitionsSection(parent, items); createExampleItems(parent, items); XNavigateItem adminItems = new XNavigateItem(parent, "Admin", PluginUiImage.ADMIN); @@ -346,14 +348,20 @@ private void createVersionsSection(XNavigateItem parent, List<XNavigateItem> items) { try { XNavigateItem releaseItems = new XNavigateItem(parent, "Versions", FrameworkImage.VERSION); - new MassEditTeamVersionItem("Team Versions", releaseItems, FrameworkImage.VERSION); + new ParallelConfigurationView(releaseItems); new SearchNavigateItem(releaseItems, new VersionTargetedForTeamSearchItem(null, null, false, LoadView.WorldEditor)); new SearchNavigateItem(releaseItems, new NextVersionSearchItem(null, LoadView.WorldEditor)); - new ReleaseVersionItem(releaseItems, null); - new CreateNewVersionItem(releaseItems, null); new GenerateVersionReportItem(releaseItems); new GenerateFullVersionReportItem(releaseItems); + + // Admin + if (AtsClientService.get().getUserService().isAtsAdmin()) { + new MassEditTeamVersionItem("Team Versions (Admin)", releaseItems, FrameworkImage.VERSION); + new CreateNewVersionItem(releaseItems, null); + new ReleaseVersionItem(releaseItems, null); + } + items.add(releaseItems); } catch (OseeCoreException ex) { OseeLog.log(Activator.class, Level.SEVERE, "Can't create Goals section");
diff --git a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/results/table/IResultsXViewerRow.java b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/results/table/IResultsXViewerRow.java index c60c922..c9534bc 100644 --- a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/results/table/IResultsXViewerRow.java +++ b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/results/table/IResultsXViewerRow.java
@@ -10,6 +10,9 @@ *******************************************************************************/ package org.eclipse.osee.framework.ui.skynet.results.table; +import java.util.Collection; +import java.util.Collections; + /** * @author Donald G. Dunne */ @@ -21,4 +24,16 @@ public Object getData(); + default public boolean hasChildren() { + return false; + } + + default public Collection<IResultsXViewerRow> getChildren() { + return Collections.emptyList(); + } + + default IResultsXViewerRow getParent() { + return null; + } + }
diff --git a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/results/table/ResultsXViewerRow.java b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/results/table/ResultsXViewerRow.java index d30f751..779bf79 100644 --- a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/results/table/ResultsXViewerRow.java +++ b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/results/table/ResultsXViewerRow.java
@@ -10,6 +10,7 @@ *******************************************************************************/ package org.eclipse.osee.framework.ui.skynet.results.table; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -18,9 +19,13 @@ */ public class ResultsXViewerRow implements IResultsXViewerRow { - private final List<String> values; + protected final List<String> values; private Object data; + public ResultsXViewerRow() { + values = new ArrayList<String>(); + } + public ResultsXViewerRow(List<String> values, Object data) { this.data = data; this.values = values; @@ -48,6 +53,10 @@ return values.toArray(new String[values.size()]); } + public void addValue(String value) { + values.add(value); + } + @Override public Object getData() { return data;
diff --git a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/results/table/xresults/ResultsXViewerContentProvider.java b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/results/table/xresults/ResultsXViewerContentProvider.java index dc684e1..88d1792 100644 --- a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/results/table/xresults/ResultsXViewerContentProvider.java +++ b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/results/table/xresults/ResultsXViewerContentProvider.java
@@ -34,16 +34,26 @@ if (parentElement instanceof Collection) { return ((Collection) parentElement).toArray(); } + if (parentElement instanceof IResultsXViewerRow) { + Collection<IResultsXViewerRow> children = ((IResultsXViewerRow) parentElement).getChildren(); + return children.toArray(new IResultsXViewerRow[children.size()]); + } return EMPTY_ARRAY; } @Override public Object getParent(Object element) { + if (element instanceof IResultsXViewerRow) { + return ((IResultsXViewerRow) element).getParent(); + } return null; } @Override public boolean hasChildren(Object element) { + if (element instanceof IResultsXViewerRow) { + return ((IResultsXViewerRow) element).hasChildren(); + } return false; }