diff options
author | Dunne (US), Donald G | 2024-05-08 18:50:01 +0000 |
---|---|---|
committer | Donald Dunne | 2024-05-08 19:38:34 +0000 |
commit | cc17b0ebe0d31aad91663ddeed7eacde9ace11fa (patch) | |
tree | 80d9ebaebc59a582218f989f2c0ebdd3d01e6e70 | |
parent | 664eadb1ebb3ffb36bc8e2cab3a61c5e43da4fb6 (diff) | |
download | org.eclipse.osee-cc17b0ebe0d31aad91663ddeed7eacde9ace11fa.tar.gz org.eclipse.osee-cc17b0ebe0d31aad91663ddeed7eacde9ace11fa.tar.xz org.eclipse.osee-cc17b0ebe0d31aad91663ddeed7eacde9ace11fa.zip |
feature[TW26304]: Create Last Transition Date column
Change-Id: I108f5c29f0a9affff3858829585129bc2de406c9
4 files changed, 82 insertions, 16 deletions
diff --git a/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/workflow/IAtsWorkItemService.java b/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/workflow/IAtsWorkItemService.java index d6c33c96223..d3b02e55e3d 100644 --- a/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/workflow/IAtsWorkItemService.java +++ b/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/workflow/IAtsWorkItemService.java @@ -237,6 +237,14 @@ public interface IAtsWorkItemService { return getTimeInState(workItem, workItem.getCurrentState()); } + default public Date getLastTransitionDate(IAtsWorkItem workItem) { + IAtsLogItem logItem = getStateStartedData(workItem, workItem.getCurrentState()); + if (logItem != null) { + return logItem.getDate(); + } + return null; + } + /** * This method is for backward compatibility and should NOT be used outside core ATS */ @@ -279,4 +287,5 @@ public interface IAtsWorkItemService { } boolean isAllowSiblingCreation(IAtsWorkItem workItem); + }
\ No newline at end of file diff --git a/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/column/DaysInCurrentStateColumnUI.java b/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/column/DaysInCurrentStateColumnUI.java index 531ec1987cf..e22117d5f2d 100644 --- a/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/column/DaysInCurrentStateColumnUI.java +++ b/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/column/DaysInCurrentStateColumnUI.java @@ -13,24 +13,17 @@ package org.eclipse.osee.ats.ide.column; -import java.util.HashSet; -import java.util.Set; import org.eclipse.nebula.widgets.xviewer.IXViewerValueColumn; 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.IAtsWorkItem; -import org.eclipse.osee.ats.api.data.AtsArtifactTypes; import org.eclipse.osee.ats.api.util.AtsUtil; -import org.eclipse.osee.ats.api.workflow.IAtsTeamWorkflow; import org.eclipse.osee.ats.ide.internal.AtsApiService; import org.eclipse.osee.ats.ide.util.xviewer.column.XViewerAtsColumn; import org.eclipse.osee.ats.ide.world.WorldXViewerFactory; 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.DateUtil; -import org.eclipse.osee.framework.jdk.core.util.Strings; -import org.eclipse.osee.framework.skynet.core.utility.Artifacts; import org.eclipse.osee.framework.ui.skynet.util.LogUtil; /** @@ -69,15 +62,6 @@ public class DaysInCurrentStateColumnUI extends XViewerAtsColumn implements IXVi return "0.0"; } return AtsUtil.doubleToI18nString(timeInCurrState / DateUtil.MILLISECONDS_IN_A_DAY); - } else if (Artifacts.isOfType(element, AtsArtifactTypes.Action)) { - Set<String> strs = new HashSet<>(); - for (IAtsTeamWorkflow team : AtsApiService.get().getWorkItemService().getTeams(element)) { - String str = getColumnText(team, column, columnIndex); - if (Strings.isValid(str)) { - strs.add(str); - } - } - return Collections.toString(", ", strs); } } catch (OseeCoreException ex) { LogUtil.getCellExceptionString(ex); diff --git a/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/column/LastTransitionDateColumnUI.java b/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/column/LastTransitionDateColumnUI.java new file mode 100644 index 00000000000..0781d824bd2 --- /dev/null +++ b/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/column/LastTransitionDateColumnUI.java @@ -0,0 +1,71 @@ +/********************************************************************* + * Copyright (c) 2024 Boeing + * + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Boeing - initial API and implementation + **********************************************************************/ + +package org.eclipse.osee.ats.ide.column; + +import java.util.Date; +import org.eclipse.nebula.widgets.xviewer.IXViewerValueColumn; +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.IAtsWorkItem; +import org.eclipse.osee.ats.ide.internal.AtsApiService; +import org.eclipse.osee.ats.ide.util.xviewer.column.XViewerAtsColumn; +import org.eclipse.osee.ats.ide.world.WorldXViewerFactory; +import org.eclipse.osee.framework.jdk.core.type.OseeCoreException; +import org.eclipse.osee.framework.jdk.core.util.DateUtil; +import org.eclipse.osee.framework.ui.skynet.util.LogUtil; + +/** + * @author Donald G. Dunne + */ +public class LastTransitionDateColumnUI extends XViewerAtsColumn implements IXViewerValueColumn { + + public static LastTransitionDateColumnUI instance = new LastTransitionDateColumnUI(); + + public static LastTransitionDateColumnUI getInstance() { + return instance; + } + + private LastTransitionDateColumnUI() { + super(WorldXViewerFactory.COLUMN_NAMESPACE + ".lastTransitionDate", "Last Transition State", 80, + XViewerAlign.Center, false, SortDataType.Date, false, "Date of the transition to the current state."); + } + + /** + * XViewer uses copies of column definitions so originals that are registered are not corrupted. Classes extending + * XViewerValueColumn MUST extend this constructor so the correct sub-class is created + */ + @Override + public LastTransitionDateColumnUI copy() { + LastTransitionDateColumnUI newXCol = new LastTransitionDateColumnUI(); + super.copy(this, newXCol); + return newXCol; + } + + @Override + public String getColumnText(Object element, XViewerColumn column, int columnIndex) { + try { + if (element instanceof IAtsWorkItem) { + Date transitionDate = + AtsApiService.get().getWorkItemService().getLastTransitionDate((IAtsWorkItem) element); + if (transitionDate != null) { + return DateUtil.getMMDDYYHHMM(transitionDate); + } + } + } catch (OseeCoreException ex) { + LogUtil.getCellExceptionString(ex); + } + return ""; + } +} diff --git a/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/world/WorldXViewerFactory.java b/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/world/WorldXViewerFactory.java index 3a60cbef7a0..5ddf2b2edcb 100644 --- a/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/world/WorldXViewerFactory.java +++ b/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/world/WorldXViewerFactory.java @@ -52,6 +52,7 @@ import org.eclipse.osee.ats.ide.column.GoalsColumnUI; import org.eclipse.osee.ats.ide.column.GroupsColumnUI; import org.eclipse.osee.ats.ide.column.ImplementorColumnUI; import org.eclipse.osee.ats.ide.column.LastStatusedColumnUI; +import org.eclipse.osee.ats.ide.column.LastTransitionDateColumnUI; import org.eclipse.osee.ats.ide.column.NumberOfTasksColumnUI; import org.eclipse.osee.ats.ide.column.NumberOfTasksRemainingColumnUI; import org.eclipse.osee.ats.ide.column.OriginatingWorkFlowColumnUI; @@ -350,6 +351,7 @@ public class WorldXViewerFactory extends SkynetXViewerFactory { LastModifiedTransactionColumn.getInstance(), LastModifiedTransactionCommentColumn.getInstance(), LastStatusedColumnUI.getInstance(), + LastTransitionDateColumnUI.getInstance(), NumberOfTasksColumnUI.getInstance(), NumberOfTasksRemainingColumnUI.getInstance(), OriginatingWorkFlowColumnUI.getInstance(), |