Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRyan D. Brooks2011-10-18 17:43:34 +0000
committerRyan D. Brooks2011-10-18 17:43:34 +0000
commit21d587afce42f5e7500ce7e6d8da75d855f74bbd (patch)
tree0044013219a8ea07c404012f9966573bad18e582
parent50eeab91fa90dcbdc1fe52abb847f9e9d9b63045 (diff)
downloadorg.eclipse.osee-21d587afce42f5e7500ce7e6d8da75d855f74bbd.tar.gz
org.eclipse.osee-21d587afce42f5e7500ce7e6d8da75d855f74bbd.tar.xz
org.eclipse.osee-21d587afce42f5e7500ce7e6d8da75d855f74bbd.zip
feature: Create system leve SSDD Report0.9.9.v201110190003_SR2
-rw-r--r--plugins/org.eclipse.osee.define/plugin.xml8
-rw-r--r--plugins/org.eclipse.osee.define/src/org/eclipse/osee/define/blam/operation/PublishSystemLevelSSDD.java172
2 files changed, 180 insertions, 0 deletions
diff --git a/plugins/org.eclipse.osee.define/plugin.xml b/plugins/org.eclipse.osee.define/plugin.xml
index 3ececfc9575..8ce7005838b 100644
--- a/plugins/org.eclipse.osee.define/plugin.xml
+++ b/plugins/org.eclipse.osee.define/plugin.xml
@@ -235,4 +235,12 @@
</action>
</actionSet>
</extension>
+ <extension
+ id="org.eclipse.osee.define.blam.operation.PublishSystemLevelSSDD"
+ name="org.eclipse.osee.define.blam.operation.PublishSystemLevelSSDD"
+ point="org.eclipse.osee.framework.ui.skynet.BlamOperation">
+ <Operation
+ className="org.eclipse.osee.define.blam.operation.PublishSystemLevelSSDD">
+ </Operation>
+ </extension>
</plugin>
diff --git a/plugins/org.eclipse.osee.define/src/org/eclipse/osee/define/blam/operation/PublishSystemLevelSSDD.java b/plugins/org.eclipse.osee.define/src/org/eclipse/osee/define/blam/operation/PublishSystemLevelSSDD.java
new file mode 100644
index 00000000000..623e100bf00
--- /dev/null
+++ b/plugins/org.eclipse.osee.define/src/org/eclipse/osee/define/blam/operation/PublishSystemLevelSSDD.java
@@ -0,0 +1,172 @@
+/*******************************************************************************
+ * Copyright (c) 2011 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.define.blam.operation;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Set;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.osee.framework.core.data.IOseeBranch;
+import org.eclipse.osee.framework.core.enums.CoreArtifactTypes;
+import org.eclipse.osee.framework.core.enums.CoreAttributeTypes;
+import org.eclipse.osee.framework.core.enums.CoreRelationTypes;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.jdk.core.type.HashCollection;
+import org.eclipse.osee.framework.jdk.core.util.Lib;
+import org.eclipse.osee.framework.jdk.core.util.io.CharBackedInputStream;
+import org.eclipse.osee.framework.jdk.core.util.io.xml.ExcelXmlWriter;
+import org.eclipse.osee.framework.jdk.core.util.io.xml.ISheetWriter;
+import org.eclipse.osee.framework.plugin.core.util.AIFile;
+import org.eclipse.osee.framework.plugin.core.util.OseeData;
+import org.eclipse.osee.framework.skynet.core.OseeSystemArtifacts;
+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.utility.Requirements;
+import org.eclipse.osee.framework.ui.skynet.blam.AbstractBlam;
+import org.eclipse.osee.framework.ui.skynet.blam.VariableMap;
+import org.eclipse.swt.program.Program;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class PublishSystemLevelSSDD extends AbstractBlam {
+ private CharBackedInputStream charBak;
+ private ISheetWriter excelWriter;
+ private List<Artifact> sysReqs;
+ private Artifact[] allSubsystems;
+ private final HashCollection<Artifact, Artifact> subsystemToRequirements;
+
+ @Override
+ public String getName() {
+ return "Publish System Level SSDD";
+ }
+
+ public PublishSystemLevelSSDD() {
+ subsystemToRequirements = new HashCollection<Artifact, Artifact>(false, LinkedList.class);
+ }
+
+ private void init() throws IOException {
+ charBak = new CharBackedInputStream();
+ excelWriter = new ExcelXmlWriter(charBak.getWriter());
+ subsystemToRequirements.clear();
+ }
+
+ @Override
+ public void runOperation(VariableMap variableMap, IProgressMonitor monitor) throws Exception {
+ monitor.beginTask("Generating System Level SSDD", 100);
+
+ IOseeBranch branch = variableMap.getBranch("Branch");
+
+ init();
+
+ monitor.subTask("Aquiring System Components"); // bulk load for performance reasons
+ ArtifactQuery.getArtifactListFromType(CoreArtifactTypes.Component, branch);
+
+ monitor.subTask("Aquiring System Requirements");
+ ArtifactQuery.getArtifactListFromType(CoreArtifactTypes.SystemRequirement, branch);
+
+ Artifact root = OseeSystemArtifacts.getDefaultHierarchyRootArtifact(branch);
+ sysReqs = root.getChild(Requirements.SYSTEM_REQUIREMENTS).getDescendants();
+
+ getSubsystemList();
+
+ monitor.subTask("5.2 System Requirement Allocation To Subsystems");
+ writeSystemRequirementAllocationToSubsystems();
+ for (Artifact subsystem : allSubsystems) {
+ writeSystemRequirementAllocationBySubsystem(subsystem);
+ }
+
+ excelWriter.endWorkbook();
+ IFile iFile = OseeData.getIFile("SystemLevelSSDD_" + Lib.getDateTimeString() + ".xml");
+ AIFile.writeToFile(iFile, charBak);
+ Program.launch(iFile.getLocation().toOSString());
+ }
+
+ private void getSubsystemList() throws OseeCoreException {
+ for (Artifact systemRequirement : sysReqs) {
+ for (Artifact subsystem : systemRequirement.getRelatedArtifacts(CoreRelationTypes.Allocation__Component)) {
+ subsystemToRequirements.put(subsystem, systemRequirement);
+ }
+ }
+ Set<Artifact> subsystemsSet = subsystemToRequirements.keySet();
+ allSubsystems = new Artifact[subsystemsSet.size()];
+ subsystemsSet.toArray(allSubsystems);
+ Arrays.sort(allSubsystems);
+ }
+
+ private void writeSystemRequirementAllocationToSubsystems() throws IOException, OseeCoreException {
+ excelWriter.startSheet("5.2", 200);
+
+ excelWriter.writeCell("Paragraph Number");
+ excelWriter.writeCell(CoreArtifactTypes.Component.getName());
+ for (Artifact subsystem : allSubsystems) {
+ excelWriter.writeCell(subsystem.getName());
+ }
+ excelWriter.endRow();
+
+ excelWriter.writeRow("5.2 System Requirement Allocation to Subsystems");
+ for (Artifact systemRequirement : sysReqs) {
+ writeSystemRequirementAllocation(systemRequirement);
+ }
+ excelWriter.endSheet();
+ }
+
+ private void writeSystemRequirementAllocationBySubsystem(Artifact subsystem) throws IOException, OseeCoreException {
+ excelWriter.startSheet(subsystem.getName(), 200);
+ excelWriter.writeRow("System Requirements Allocated to the " + subsystem.getName());
+ excelWriter.writeRow("Paragraph Number", CoreArtifactTypes.SystemRequirement.getName(), "Notes <rationale>");
+
+ for (Artifact systemRequirement : subsystemToRequirements.getValues(subsystem)) {
+ for (Artifact component : systemRequirement.getRelatedArtifacts(CoreRelationTypes.Allocation__Component)) {
+ if (component.equals(subsystem)) {
+ String rationale =
+ systemRequirement.getRelationRationale(component, CoreRelationTypes.Allocation__Component);
+ if (rationale.equals("")) {
+ rationale = null;
+ }
+ excelWriter.writeRow(systemRequirement.getSoleAttributeValue(CoreAttributeTypes.ParagraphNumber, ""),
+ systemRequirement.getName(), rationale);
+ }
+ }
+ }
+
+ excelWriter.endSheet();
+ }
+
+ private void writeSystemRequirementAllocation(Artifact systemRequirement) throws IOException, OseeCoreException {
+ excelWriter.writeCell(systemRequirement.getSoleAttributeValue(CoreAttributeTypes.ParagraphNumber, ""));
+ excelWriter.writeCell(systemRequirement.getName());
+
+ List<Artifact> allocatedSubsystems =
+ new ArrayList<Artifact>(systemRequirement.getRelatedArtifacts(CoreRelationTypes.Allocation__Component));
+ Collections.sort(allocatedSubsystems);
+ for (Artifact allocatedSubsystem : allocatedSubsystems) {
+ excelWriter.writeCell("X", Arrays.binarySearch(allSubsystems, allocatedSubsystem) + 2);
+ }
+ excelWriter.endRow();
+ }
+
+ @Override
+ public String getDescriptionUsage() {
+ return "Generate Traceability tables for the System Level SSDD";
+ }
+
+ @Override
+ public Collection<String> getCategories() {
+ return Arrays.asList("Define.Publish");
+ }
+} \ No newline at end of file

Back to the top