diff options
author | donald.g.dunne | 2017-05-09 15:34:59 +0000 |
---|---|---|
committer | Donald Dunne | 2017-05-11 18:09:49 +0000 |
commit | b37d7a257cef074fef33a24e3b481013603f366d (patch) | |
tree | e874e1345cd8eaf565e53bbe4aeaab3166c9272d | |
parent | ae7b3f6e3913c3c03295fb254de44b19cb956d47 (diff) | |
download | org.eclipse.osee-b37d7a257cef074fef33a24e3b481013603f366d.tar.gz org.eclipse.osee-b37d7a257cef074fef33a24e3b481013603f366d.tar.xz org.eclipse.osee-b37d7a257cef074fef33a24e3b481013603f366d.zip |
bug[ats_ATS374993]: Improvements in support of action
Change-Id: I078f4dc7e727420a695b8916fff2cfdf084bd975
21 files changed, 303 insertions, 63 deletions
diff --git a/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/column/IWorkPackageColumn.java b/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/column/IWorkPackageColumn.java new file mode 100644 index 00000000000..9bbc850144e --- /dev/null +++ b/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/column/IWorkPackageColumn.java @@ -0,0 +1,22 @@ +/******************************************************************************* + * Copyright (c) 2017 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.api.column; + +import java.util.Map; +import org.eclipse.osee.framework.core.data.ArtifactToken; + +/** + * @author Donald G. Dunne + */ +public interface IWorkPackageColumn { + + public void setIdToWorkPackageCache(Map<String, ArtifactToken> guidToWorkPackage); +} diff --git a/plugins/org.eclipse.osee.ats.core.test/src/org/eclipse/osee/ats/core/internal/column/ev/AbstractWorkPackageUtilityTest.java b/plugins/org.eclipse.osee.ats.core.test/src/org/eclipse/osee/ats/core/internal/column/ev/AbstractWorkPackageUtilityTest.java index 4d97e012785..ad94e5c8616 100644 --- a/plugins/org.eclipse.osee.ats.core.test/src/org/eclipse/osee/ats/core/internal/column/ev/AbstractWorkPackageUtilityTest.java +++ b/plugins/org.eclipse.osee.ats.core.test/src/org/eclipse/osee/ats/core/internal/column/ev/AbstractWorkPackageUtilityTest.java @@ -37,6 +37,7 @@ public abstract class AbstractWorkPackageUtilityTest { public void setup() throws OseeCoreException { MockitoAnnotations.initMocks(this); when(earnedValueServiceProvider.getEarnedValueService()).thenReturn(earnedValueService); + when(earnedValueService.getWorkPackageId(workItem)).thenReturn("345"); when(earnedValueService.getWorkPackage(workItem)).thenReturn(workPkg); } diff --git a/plugins/org.eclipse.osee.ats.core.test/src/org/eclipse/osee/ats/core/internal/column/ev/WorkPackageGuidUtilityTest.java b/plugins/org.eclipse.osee.ats.core.test/src/org/eclipse/osee/ats/core/internal/column/ev/WorkPackageGuidUtilityTest.java index 3025ef091c7..961d3a2790e 100644 --- a/plugins/org.eclipse.osee.ats.core.test/src/org/eclipse/osee/ats/core/internal/column/ev/WorkPackageGuidUtilityTest.java +++ b/plugins/org.eclipse.osee.ats.core.test/src/org/eclipse/osee/ats/core/internal/column/ev/WorkPackageGuidUtilityTest.java @@ -19,7 +19,7 @@ import org.junit.Test; /** * Test case for {@link WorkPackageGuidColumn} - * + * * @author Donald G. Dunne */ public class WorkPackageGuidUtilityTest extends AbstractWorkPackageUtilityTest { @@ -30,7 +30,7 @@ public class WorkPackageGuidUtilityTest extends AbstractWorkPackageUtilityTest { @Before public void setup() throws OseeCoreException { super.setup(); - util = new WorkPackageGuidColumn(earnedValueServiceProvider); + util = new WorkPackageGuidColumn(earnedValueServiceProvider, null); } @Test diff --git a/plugins/org.eclipse.osee.ats.core.test/src/org/eclipse/osee/ats/core/internal/column/ev/WorkPackageIdUtilityTest.java b/plugins/org.eclipse.osee.ats.core.test/src/org/eclipse/osee/ats/core/internal/column/ev/WorkPackageIdUtilityTest.java index 1e7869ac128..1d767d6faee 100644 --- a/plugins/org.eclipse.osee.ats.core.test/src/org/eclipse/osee/ats/core/internal/column/ev/WorkPackageIdUtilityTest.java +++ b/plugins/org.eclipse.osee.ats.core.test/src/org/eclipse/osee/ats/core/internal/column/ev/WorkPackageIdUtilityTest.java @@ -19,7 +19,7 @@ import org.junit.Test; /** * Test case for {@link WorkPackageIdColumn} - * + * * @author Donald G. Dunne */ public class WorkPackageIdUtilityTest extends AbstractWorkPackageUtilityTest { @@ -30,7 +30,7 @@ public class WorkPackageIdUtilityTest extends AbstractWorkPackageUtilityTest { @Before public void setup() throws OseeCoreException { super.setup(); - util = new WorkPackageIdColumn(earnedValueServiceProvider); + util = new WorkPackageIdColumn(earnedValueServiceProvider, null); } @Test diff --git a/plugins/org.eclipse.osee.ats.core.test/src/org/eclipse/osee/ats/core/internal/column/ev/WorkPackageNameUtilityTest.java b/plugins/org.eclipse.osee.ats.core.test/src/org/eclipse/osee/ats/core/internal/column/ev/WorkPackageNameUtilityTest.java index 0ada8e7ed4c..4624b5de8fc 100644 --- a/plugins/org.eclipse.osee.ats.core.test/src/org/eclipse/osee/ats/core/internal/column/ev/WorkPackageNameUtilityTest.java +++ b/plugins/org.eclipse.osee.ats.core.test/src/org/eclipse/osee/ats/core/internal/column/ev/WorkPackageNameUtilityTest.java @@ -19,7 +19,7 @@ import org.junit.Test; /** * Test case for {@link WorkPackageNameColumn} - * + * * @author Donald G. Dunne */ public class WorkPackageNameUtilityTest extends AbstractWorkPackageUtilityTest { @@ -30,7 +30,7 @@ public class WorkPackageNameUtilityTest extends AbstractWorkPackageUtilityTest { @Before public void setup() throws OseeCoreException { super.setup(); - util = new WorkPackageNameColumn(earnedValueServiceProvider); + util = new WorkPackageNameColumn(earnedValueServiceProvider, null); } @Test diff --git a/plugins/org.eclipse.osee.ats.core.test/src/org/eclipse/osee/ats/core/internal/column/ev/WorkPackageProgramUtilityTest.java b/plugins/org.eclipse.osee.ats.core.test/src/org/eclipse/osee/ats/core/internal/column/ev/WorkPackageProgramUtilityTest.java index b9909f4a6e4..3f55aebf985 100644 --- a/plugins/org.eclipse.osee.ats.core.test/src/org/eclipse/osee/ats/core/internal/column/ev/WorkPackageProgramUtilityTest.java +++ b/plugins/org.eclipse.osee.ats.core.test/src/org/eclipse/osee/ats/core/internal/column/ev/WorkPackageProgramUtilityTest.java @@ -19,7 +19,7 @@ import org.junit.Test; /** * Test case for {@link WorkPackageProgramColumn} - * + * * @author Donald G. Dunne */ public class WorkPackageProgramUtilityTest extends AbstractWorkPackageUtilityTest { @@ -30,7 +30,7 @@ public class WorkPackageProgramUtilityTest extends AbstractWorkPackageUtilityTes @Before public void setup() throws OseeCoreException { super.setup(); - util = new WorkPackageProgramColumn(earnedValueServiceProvider); + util = new WorkPackageProgramColumn(earnedValueServiceProvider, null); } @Test diff --git a/plugins/org.eclipse.osee.ats.core.test/src/org/eclipse/osee/ats/core/internal/column/ev/WorkPackageTypeUtilityTest.java b/plugins/org.eclipse.osee.ats.core.test/src/org/eclipse/osee/ats/core/internal/column/ev/WorkPackageTypeUtilityTest.java index 948da4d9998..4355848dc65 100644 --- a/plugins/org.eclipse.osee.ats.core.test/src/org/eclipse/osee/ats/core/internal/column/ev/WorkPackageTypeUtilityTest.java +++ b/plugins/org.eclipse.osee.ats.core.test/src/org/eclipse/osee/ats/core/internal/column/ev/WorkPackageTypeUtilityTest.java @@ -20,7 +20,7 @@ import org.junit.Test; /** * Test case for {@link WorkPackageTypeColumn} - * + * * @author Donald G. Dunne */ public class WorkPackageTypeUtilityTest extends AbstractWorkPackageUtilityTest { @@ -31,7 +31,7 @@ public class WorkPackageTypeUtilityTest extends AbstractWorkPackageUtilityTest { @Before public void setup() throws OseeCoreException { super.setup(); - util = new WorkPackageTypeColumn(earnedValueServiceProvider); + util = new WorkPackageTypeColumn(earnedValueServiceProvider, null); } @Test diff --git a/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/column/AtsAttributeValueColumnHandler.java b/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/column/AtsAttributeValueColumnHandler.java index b662793e074..b5e1989f609 100644 --- a/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/column/AtsAttributeValueColumnHandler.java +++ b/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/column/AtsAttributeValueColumnHandler.java @@ -22,7 +22,6 @@ import org.eclipse.osee.ats.api.workflow.IAtsAction; import org.eclipse.osee.ats.api.workflow.IAtsTeamWorkflow; import org.eclipse.osee.ats.core.internal.column.ev.AtsColumnService; import org.eclipse.osee.framework.core.data.AttributeTypeId; -import org.eclipse.osee.framework.core.data.AttributeTypeId; import org.eclipse.osee.framework.jdk.core.util.Collections; import org.eclipse.osee.framework.jdk.core.util.Strings; @@ -98,4 +97,9 @@ public class AtsAttributeValueColumnHandler implements IAtsColumn { return getColumnText(atsObject, attributeType.getId(), isActionRollup, inheritParent, services); } + @Override + public String toString() { + return "AtsAttributeValueColumnHandler [attrType=" + column.getAttrTypeName() + "]"; + } + } diff --git a/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/column/AttributeColumn.java b/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/column/AttributeColumn.java index c05c613fc17..d765e2bc6c8 100644 --- a/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/column/AttributeColumn.java +++ b/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/column/AttributeColumn.java @@ -31,4 +31,10 @@ public class AttributeColumn extends AbstractServicesColumn { public String getText(IAtsObject atsObject) { return Collections.toString("; ", services.getAttributeResolver().getAttributesToStringList(atsObject, attrType)); } + + @Override + public String toString() { + return "AttributeColumn [attrType=" + attrType + "]"; + } + } diff --git a/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/column/InsertionActivityColumn.java b/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/column/InsertionActivityColumn.java index ed5dea4503c..951b012fb26 100644 --- a/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/column/InsertionActivityColumn.java +++ b/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/column/InsertionActivityColumn.java @@ -10,51 +10,84 @@ *******************************************************************************/ package org.eclipse.osee.ats.core.column; +import java.util.Map; import org.eclipse.osee.ats.api.IAtsObject; import org.eclipse.osee.ats.api.IAtsServices; import org.eclipse.osee.ats.api.IAtsWorkItem; import org.eclipse.osee.ats.api.ev.IAtsWorkPackage; import org.eclipse.osee.ats.api.insertion.IAtsInsertionActivity; import org.eclipse.osee.ats.core.config.WorkPackageUtility; -import org.eclipse.osee.framework.jdk.core.type.OseeCoreException; +import org.eclipse.osee.framework.core.data.ArtifactToken; import org.eclipse.osee.framework.jdk.core.type.Pair; +import org.eclipse.osee.framework.jdk.core.util.Strings; /** * @author Donald G. Dunne */ public class InsertionActivityColumn extends AbstractServicesColumn { + private Map<Object, ArtifactToken> idToInsertionActivity; + public InsertionActivityColumn(IAtsServices services) { super(services); } + /** + * Set optional map to use as a cache of work item id (Long) or work package guid (String) to Insertion Activity + * artifact. + */ + public void setIdToInsertionActivityCache(Map<Object, ArtifactToken> idToInsertionActivity) { + this.idToInsertionActivity = idToInsertionActivity; + } + @Override public String getText(IAtsObject atsObject) { String format = "%s"; if (services.getStoreService().isDeleted(atsObject)) { format = "<Deleted> %s"; } - return String.format(format, getInsertionActivityStr(atsObject, services)); + return String.format(format, + getInsertionActivityStr(atsObject, services, CountryColumn.getUtil(), idToInsertionActivity)); } - public static String getInsertionActivityStr(IAtsObject atsObject, IAtsServices services) throws OseeCoreException { + public static String getInsertionActivityStr(IAtsObject atsObject, IAtsServices services) { return getInsertionActivityStr(atsObject, services, CountryColumn.getUtil()); } - public static String getInsertionActivityStr(IAtsObject atsObject, IAtsServices services, WorkPackageUtility util) throws OseeCoreException { + public static String getInsertionActivityStr(IAtsObject atsObject, IAtsServices services, WorkPackageUtility util) { + return getInsertionActivityStr(atsObject, services, util, null); + } + + public static String getInsertionActivityStr(IAtsObject atsObject, IAtsServices services, WorkPackageUtility utilMap, Map<Object, ArtifactToken> idToInsertionActivity) { String result = ""; if (atsObject instanceof IAtsWorkItem) { - IAtsWorkItem workItem = (IAtsWorkItem) atsObject; - Pair<IAtsInsertionActivity, Boolean> insertionActivity = util.getInsertionActivity(services, workItem); - if (insertionActivity.getFirst() != null) { - result = String.format("%s%s", insertionActivity.getFirst().getName(), - insertionActivity.getSecond() ? " (I)" : ""); + if (idToInsertionActivity != null) { + ArtifactToken insertionArt = idToInsertionActivity.get(atsObject.getId()); + if (insertionArt != null) { + result = insertionArt.getName(); + } + } + if (Strings.isInValid(result)) { + IAtsWorkItem workItem = (IAtsWorkItem) atsObject; + Pair<IAtsInsertionActivity, Boolean> insertionActivity = utilMap.getInsertionActivity(services, workItem); + if (insertionActivity.getFirst() != null) { + result = String.format("%s%s", insertionActivity.getFirst().getName(), + insertionActivity.getSecond() ? " (I)" : ""); + } } } else if (atsObject instanceof IAtsWorkPackage) { - IAtsWorkPackage workPackage = (IAtsWorkPackage) atsObject; - IAtsInsertionActivity insertionActivity = services.getProgramService().getInsertionActivity(workPackage); - if (insertionActivity != null) { - result = insertionActivity.getName(); + if (idToInsertionActivity != null) { + ArtifactToken insertionActivityArt = idToInsertionActivity.get(((IAtsWorkPackage) atsObject).getGuid()); + if (insertionActivityArt != null) { + result = insertionActivityArt.getName(); + } + } + if (Strings.isInValid(result)) { + IAtsWorkPackage workPackage = (IAtsWorkPackage) atsObject; + IAtsInsertionActivity insertionActivity = services.getProgramService().getInsertionActivity(workPackage); + if (insertionActivity != null) { + result = insertionActivity.getName(); + } } } return result; diff --git a/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/column/InsertionColumn.java b/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/column/InsertionColumn.java index 23f58785933..e9b535db285 100644 --- a/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/column/InsertionColumn.java +++ b/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/column/InsertionColumn.java @@ -10,6 +10,7 @@ *******************************************************************************/ package org.eclipse.osee.ats.core.column; +import java.util.Map; import org.eclipse.osee.ats.api.IAtsObject; import org.eclipse.osee.ats.api.IAtsServices; import org.eclipse.osee.ats.api.IAtsWorkItem; @@ -17,45 +18,75 @@ import org.eclipse.osee.ats.api.ev.IAtsWorkPackage; import org.eclipse.osee.ats.api.insertion.IAtsInsertion; import org.eclipse.osee.ats.api.insertion.IAtsInsertionActivity; import org.eclipse.osee.ats.core.config.WorkPackageUtility; -import org.eclipse.osee.framework.jdk.core.type.OseeCoreException; +import org.eclipse.osee.framework.core.data.ArtifactToken; import org.eclipse.osee.framework.jdk.core.type.Pair; +import org.eclipse.osee.framework.jdk.core.util.Strings; /** * @author Donald G. Dunne */ public class InsertionColumn extends AbstractServicesColumn { + private Map<Object, ArtifactToken> idToInsertion; + public InsertionColumn(IAtsServices services) { super(services); } + /** + * Set optional map to use as a cache of work item id (Long) or work package guid (String) to Insertion artifact. + */ + public void setIdToInsertionCache(Map<Object, ArtifactToken> idToInsertion) { + this.idToInsertion = idToInsertion; + } + @Override public String getText(IAtsObject atsObject) { String format = "%s"; if (services.getStoreService().isDeleted(atsObject)) { format = "<Deleted> %s"; } - return String.format(format, getInsertionStr(atsObject, services)); + return String.format(format, getInsertionStr(atsObject, services, CountryColumn.getUtil(), idToInsertion)); } - public static String getInsertionStr(IAtsObject atsObject, IAtsServices services) throws OseeCoreException { + public static String getInsertionStr(IAtsObject atsObject, IAtsServices services) { return getInsertionStr(atsObject, services, CountryColumn.getUtil()); } - public static String getInsertionStr(IAtsObject atsObject, IAtsServices services, WorkPackageUtility util) throws OseeCoreException { + public static String getInsertionStr(IAtsObject atsObject, IAtsServices services, WorkPackageUtility util) { + return getInsertionStr(atsObject, services, util, null); + } + + public static String getInsertionStr(IAtsObject atsObject, IAtsServices services, WorkPackageUtility util, Map<Object, ArtifactToken> idToInsertion) { String result = ""; if (atsObject instanceof IAtsWorkItem) { - IAtsWorkItem workItem = (IAtsWorkItem) atsObject; - Pair<IAtsInsertion, Boolean> insertion = util.getInsertion(services, workItem); - if (insertion.getFirst() != null) { - result = String.format("%s%s", insertion.getFirst().getName(), insertion.getSecond() ? " (I)" : ""); + if (idToInsertion != null) { + ArtifactToken insertionArt = idToInsertion.get(atsObject.getId()); + if (insertionArt != null) { + result = insertionArt.getName(); + } + } + if (Strings.isInValid(result)) { + IAtsWorkItem workItem = (IAtsWorkItem) atsObject; + Pair<IAtsInsertion, Boolean> insertion = util.getInsertion(services, workItem); + if (insertion.getFirst() != null) { + result = String.format("%s%s", insertion.getFirst().getName(), insertion.getSecond() ? " (I)" : ""); + } } } else if (atsObject instanceof IAtsWorkPackage) { - IAtsWorkPackage workPackage = (IAtsWorkPackage) atsObject; - IAtsInsertionActivity insertionActivity = services.getProgramService().getInsertionActivity(workPackage); - if (insertionActivity != null) { - IAtsInsertion insertion = services.getProgramService().getInsertion(insertionActivity); - result = insertion.getName(); + if (idToInsertion != null) { + ArtifactToken insertionArt = idToInsertion.get(((IAtsWorkPackage) atsObject).getGuid()); + if (insertionArt != null) { + result = insertionArt.getName(); + } + } + if (Strings.isInValid(result)) { + IAtsWorkPackage workPackage = (IAtsWorkPackage) atsObject; + IAtsInsertionActivity insertionActivity = services.getProgramService().getInsertionActivity(workPackage); + if (insertionActivity != null) { + IAtsInsertion insertion = services.getProgramService().getInsertion(insertionActivity); + result = insertion.getName(); + } } } return result; diff --git a/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/internal/column/ev/AbstractRelatedWorkPackageColumn.java b/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/internal/column/ev/AbstractRelatedWorkPackageColumn.java index f06794f2596..041e493cb96 100644 --- a/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/internal/column/ev/AbstractRelatedWorkPackageColumn.java +++ b/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/internal/column/ev/AbstractRelatedWorkPackageColumn.java @@ -10,24 +10,40 @@ *******************************************************************************/ package org.eclipse.osee.ats.core.internal.column.ev; +import java.util.Map; import org.eclipse.osee.ats.api.IAtsObject; +import org.eclipse.osee.ats.api.IAtsServices; import org.eclipse.osee.ats.api.IAtsWorkItem; import org.eclipse.osee.ats.api.column.IAtsColumn; +import org.eclipse.osee.ats.api.column.IWorkPackageColumn; import org.eclipse.osee.ats.api.ev.IAtsEarnedValueServiceProvider; import org.eclipse.osee.ats.api.ev.IAtsWorkPackage; +import org.eclipse.osee.framework.core.data.ArtifactToken; import org.eclipse.osee.framework.jdk.core.type.OseeCoreException; +import org.eclipse.osee.framework.jdk.core.util.Strings; /** * Provides for display of ActivityId and ActivityName from related Work Package - * + * * @author Donald G. Dunne */ -public abstract class AbstractRelatedWorkPackageColumn implements IAtsColumn { +public abstract class AbstractRelatedWorkPackageColumn implements IAtsColumn, IWorkPackageColumn { private final IAtsEarnedValueServiceProvider earnedValueServiceProvider; + private Map<String, ArtifactToken> guidToWorkPackage; + protected final IAtsServices services; - public AbstractRelatedWorkPackageColumn(IAtsEarnedValueServiceProvider earnedValueServiceProvider) { + public AbstractRelatedWorkPackageColumn(IAtsEarnedValueServiceProvider earnedValueServiceProvider, IAtsServices services) { this.earnedValueServiceProvider = earnedValueServiceProvider; + this.services = services; + } + + /** + * Set optional map to use as a cache of work item id (Long) or work package guid (String) to Insertion artifact. + */ + @Override + public void setIdToWorkPackageCache(Map<String, ArtifactToken> guidToWorkPackage) { + this.guidToWorkPackage = guidToWorkPackage; } @Override @@ -35,10 +51,32 @@ public abstract class AbstractRelatedWorkPackageColumn implements IAtsColumn { String result = ""; try { if (atsObject instanceof IAtsWorkItem) { - IAtsWorkPackage workPkg = - earnedValueServiceProvider.getEarnedValueService().getWorkPackage((IAtsWorkItem) atsObject); - if (workPkg != null) { - result = getColumnValue(workPkg); + String workPackageId = + earnedValueServiceProvider.getEarnedValueService().getWorkPackageId((IAtsWorkItem) atsObject); + if (workPackageId != null) { + if (guidToWorkPackage != null) { + if (Strings.isValid(workPackageId)) { + ArtifactToken wpArt = guidToWorkPackage.get(workPackageId); + result = getColumnValue(wpArt); + if (Strings.isInValid(result)) { + IAtsWorkPackage workPkg = + earnedValueServiceProvider.getEarnedValueService().getWorkPackage(wpArt); + if (workPkg != null) { + result = getColumnValue(workPkg); + } + } + } + } + if (Strings.isInValid(result)) { + IAtsWorkPackage workPkg = + earnedValueServiceProvider.getEarnedValueService().getWorkPackage((IAtsWorkItem) atsObject); + if (workPkg != null) { + result = getColumnValue(workPkg); + if (guidToWorkPackage != null) { + guidToWorkPackage.put(workPackageId, workPkg.getStoreObject()); + } + } + } } } } catch (OseeCoreException ex) { @@ -47,6 +85,8 @@ public abstract class AbstractRelatedWorkPackageColumn implements IAtsColumn { return result; } - protected abstract String getColumnValue(IAtsWorkPackage workPkg) throws OseeCoreException; + protected abstract String getColumnValue(ArtifactToken wpArt); + + protected abstract String getColumnValue(IAtsWorkPackage workPkg); } diff --git a/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/internal/column/ev/AtsColumnService.java b/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/internal/column/ev/AtsColumnService.java index 5991a2a46b2..e3cd52eeef5 100644 --- a/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/internal/column/ev/AtsColumnService.java +++ b/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/internal/column/ev/AtsColumnService.java @@ -132,15 +132,15 @@ public class AtsColumnService implements IAtsColumnService { } else if (id.equals(AtsColumnId.Priority.getId())) { column = new AtsAttributeValueColumnHandler(AtsColumnToken.PriorityColumn, services); } else if (id.equals(AtsColumnId.WorkPackageName.getId())) { - column = new WorkPackageNameColumn(services.getEarnedValueServiceProvider()); + column = new WorkPackageNameColumn(services.getEarnedValueServiceProvider(), services); } else if (id.equals(AtsColumnId.WorkPackageId.getId())) { - column = new WorkPackageIdColumn(services.getEarnedValueServiceProvider()); + column = new WorkPackageIdColumn(services.getEarnedValueServiceProvider(), services); } else if (id.equals(AtsColumnId.WorkPackageType.getId())) { - column = new WorkPackageTypeColumn(services.getEarnedValueServiceProvider()); + column = new WorkPackageTypeColumn(services.getEarnedValueServiceProvider(), services); } else if (id.equals(AtsColumnId.WorkPackageProgram.getId())) { - column = new WorkPackageProgramColumn(services.getEarnedValueServiceProvider()); + column = new WorkPackageProgramColumn(services.getEarnedValueServiceProvider(), services); } else if (id.equals(AtsColumnId.WorkPackageGuid.getId())) { - column = new WorkPackageGuidColumn(services.getEarnedValueServiceProvider()); + column = new WorkPackageGuidColumn(services.getEarnedValueServiceProvider(), services); } else if (id.equals(AtsColumnId.State.getId())) { column = new StateColumn(services); } else if (id.equals(AtsColumnId.Uuid.getId())) { diff --git a/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/internal/column/ev/WorkPackageColumn.java b/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/internal/column/ev/WorkPackageColumn.java index f3da1eb1322..7c0e23d5fc1 100644 --- a/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/internal/column/ev/WorkPackageColumn.java +++ b/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/internal/column/ev/WorkPackageColumn.java @@ -10,11 +10,14 @@ *******************************************************************************/ package org.eclipse.osee.ats.core.internal.column.ev; +import java.util.Map; import org.eclipse.osee.ats.api.IAtsObject; import org.eclipse.osee.ats.api.IAtsWorkItem; +import org.eclipse.osee.ats.api.column.IWorkPackageColumn; import org.eclipse.osee.ats.api.ev.IAtsEarnedValueServiceProvider; import org.eclipse.osee.ats.api.ev.IAtsWorkPackage; import org.eclipse.osee.ats.core.column.IWorkPackageUtility; +import org.eclipse.osee.framework.core.data.ArtifactToken; import org.eclipse.osee.framework.jdk.core.type.OseeCoreException; import org.eclipse.osee.framework.jdk.core.util.Strings; @@ -23,9 +26,10 @@ import org.eclipse.osee.framework.jdk.core.util.Strings; * * @author Donald G. Dunne */ -public class WorkPackageColumn implements IWorkPackageUtility { +public class WorkPackageColumn implements IWorkPackageUtility, IWorkPackageColumn { private final IAtsEarnedValueServiceProvider earnedValueServiceProvider; + private Map<String, ArtifactToken> guidToWorkPackage; public WorkPackageColumn(IAtsEarnedValueServiceProvider earnedValueServiceProvider) { this.earnedValueServiceProvider = earnedValueServiceProvider; @@ -36,13 +40,35 @@ public class WorkPackageColumn implements IWorkPackageUtility { return earnedValueServiceProvider.getEarnedValueService().getWorkPackageId((IAtsWorkItem) object); } + /** + * Set optional map to use as a cache of work item id (Long) or work package guid (String) to Insertion artifact. + */ + @Override + public void setIdToWorkPackageCache(Map<String, ArtifactToken> guidToWorkPackage) { + this.guidToWorkPackage = guidToWorkPackage; + } + @Override public String getColumnText(IAtsObject atsObject) { String result = ""; try { IAtsWorkPackage workPackage = null; if (atsObject instanceof IAtsWorkItem) { - workPackage = earnedValueServiceProvider.getEarnedValueService().getWorkPackage((IAtsWorkItem) atsObject); + String workPackageId = + earnedValueServiceProvider.getEarnedValueService().getWorkPackageId((IAtsWorkItem) atsObject); + if (guidToWorkPackage != null) { + if (Strings.isValid(workPackageId)) { + ArtifactToken wpArt = guidToWorkPackage.get(workPackageId); + workPackage = earnedValueServiceProvider.getEarnedValueService().getWorkPackage(wpArt); + } + } + if (workPackage == null) { + workPackage = + earnedValueServiceProvider.getEarnedValueService().getWorkPackage((IAtsWorkItem) atsObject); + if (workPackage != null && guidToWorkPackage != null) { + guidToWorkPackage.put(workPackageId, workPackage.getStoreObject()); + } + } if (workPackage != null) { result = getText(workPackage); } @@ -71,6 +97,17 @@ public class WorkPackageColumn implements IWorkPackageUtility { @Override public IAtsWorkPackage getWorkPackage(IAtsObject atsObject) throws OseeCoreException { IAtsWorkPackage workPackage = null; + String workPackageId = + earnedValueServiceProvider.getEarnedValueService().getWorkPackageId((IAtsWorkItem) atsObject); + if (guidToWorkPackage != null) { + if (Strings.isValid(workPackageId)) { + ArtifactToken wpArt = guidToWorkPackage.get(workPackageId); + workPackage = earnedValueServiceProvider.getEarnedValueService().getWorkPackage(wpArt); + if (workPackage != null) { + return workPackage; + } + } + } // Children work items inherit the work packages of their parent team workflow if (atsObject instanceof IAtsWorkItem) { workPackage = earnedValueServiceProvider.getEarnedValueService().getWorkPackage((IAtsWorkItem) atsObject); diff --git a/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/internal/column/ev/WorkPackageGuidColumn.java b/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/internal/column/ev/WorkPackageGuidColumn.java index 351c3f344cd..06e8da4ceac 100644 --- a/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/internal/column/ev/WorkPackageGuidColumn.java +++ b/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/internal/column/ev/WorkPackageGuidColumn.java @@ -10,16 +10,18 @@ *******************************************************************************/ package org.eclipse.osee.ats.core.internal.column.ev; +import org.eclipse.osee.ats.api.IAtsServices; import org.eclipse.osee.ats.api.ev.IAtsEarnedValueServiceProvider; import org.eclipse.osee.ats.api.ev.IAtsWorkPackage; +import org.eclipse.osee.framework.core.data.ArtifactToken; /** * @author Donald G. Dunne */ public class WorkPackageGuidColumn extends AbstractRelatedWorkPackageColumn { - public WorkPackageGuidColumn(IAtsEarnedValueServiceProvider earnedValueServiceProvider) { - super(earnedValueServiceProvider); + public WorkPackageGuidColumn(IAtsEarnedValueServiceProvider earnedValueServiceProvider, IAtsServices services) { + super(earnedValueServiceProvider, services); } @Override @@ -27,4 +29,9 @@ public class WorkPackageGuidColumn extends AbstractRelatedWorkPackageColumn { return workPkg.getGuid(); } + @Override + protected String getColumnValue(ArtifactToken wpArt) { + return wpArt.getGuid(); + } + } diff --git a/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/internal/column/ev/WorkPackageIdColumn.java b/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/internal/column/ev/WorkPackageIdColumn.java index b58195e0850..0e070dc874c 100644 --- a/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/internal/column/ev/WorkPackageIdColumn.java +++ b/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/internal/column/ev/WorkPackageIdColumn.java @@ -10,8 +10,11 @@ *******************************************************************************/ package org.eclipse.osee.ats.core.internal.column.ev; +import org.eclipse.osee.ats.api.IAtsServices; +import org.eclipse.osee.ats.api.data.AtsAttributeTypes; import org.eclipse.osee.ats.api.ev.IAtsEarnedValueServiceProvider; import org.eclipse.osee.ats.api.ev.IAtsWorkPackage; +import org.eclipse.osee.framework.core.data.ArtifactToken; import org.eclipse.osee.framework.jdk.core.type.OseeCoreException; /** @@ -19,8 +22,8 @@ import org.eclipse.osee.framework.jdk.core.type.OseeCoreException; */ public class WorkPackageIdColumn extends AbstractRelatedWorkPackageColumn { - public WorkPackageIdColumn(IAtsEarnedValueServiceProvider earnedValueServiceProvider) { - super(earnedValueServiceProvider); + public WorkPackageIdColumn(IAtsEarnedValueServiceProvider earnedValueServiceProvider, IAtsServices services) { + super(earnedValueServiceProvider, services); } @Override @@ -28,4 +31,12 @@ public class WorkPackageIdColumn extends AbstractRelatedWorkPackageColumn { return workPkg.getWorkPackageId(); } + @Override + protected String getColumnValue(ArtifactToken wpArt) { + if (services == null) { + return ""; + } + return services.getAttributeResolver().getSoleAttributeValue(wpArt, AtsAttributeTypes.WorkPackageId, ""); + } + } diff --git a/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/internal/column/ev/WorkPackageNameColumn.java b/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/internal/column/ev/WorkPackageNameColumn.java index be62d040d9e..f5b10ade6e6 100644 --- a/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/internal/column/ev/WorkPackageNameColumn.java +++ b/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/internal/column/ev/WorkPackageNameColumn.java @@ -10,16 +10,18 @@ *******************************************************************************/ package org.eclipse.osee.ats.core.internal.column.ev; +import org.eclipse.osee.ats.api.IAtsServices; import org.eclipse.osee.ats.api.ev.IAtsEarnedValueServiceProvider; import org.eclipse.osee.ats.api.ev.IAtsWorkPackage; +import org.eclipse.osee.framework.core.data.ArtifactToken; /** * @author Donald G. Dunne */ public class WorkPackageNameColumn extends AbstractRelatedWorkPackageColumn { - public WorkPackageNameColumn(IAtsEarnedValueServiceProvider earnedValueServiceProvider) { - super(earnedValueServiceProvider); + public WorkPackageNameColumn(IAtsEarnedValueServiceProvider earnedValueServiceProvider, IAtsServices services) { + super(earnedValueServiceProvider, services); } @Override @@ -27,4 +29,9 @@ public class WorkPackageNameColumn extends AbstractRelatedWorkPackageColumn { return workPkg.getName(); } + @Override + protected String getColumnValue(ArtifactToken wpArt) { + return wpArt.getName(); + } + } diff --git a/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/internal/column/ev/WorkPackageProgramColumn.java b/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/internal/column/ev/WorkPackageProgramColumn.java index 99eb8019860..82f22c2e33b 100644 --- a/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/internal/column/ev/WorkPackageProgramColumn.java +++ b/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/internal/column/ev/WorkPackageProgramColumn.java @@ -10,8 +10,11 @@ *******************************************************************************/ package org.eclipse.osee.ats.core.internal.column.ev; +import org.eclipse.osee.ats.api.IAtsServices; +import org.eclipse.osee.ats.api.data.AtsAttributeTypes; import org.eclipse.osee.ats.api.ev.IAtsEarnedValueServiceProvider; import org.eclipse.osee.ats.api.ev.IAtsWorkPackage; +import org.eclipse.osee.framework.core.data.ArtifactToken; import org.eclipse.osee.framework.jdk.core.type.OseeCoreException; /** @@ -19,8 +22,8 @@ import org.eclipse.osee.framework.jdk.core.type.OseeCoreException; */ public class WorkPackageProgramColumn extends AbstractRelatedWorkPackageColumn { - public WorkPackageProgramColumn(IAtsEarnedValueServiceProvider earnedValueServiceProvider) { - super(earnedValueServiceProvider); + public WorkPackageProgramColumn(IAtsEarnedValueServiceProvider earnedValueServiceProvider, IAtsServices services) { + super(earnedValueServiceProvider, services); } @Override @@ -32,4 +35,12 @@ public class WorkPackageProgramColumn extends AbstractRelatedWorkPackageColumn { } } + @Override + protected String getColumnValue(ArtifactToken wpArt) { + if (services == null) { + return ""; + } + return services.getAttributeResolver().getSoleAttributeValue(wpArt, AtsAttributeTypes.WorkPackageProgram, ""); + } + } diff --git a/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/internal/column/ev/WorkPackageTypeColumn.java b/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/internal/column/ev/WorkPackageTypeColumn.java index 3e2a9c2c598..2ac58dc1fe1 100644 --- a/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/internal/column/ev/WorkPackageTypeColumn.java +++ b/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/internal/column/ev/WorkPackageTypeColumn.java @@ -10,17 +10,22 @@ *******************************************************************************/ package org.eclipse.osee.ats.core.internal.column.ev; +import org.eclipse.osee.ats.api.IAtsServices; +import org.eclipse.osee.ats.api.data.AtsAttributeTypes; +import org.eclipse.osee.ats.api.ev.AtsWorkPackageType; import org.eclipse.osee.ats.api.ev.IAtsEarnedValueServiceProvider; import org.eclipse.osee.ats.api.ev.IAtsWorkPackage; +import org.eclipse.osee.framework.core.data.ArtifactToken; import org.eclipse.osee.framework.jdk.core.type.OseeCoreException; +import org.eclipse.osee.framework.jdk.core.util.Strings; /** * @author Donald G. Dunne */ public class WorkPackageTypeColumn extends AbstractRelatedWorkPackageColumn { - public WorkPackageTypeColumn(IAtsEarnedValueServiceProvider earnedValueServiceProvider) { - super(earnedValueServiceProvider); + public WorkPackageTypeColumn(IAtsEarnedValueServiceProvider earnedValueServiceProvider, IAtsServices services) { + super(earnedValueServiceProvider, services); } @Override @@ -32,4 +37,23 @@ public class WorkPackageTypeColumn extends AbstractRelatedWorkPackageColumn { } } + @Override + protected String getColumnValue(ArtifactToken wpArt) { + if (services == null) { + return ""; + } + String value = + services.getAttributeResolver().getSoleAttributeValue(wpArt, AtsAttributeTypes.WorkPackageType, ""); + AtsWorkPackageType type = AtsWorkPackageType.None; + if (Strings.isValid(value)) { + try { + type = AtsWorkPackageType.valueOf(value); + return type.name(); + } catch (Exception ex) { + // do nothing + } + } + return type.name(); + } + } diff --git a/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/program/AtsProgramService.java b/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/program/AtsProgramService.java index 3bca0b4cc17..c50eba8cd2c 100644 --- a/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/program/AtsProgramService.java +++ b/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/program/AtsProgramService.java @@ -391,7 +391,7 @@ public class AtsProgramService implements IAtsProgramService { useWorkItem = ((IAtsTeamWorkflow) useWorkItem).getParentAction(); } if (useWorkItem != null && useWorkItem instanceof IAtsAction) { - for (IAtsTeamWorkflow team : services.getWorkItemService().getTeams((IAtsAction) useWorkItem)) { + for (IAtsTeamWorkflow team : services.getWorkItemService().getTeams(useWorkItem)) { if (workTypeTeamDefs.contains(team.getTeamDefinition())) { teamArts.add(team); } diff --git a/plugins/org.eclipse.osee.framework.jdk.core/src/org/eclipse/osee/framework/jdk/core/util/io/xml/AbstractSheetWriter.java b/plugins/org.eclipse.osee.framework.jdk.core/src/org/eclipse/osee/framework/jdk/core/util/io/xml/AbstractSheetWriter.java index 2c2940e94c1..adff7f9efe0 100644 --- a/plugins/org.eclipse.osee.framework.jdk.core/src/org/eclipse/osee/framework/jdk/core/util/io/xml/AbstractSheetWriter.java +++ b/plugins/org.eclipse.osee.framework.jdk.core/src/org/eclipse/osee/framework/jdk/core/util/io/xml/AbstractSheetWriter.java @@ -43,6 +43,12 @@ public abstract class AbstractSheetWriter implements ISheetWriter { @Override public void writeRow(Object... row) throws IOException { + if (row[0] instanceof Collection<?>) { + Collection<?> values = (Collection<?>) row[0]; + for (Object obj : values) { + writeCell(obj); + } + } for (int i = 0; i < row.length; i++) { writeCell(row[i]); } |