diff options
Diffstat (limited to 'plugins/org.eclipse.osee.define/src/org/eclipse/osee/define/traceability/report/StdCsciToTestTable.java')
-rw-r--r-- | plugins/org.eclipse.osee.define/src/org/eclipse/osee/define/traceability/report/StdCsciToTestTable.java | 169 |
1 files changed, 169 insertions, 0 deletions
diff --git a/plugins/org.eclipse.osee.define/src/org/eclipse/osee/define/traceability/report/StdCsciToTestTable.java b/plugins/org.eclipse.osee.define/src/org/eclipse/osee/define/traceability/report/StdCsciToTestTable.java new file mode 100644 index 00000000000..328d1dfb36d --- /dev/null +++ b/plugins/org.eclipse.osee.define/src/org/eclipse/osee/define/traceability/report/StdCsciToTestTable.java @@ -0,0 +1,169 @@ +/******************************************************************************* + * 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.traceability.report; + +import java.io.File; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import org.eclipse.osee.define.traceability.ArtifactOperations; +import org.eclipse.osee.define.traceability.RequirementTraceabilityData; +import org.eclipse.osee.framework.jdk.core.util.Strings; +import org.eclipse.osee.framework.jdk.core.util.io.xml.ISheetWriter; +import org.eclipse.osee.framework.skynet.core.artifact.Artifact; + +/** + * @author Roberto E. Escobar + */ +public class StdCsciToTestTable implements ISimpleTable { + + private final RequirementTraceabilityData source; + + public StdCsciToTestTable(RequirementTraceabilityData source) { + this.source = source; + } + + @Override + public String getHeader() { + StringBuilder builder = new StringBuilder(); + builder.append("<Column ss:StyleID=\"s38\" ss:Width=\"63.75\"/>"); + builder.append("<Column ss:StyleID=\"s38\" ss:Width=\"160.25\"/>"); + builder.append("<Column ss:StyleID=\"s38\" ss:Width=\"100.75\"/>"); + builder.append("<Column ss:StyleID=\"s38\" ss:Width=\"40.75\"/>"); + builder.append("<Column ss:StyleID=\"s38\" ss:Width=\"180.75\"/>"); + builder.append("<Row ss:AutoFitHeight=\"0\" ss:Height=\"13.5\">"); + builder.append("<Cell ss:MergeAcross=\"4\" ss:StyleID=\"s22\"><Data ss:Type=\"String\">Table X.X: CSCI Requirements to Test Traceability</Data></Cell>"); + builder.append("</Row>"); + builder.append("<Row ss:AutoFitHeight=\"0\" ss:Height=\"14.25\">"); + builder.append("<Cell ss:MergeAcross=\"2\" ss:StyleID=\"m151274392\"><Data ss:Type=\"String\">CSCI Requirement</Data></Cell>"); + builder.append("<Cell ss:MergeDown=\"1\" ss:StyleID=\"m151274402\"><Data ss:Type=\"String\">Test</Data></Cell>"); + builder.append("<Cell ss:MergeDown=\"1\" ss:StyleID=\"m151274412\"><Data ss:Type=\"String\">Test Script / Test Procedure</Data></Cell>"); + builder.append("</Row>"); + builder.append("<Row ss:AutoFitHeight=\"0\" ss:Height=\"14.25\">"); + builder.append("<Cell ss:StyleID=\"s24\"><Data ss:Type=\"String\">Paragraph #</Data></Cell>"); + builder.append("<Cell ss:StyleID=\"s24\"><Data ss:Type=\"String\">Paragraph Title</Data></Cell>"); + builder.append("<Cell ss:StyleID=\"s24\"><Data ss:Type=\"String\">Requirement Type</Data></Cell>"); + builder.append("</Row>"); + return builder.toString(); + } + + @Override + public String getHeaderStyles() { + StringBuilder builder = new StringBuilder(); + builder.append("<Styles><Style ss:ID=\"Default\" ss:Name=\"Normal\">"); + builder.append("<Alignment ss:Vertical=\"Bottom\"/><Borders/><Font/>"); + builder.append("<Interior/><NumberFormat/>Protection/></Style><Style ss:ID=\"m151274392\">"); + builder.append("<Alignment ss:Horizontal=\"Center\" ss:Vertical=\"Bottom\"/><Borders>"); + builder.append("<Border ss:Position=\"Bottom\" ss:LineStyle=\"Continuous\" ss:Weight=\"3\"/>"); + builder.append("<Border ss:Position=\"Left\" ss:LineStyle=\"Continuous\" ss:Weight=\"3\"/>"); + builder.append("<Border ss:Position=\"Right\" ss:LineStyle=\"Continuous\" ss:Weight=\"3\"/>"); + builder.append("<Border ss:Position=\"Top\" ss:LineStyle=\"Continuous\" ss:Weight=\"3\"/></Borders>"); + builder.append("<Font x:Family=\"Swiss\" ss:Bold=\"1\"/></Style><Style ss:ID=\"m151274402\">"); + builder.append("<Alignment ss:Horizontal=\"Center\" ss:Vertical=\"Bottom\"/><Borders>"); + builder.append("<Border ss:Position=\"Bottom\" ss:LineStyle=\"Continuous\" ss:Weight=\"3\"/>"); + builder.append("<Border ss:Position=\"Left\" ss:LineStyle=\"Continuous\" ss:Weight=\"3\"/>"); + builder.append("<Border ss:Position=\"Right\" ss:LineStyle=\"Continuous\" ss:Weight=\"3\"/>"); + builder.append("<Border ss:Position=\"Top\" ss:LineStyle=\"Continuous\" ss:Weight=\"3\"/></Borders>"); + builder.append("<Font x:Family=\"Swiss\" ss:Bold=\"1\"/></Style><Style ss:ID=\"m151274412\">"); + builder.append("<Alignment ss:Horizontal=\"Center\" ss:Vertical=\"Bottom\" ss:WrapText=\"1\"/><Borders>"); + builder.append("<Border ss:Position=\"Bottom\" ss:LineStyle=\"Continuous\" ss:Weight=\"3\"/>"); + builder.append("<Border ss:Position=\"Left\" ss:LineStyle=\"Continuous\" ss:Weight=\"3\"/>"); + builder.append("<Border ss:Position=\"Right\" ss:LineStyle=\"Continuous\" ss:Weight=\"3\"/>"); + builder.append("<Border ss:Position=\"Top\" ss:LineStyle=\"Continuous\" ss:Weight=\"3\"/></Borders>"); + builder.append("<Font x:Family=\"Swiss\" ss:Bold=\"1\"/></Style><Style ss:ID=\"s22\">"); + builder.append("<Alignment ss:Horizontal=\"Center\" ss:Vertical=\"Bottom\"/><Borders>"); + builder.append("<Border ss:Position=\"Bottom\" ss:LineStyle=\"Continuous\" ss:Weight=\"3\"/></Borders>"); + builder.append("<Font x:Family=\"Swiss\" ss:Bold=\"1\"/></Style><Style ss:ID=\"s24\">"); + builder.append("<Alignment ss:Horizontal=\"Center\" ss:Vertical=\"Bottom\"/><Borders>"); + builder.append("<Border ss:Position=\"Bottom\" ss:LineStyle=\"Continuous\" ss:Weight=\"3\"/>"); + builder.append("<Border ss:Position=\"Left\" ss:LineStyle=\"Continuous\" ss:Weight=\"3\"/>"); + builder.append("<Border ss:Position=\"Right\" ss:LineStyle=\"Continuous\" ss:Weight=\"3\"/>"); + builder.append("<Border ss:Position=\"Top\" ss:LineStyle=\"Continuous\" ss:Weight=\"3\"/>"); + builder.append("</Borders><Font x:Family=\"Swiss\" ss:Bold=\"1\"/>"); + builder.append("</Style>"); + builder.append("<Style ss:ID=\"s38\"><Alignment ss:Vertical=\"Bottom\" ss:WrapText=\"1\"/></Style>"); + builder.append("</Styles>"); + return builder.toString(); + } + + @Override + public void initializeSheet(ISheetWriter sheetWriter) throws Exception { + sheetWriter.startSheet("STD - CSCI Requirements to Test Traceability", 5); + } + + @Override + public void generateBody(ISheetWriter sheetWriter) throws Exception { + List<Artifact> requirements = ArtifactOperations.sortByParagraphNumbers(source.getAllSwRequirements()); + for (Artifact artifact : requirements) { + ArtifactOperations operations = new ArtifactOperations(artifact); + String paragraphTitle = operations.getName(); + String paragraphNumber = operations.getParagraphNumber(); + String artifactType = artifact.getArtifactTypeName(); + + String partition = + org.eclipse.osee.framework.jdk.core.util.Collections.toString(",\n", operations.getPartitions()); + + String qualificationLine = getQualificationMethod(source, artifact); + sheetWriter.writeRow(paragraphNumber, paragraphTitle, artifactType, partition, qualificationLine); + } + } + + private String getQualificationMethod(RequirementTraceabilityData source, Artifact artifact) { + StringBuilder builder = new StringBuilder(); + + String scripts = getCodeUnitLine(source, artifact); + if (Strings.isValid(scripts) != false) { + builder.append(scripts); + } + + String testProcedures = getTestProcedure(source, artifact); + if (Strings.isValid(testProcedures) != false) { + if (builder.length() > 0) { + builder.append(",\n"); + } + builder.append(testProcedures); + } + if (builder.length() == 0) { + builder.append("None"); + } + return builder.toString(); + } + + private String getCodeUnitLine(RequirementTraceabilityData source, Artifact artifact) { + String toReturn = ""; + Collection<String> codeUnits = source.getRequirementsToCodeUnits().getValues(artifact); + if (codeUnits != null) { + List<String> units = new ArrayList<String>(); + for (String codeUnit : codeUnits) { + if (Strings.isValid(codeUnit)) { + int index = codeUnit.lastIndexOf(File.separator); + codeUnit = codeUnit.substring(index + 1, codeUnit.length()); + } + units.add(codeUnit); + } + toReturn = org.eclipse.osee.framework.jdk.core.util.Collections.toString(",\n", units); + } + return toReturn; + } + + private String getTestProcedure(RequirementTraceabilityData source, Artifact artifact) { + String toReturn = ""; + Collection<Artifact> testProcedures = source.getRequirementNameToTestProcedures().getValues(artifact.getName()); + if (testProcedures != null) { + List<String> units = new ArrayList<String>(); + for (Artifact testProcedure : testProcedures) { + units.add(testProcedure.getName()); + } + toReturn = org.eclipse.osee.framework.jdk.core.util.Collections.toString(",\n", units); + } + return toReturn; + } +} |