diff options
author | donald.g.dunne | 2016-10-24 18:48:58 +0000 |
---|---|---|
committer | Donald Dunne | 2016-11-29 16:03:49 +0000 |
commit | 56c3bae0570c2cfe3165c539a5acec823070591a (patch) | |
tree | fbde1c80c0b95dae5d7af2282e8e2131dbcbdd4c | |
parent | e2a7e0bb54d27123e06beb02d99f92b8a0ccf394 (diff) | |
download | org.eclipse.osee-56c3bae0570c2cfe3165c539a5acec823070591a.tar.gz org.eclipse.osee-56c3bae0570c2cfe3165c539a5acec823070591a.tar.xz org.eclipse.osee-56c3bae0570c2cfe3165c539a5acec823070591a.zip |
bug[ats_ATS320962]: Second Goal Search produces NPE.0.24.3.v201611291713-NRB
Change-Id: Iea00c809fb82470ab153bea53f6a691f88fa7e6c
-rw-r--r-- | plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/WorldEditorParameterSearchItem.java | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/WorldEditorParameterSearchItem.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/WorldEditorParameterSearchItem.java index 56c948ec27a..a5edc23a6b0 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/WorldEditorParameterSearchItem.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/WorldEditorParameterSearchItem.java @@ -10,6 +10,7 @@ *******************************************************************************/ package org.eclipse.osee.ats.world; +import java.util.Arrays; import java.util.HashMap; import java.util.LinkedList; import java.util.List; @@ -23,6 +24,7 @@ import org.eclipse.osee.ats.api.query.AtsSearchUserType; import org.eclipse.osee.ats.api.user.IAtsUser; import org.eclipse.osee.ats.api.version.IAtsVersion; import org.eclipse.osee.ats.api.workdef.StateType; +import org.eclipse.osee.ats.api.workflow.WorkItemType; import org.eclipse.osee.ats.internal.Activator; import org.eclipse.osee.ats.search.widget.ActionableItemSearchWidget; import org.eclipse.osee.ats.search.widget.ColorTeamSearchWidget; @@ -72,6 +74,9 @@ public abstract class WorldEditorParameterSearchItem extends WorldSearchItem imp private final Pattern displayName = Pattern.compile("displayName=\"(.*?)\""); private String shortName = ""; private final List<String> widgetOrder = new LinkedList<>(); + private static List<WorkItemType> GOAL_SPRINT_BACKLOG_WORKITEMTYPES = + Arrays.asList(WorkItemType.AgileBacklog, WorkItemType.AgileSprint, WorkItemType.Goal); + private static List<WorkItemType> TEAM_DEF_WORKITEMTYPES = null; private TitleSearchWidget title; private StateTypeSearchWidget stateType; private UserSearchWidget user; @@ -121,7 +126,7 @@ public abstract class WorldEditorParameterSearchItem extends WorldSearchItem imp if (workItemType != null && workItemType.get().isEmpty()) { return new Result("You must select a workflow type."); } - if ((teamDef != null && teamDef.get().isEmpty()) && (ai != null && ai.get().isEmpty())) { + if ((teamDef != null && teamDef.get() != null && teamDef.get().isEmpty()) && (ai != null && ai.get().isEmpty()) && isTeamDefWorkItemTypesSelected()) { return new Result("You must select either Actionable Item(s) or Team Definition(s)."); } return Result.TrueResult; @@ -131,6 +136,26 @@ public abstract class WorldEditorParameterSearchItem extends WorldSearchItem imp } } + private List<WorkItemType> getTeamDefWorkItemTypes() { + if (TEAM_DEF_WORKITEMTYPES == null) { + TEAM_DEF_WORKITEMTYPES = new LinkedList<>(); + for (WorkItemType type : WorkItemType.values()) { + if (!GOAL_SPRINT_BACKLOG_WORKITEMTYPES.contains(type)) { + TEAM_DEF_WORKITEMTYPES.add(type); + } + } + } + return TEAM_DEF_WORKITEMTYPES; + } + + /** + * @return true if any of the work item types are related to team defs and ais + */ + private boolean isTeamDefWorkItemTypesSelected() { + boolean sel = !Collections.setIntersection(getTeamDefWorkItemTypes(), workItemType.get()).isEmpty(); + return sel; + } + @Override public void run(WorldEditor worldEditor, SearchType searchType, boolean forcePend) { boolean pend = Collections.getAggregate(tableLoadOptions).contains(TableLoadOption.ForcePend) || forcePend; |