diff options
author | donald.g.dunne | 2012-08-30 17:30:24 +0000 |
---|---|---|
committer | Roberto E. Escobar | 2012-08-30 17:30:24 +0000 |
commit | ecf813e89a127214d826864720d57995876feaac (patch) | |
tree | f99b0f6f2184c08cdc615d1f9259c35e872cc13a | |
parent | 3ac0e206d7d95e900e043bc2a598c273b3cc8d83 (diff) | |
download | org.eclipse.osee-ecf813e89a127214d826864720d57995876feaac.tar.gz org.eclipse.osee-ecf813e89a127214d826864720d57995876feaac.tar.xz org.eclipse.osee-ecf813e89a127214d826864720d57995876feaac.zip |
feature: Create ValidateAtsConfiguration navigate item
6 files changed, 155 insertions, 18 deletions
diff --git a/plugins/org.eclipse.osee.ats.config.demo/src/org/eclipse/osee/ats/config/demo/navigate/DemoNavigateViewItems.java b/plugins/org.eclipse.osee.ats.config.demo/src/org/eclipse/osee/ats/config/demo/navigate/DemoNavigateViewItems.java index f9148acdafd..dad7095ac34 100644 --- a/plugins/org.eclipse.osee.ats.config.demo/src/org/eclipse/osee/ats/config/demo/navigate/DemoNavigateViewItems.java +++ b/plugins/org.eclipse.osee.ats.config.demo/src/org/eclipse/osee/ats/config/demo/navigate/DemoNavigateViewItems.java @@ -16,6 +16,7 @@ import java.util.List; import java.util.logging.Level; import org.eclipse.osee.ats.api.data.AtsArtifactTypes; import org.eclipse.osee.ats.api.team.IAtsTeamDefinition; +import org.eclipse.osee.ats.config.ValidateAtsConfiguration; import org.eclipse.osee.ats.config.demo.PopulateDemoActions; import org.eclipse.osee.ats.config.demo.internal.Activator; import org.eclipse.osee.ats.core.config.AtsConfigCache; @@ -137,6 +138,7 @@ public class DemoNavigateViewItems implements IAtsNavigateItem { XNavigateItem healthItems = new XNavigateItem(adminItems, "Health", FrameworkImage.LASER); new ValidateAtsDatabase(healthItems); + new ValidateAtsConfiguration(healthItems); new CreateGoalTestDemoArtifacts(healthItems); XNavigateItem demoItems = new XNavigateItem(adminItems, "Demo Data", PluginUiImage.ADMIN); diff --git a/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/config/copy/CopyAtsConfigurationOperationTest.java b/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/config/copy/CopyAtsConfigurationOperationTest.java index 5623b466820..43eb6c6c1a3 100644 --- a/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/config/copy/CopyAtsConfigurationOperationTest.java +++ b/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/config/copy/CopyAtsConfigurationOperationTest.java @@ -24,6 +24,7 @@ import org.eclipse.osee.ats.health.ValidateAtsDatabase; import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.core.operation.Operations; import org.eclipse.osee.framework.core.util.XResultData; +import org.eclipse.osee.framework.jdk.core.type.CountingMap; import org.eclipse.osee.framework.jdk.core.type.HashCollection; import org.eclipse.osee.framework.skynet.core.artifact.Artifact; import org.junit.AfterClass; @@ -57,8 +58,9 @@ public class CopyAtsConfigurationOperationTest { Assert.assertEquals(5, ais.size()); HashCollection<String, String> testNameToResultsMap = new HashCollection<String, String>(); + CountingMap<String> testNameToTimeSpentMap = new CountingMap<String>(); Collection<Artifact> aiaArts = AtsObjectsClient.getArtifacts(ais); - ValidateAtsDatabase.testActionableItemToTeamDefinition(testNameToResultsMap, aiaArts); + ValidateAtsDatabase.testActionableItemToTeamDefinition(aiaArts, testNameToResultsMap, testNameToTimeSpentMap); Assert.assertEquals(0, testNameToResultsMap.size()); } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/config/ValidateAtsConfiguration.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/config/ValidateAtsConfiguration.java new file mode 100644 index 00000000000..3c07be6cf12 --- /dev/null +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/config/ValidateAtsConfiguration.java @@ -0,0 +1,96 @@ +/******************************************************************************* + * Copyright (c) 2004, 2007 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.config; + +import java.util.Arrays; +import java.util.List; +import java.util.Map.Entry; +import java.util.logging.Level; +import org.eclipse.osee.ats.api.data.AtsArtifactTypes; +import org.eclipse.osee.ats.core.client.util.AtsUtilCore; +import org.eclipse.osee.ats.health.ValidateAtsDatabase; +import org.eclipse.osee.ats.internal.Activator; +import org.eclipse.osee.ats.util.AtsUtil; +import org.eclipse.osee.framework.core.enums.DeletionFlag; +import org.eclipse.osee.framework.core.exception.OseeCoreException; +import org.eclipse.osee.framework.core.util.XResultData; +import org.eclipse.osee.framework.jdk.core.type.CountingMap; +import org.eclipse.osee.framework.jdk.core.type.HashCollection; +import org.eclipse.osee.framework.jdk.core.type.MutableInteger; +import org.eclipse.osee.framework.logging.OseeLog; +import org.eclipse.osee.framework.skynet.core.artifact.Artifact; +import org.eclipse.osee.framework.skynet.core.artifact.search.ArtifactQuery; +import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction; +import org.eclipse.osee.framework.skynet.core.transaction.TransactionManager; +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.FrameworkImage; +import org.eclipse.osee.framework.ui.skynet.results.XResultDataUI; + +/** + * @author Donald G. Dunne + */ +public class ValidateAtsConfiguration extends XNavigateItemAction { + + public ValidateAtsConfiguration(XNavigateItem parent) { + super(parent, "Validate ATS Configuration", FrameworkImage.GEAR); + } + + @Override + public void run(TableLoadOption... tableLoadOptions) { + XResultData rd = new XResultData(); + rd.log(getName()); + + try { + List<Artifact> configArts = + ArtifactQuery.getArtifactListFromType( + Arrays.asList(AtsArtifactTypes.TeamDefinition, AtsArtifactTypes.ActionableItem, AtsArtifactTypes.Version), + AtsUtilCore.getAtsBranchToken(), DeletionFlag.EXCLUDE_DELETED); + SkynetTransaction transaction = TransactionManager.createTransaction(AtsUtil.getAtsBranchToken(), getName()); + + CountingMap<String> testNameToTimeSpentMap = new CountingMap<String>(); + HashCollection<String, String> testNameToResultsMap = new HashCollection<String, String>(); + + ValidateAtsDatabase.testAtsAttributeValues(transaction, testNameToTimeSpentMap, testNameToResultsMap, true, + configArts); + ValidateAtsDatabase.testVersionArtifacts(configArts, testNameToResultsMap, testNameToTimeSpentMap); + ValidateAtsDatabase.testActionableItemToTeamDefinition(configArts, testNameToResultsMap, + testNameToTimeSpentMap); + ValidateAtsDatabase.testTeamDefinitions(configArts, testNameToResultsMap, testNameToTimeSpentMap); + ValidateAtsDatabase.testParallelConfig(configArts, testNameToResultsMap, testNameToTimeSpentMap); + + // Log counts of types checked + logCounts(configArts, testNameToResultsMap); + + // Log results + ValidateAtsDatabase.addResultsMapToResultData(rd, testNameToResultsMap); + ValidateAtsDatabase.addTestTimeMapToResultData(rd, testNameToTimeSpentMap); + + transaction.execute(); + } catch (OseeCoreException ex) { + OseeLog.log(Activator.class, Level.SEVERE, ex); + } + + XResultDataUI.report(rd, getName()); + } + + private void logCounts(List<Artifact> configArts, HashCollection<String, String> testNameToResultsMap) { + CountingMap<String> typeToCount = new CountingMap<String>(); + for (Artifact art : configArts) { + typeToCount.put(art.getArtifactTypeName()); + } + for (Entry<String, MutableInteger> type : typeToCount.getCounts()) { + testNameToResultsMap.put("Type Counts", + String.format("%d of type %s", type.getValue().getValue(), type.getKey())); + } + } +} diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/config/copy/CopyAtsValidation.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/config/copy/CopyAtsValidation.java index f0c95224a21..719eac4aa20 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/config/copy/CopyAtsValidation.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/config/copy/CopyAtsValidation.java @@ -20,6 +20,7 @@ import org.eclipse.osee.ats.core.config.TeamDefinitions; import org.eclipse.osee.ats.health.ValidateAtsDatabase; import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.core.util.XResultData; +import org.eclipse.osee.framework.jdk.core.type.CountingMap; import org.eclipse.osee.framework.jdk.core.type.HashCollection; import org.eclipse.osee.framework.skynet.core.artifact.Artifact; @@ -53,11 +54,12 @@ public class CopyAtsValidation { private void performValidateAtsDatabaseChecks() throws OseeCoreException { HashCollection<String, String> testNameToResultsMap = new HashCollection<String, String>(); + CountingMap<String> testNameToTimeSpentMap = new CountingMap<String>(); // Validate AIs to TeamDefs Set<Artifact> aias = new HashSet<Artifact>(); aias.addAll(AtsObjectsClient.getArtifacts(ActionableItems.getActionableItemsFromItemAndChildren(configData.getActionableItem()))); - ValidateAtsDatabase.testActionableItemToTeamDefinition(testNameToResultsMap, aias); + ValidateAtsDatabase.testActionableItemToTeamDefinition(aias, testNameToResultsMap, testNameToTimeSpentMap); // Validate TeamDefs have Workflow Definitions Set<IAtsTeamDefinition> teamDefs = new HashSet<IAtsTeamDefinition>(); diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/health/ValidateAtsDatabase.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/health/ValidateAtsDatabase.java index a21a33d9b72..a061bba9382 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/health/ValidateAtsDatabase.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/health/ValidateAtsDatabase.java @@ -225,11 +225,12 @@ public class ValidateAtsDatabase extends WorldXNavigateItemAction { testReviewsHaveValidDefectAndRoleXml(artifacts); testTeamWorkflows(artifacts); testAtsBranchManager(artifacts); - testTeamDefinitions(artifacts); - testVersionArtifacts(artifacts); + testTeamDefinitions(artifacts, testNameToResultsMap, testNameToTimeSpentMap); + testVersionArtifacts(artifacts, testNameToResultsMap, testNameToTimeSpentMap); + testParallelConfig(artifacts, testNameToResultsMap, testNameToTimeSpentMap); testStateMachineAssignees(artifacts); testAtsLogs(artifacts); - testActionableItemToTeamDefinition(artifacts); + testActionableItemToTeamDefinition(artifacts, testNameToResultsMap, testNameToTimeSpentMap); for (IAtsHealthCheck atsHealthCheck : AtsHealthCheck.getAtsHealthCheckItems()) { atsHealthCheck.validateAtsDatabase(artifacts, testNameToResultsMap, testNameToTimeSpentMap); @@ -241,7 +242,7 @@ public class ValidateAtsDatabase extends WorldXNavigateItemAction { } // Log resultMap data into xResultData addResultsMapToResultData(xResultData, testNameToResultsMap); - addTestTimeMapToResultData(xResultData); + addTestTimeMapToResultData(xResultData, testNameToTimeSpentMap); } finally { OseeEventManager.setDisableEvents(false); } @@ -460,7 +461,7 @@ public class ValidateAtsDatabase extends WorldXNavigateItemAction { } } - private void addTestTimeMapToResultData(XResultData xResultData) { + public static void addTestTimeMapToResultData(XResultData xResultData, CountingMap<String> testNameToTimeSpentMap) { xResultData.log("\n\nTime Spent in Tests"); long totalTime = 0; for (Entry<String, MutableInteger> entry : testNameToTimeSpentMap.getCounts()) { @@ -571,7 +572,7 @@ public class ValidateAtsDatabase extends WorldXNavigateItemAction { testNameToTimeSpentMap.put(testName, spent); } - private void testVersionArtifacts(Collection<Artifact> artifacts) { + public static void testVersionArtifacts(Collection<Artifact> artifacts, HashCollection<String, String> testNameToResultsMap, CountingMap<String> testNameToTimeSpentMap) { Date date = new Date(); for (Artifact artifact : artifacts) { if (artifact.isDeleted()) { @@ -583,8 +584,14 @@ public class ValidateAtsDatabase extends WorldXNavigateItemAction { try { String parentBranchGuid = version.getBaslineBranchGuid(); if (Strings.isValid(parentBranchGuid)) { - validateBranchGuid(version, parentBranchGuid); + validateBranchGuid(version, parentBranchGuid, testNameToResultsMap, testNameToTimeSpentMap); } + + if (AtsVersionService.get().getTeamDefinition(version) == null) { + testNameToResultsMap.put("testVersionArtifacts", + "Error: " + version.toStringWithId() + " not related to Team Definition"); + } + } catch (Exception ex) { testNameToResultsMap.put( "testVersionArtifacts", @@ -596,7 +603,36 @@ public class ValidateAtsDatabase extends WorldXNavigateItemAction { logTestTimeSpent(date, "testVersionArtifacts", testNameToTimeSpentMap); } - private void testTeamDefinitions(Collection<Artifact> artifacts) { + public static void testParallelConfig(List<Artifact> artifacts, HashCollection<String, String> testNameToResultsMap, CountingMap<String> testNameToTimeSpentMap) { + Date date = new Date(); + for (Artifact artifact : artifacts) { + if (artifact.isDeleted()) { + continue; + } + if (artifact.isOfType(AtsArtifactTypes.Version)) { + IAtsVersion version = AtsConfigCache.instance.getSoleByGuid(artifact.getGuid(), IAtsVersion.class); + for (IAtsVersion parallelVersion : version.getParallelVersions()) { + if (parallelVersion != null) { + try { + String parentBranchGuid = parallelVersion.getBaslineBranchGuid(); + if (!Strings.isValid(parentBranchGuid)) { + testNameToResultsMap.put( + "testParallelConfig", + "Error: [" + parallelVersion.toStringWithId() + "] in parallel config without parent branch guid"); + } + } catch (Exception ex) { + testNameToResultsMap.put( + "testParallelConfig", + "Error: " + version.getName() + " exception testing testVersionArtifacts: " + ex.getLocalizedMessage()); + } + } + } + } + } + logTestTimeSpent(date, "testParallelConfig", testNameToTimeSpentMap); + } + + public static void testTeamDefinitions(Collection<Artifact> artifacts, HashCollection<String, String> testNameToResultsMap, CountingMap<String> testNameToTimeSpentMap) { Date date = new Date(); for (Artifact art : artifacts) { if (art.isDeleted()) { @@ -607,7 +643,7 @@ public class ValidateAtsDatabase extends WorldXNavigateItemAction { try { String parentBranchGuid = teamDef.getBaslineBranchGuid(); if (Strings.isValid(parentBranchGuid)) { - validateBranchGuid(teamDef, parentBranchGuid); + validateBranchGuid(teamDef, parentBranchGuid, testNameToResultsMap, testNameToTimeSpentMap); } } catch (Exception ex) { testNameToResultsMap.put("testTeamDefinitionss", @@ -671,7 +707,7 @@ public class ValidateAtsDatabase extends WorldXNavigateItemAction { logTestTimeSpent(date, "testAtsBranchManager", testNameToTimeSpentMap); } - private void validateBranchGuid(IAtsConfigObject name, String parentBranchGuid) { + public static void validateBranchGuid(IAtsConfigObject name, String parentBranchGuid, HashCollection<String, String> testNameToResultsMap, CountingMap<String> testNameToTimeSpentMap) { Date date = new Date(); try { Branch branch = BranchManager.getBranchByGuid(parentBranchGuid); @@ -920,13 +956,8 @@ public class ValidateAtsDatabase extends WorldXNavigateItemAction { logTestTimeSpent(date, "testTasksHaveParentWorkflow", testNameToTimeSpentMap); } - public void testActionableItemToTeamDefinition(Collection<Artifact> artifacts) { + public static void testActionableItemToTeamDefinition(Collection<Artifact> artifacts, HashCollection<String, String> testNameToResultsMap, CountingMap<String> testNameToTimeSpentMap) { Date date = new Date(); - testActionableItemToTeamDefinition(testNameToResultsMap, artifacts); - logTestTimeSpent(date, "testActionableItemToTeamDefinition", testNameToTimeSpentMap); - } - - public static void testActionableItemToTeamDefinition(HashCollection<String, String> testNameToResultsMap, Collection<Artifact> artifacts) { for (Artifact artifact : artifacts) { if (artifact.isDeleted()) { continue; @@ -947,6 +978,8 @@ public class ValidateAtsDatabase extends WorldXNavigateItemAction { "Error: Exception: " + ex.getLocalizedMessage()); } } + logTestTimeSpent(date, "testActionableItemToTeamDefinition", testNameToTimeSpentMap); + } private void testReviewsHaveValidDefectAndRoleXml(Collection<Artifact> artifacts) { 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 02cf23eb834..f013e7f151c 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 @@ -29,6 +29,7 @@ import org.eclipse.osee.ats.actions.NewGoal; import org.eclipse.osee.ats.api.data.AtsArtifactTypes; import org.eclipse.osee.ats.api.team.IAtsTeamDefinition; import org.eclipse.osee.ats.api.user.IAtsUser; +import org.eclipse.osee.ats.config.ValidateAtsConfiguration; import org.eclipse.osee.ats.config.editor.AtsConfigResultsEditorNavigateItem; import org.eclipse.osee.ats.core.client.util.AtsUsersClient; import org.eclipse.osee.ats.core.client.util.AtsUtilCore; @@ -213,6 +214,7 @@ public final class AtsNavigateViewItems implements XNavigateViewItems, IXNavigat XNavigateItem healthItems = new XNavigateItemFolder(adminItems, "Health"); new ValidateAtsDatabase(healthItems); + new ValidateAtsConfiguration(healthItems); new ValidateWorkspaceToDatabaseWorkDefinitions(healthItems); // new ActionNavigateItem(adminItems, new XViewerViewAction()); |