Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/developer/org.eclipse.papyrus.uml.developer.mde/src/org/eclipse/papyrus/uml/developper/mde/command/CreateDocumentModelCommand.java')
-rw-r--r--plugins/developer/org.eclipse.papyrus.uml.developer.mde/src/org/eclipse/papyrus/uml/developper/mde/command/CreateDocumentModelCommand.java528
1 files changed, 421 insertions, 107 deletions
diff --git a/plugins/developer/org.eclipse.papyrus.uml.developer.mde/src/org/eclipse/papyrus/uml/developper/mde/command/CreateDocumentModelCommand.java b/plugins/developer/org.eclipse.papyrus.uml.developer.mde/src/org/eclipse/papyrus/uml/developper/mde/command/CreateDocumentModelCommand.java
index c5bb2936838..867a1b5e799 100644
--- a/plugins/developer/org.eclipse.papyrus.uml.developer.mde/src/org/eclipse/papyrus/uml/developper/mde/command/CreateDocumentModelCommand.java
+++ b/plugins/developer/org.eclipse.papyrus.uml.developer.mde/src/org/eclipse/papyrus/uml/developper/mde/command/CreateDocumentModelCommand.java
@@ -39,13 +39,20 @@ import org.eclipse.papyrus.infra.hyperlink.util.HyperLinkException;
import org.eclipse.papyrus.infra.hyperlink.util.HyperLinkHelpersRegistrationUtil;
import org.eclipse.papyrus.uml.developper.mde.I_DeveloperIDMStereotype;
import org.eclipse.papyrus.uml.developper.mde.I_DocumentStereotype;
+import org.eclipse.papyrus.uml.developper.mde.handler.IDMAbstractHandler;
import org.eclipse.papyrus.views.modelexplorer.NavigatorUtils;
+import org.eclipse.uml2.uml.Actor;
+import org.eclipse.uml2.uml.Association;
+import org.eclipse.uml2.uml.Behavior;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Classifier;
import org.eclipse.uml2.uml.Comment;
import org.eclipse.uml2.uml.Dependency;
import org.eclipse.uml2.uml.Element;
import org.eclipse.uml2.uml.Model;
import org.eclipse.uml2.uml.NamedElement;
import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.PackageImport;
import org.eclipse.uml2.uml.PackageableElement;
import org.eclipse.uml2.uml.Stereotype;
import org.eclipse.uml2.uml.UMLFactory;
@@ -62,10 +69,15 @@ public class CreateDocumentModelCommand extends RecordingCommand {
protected static final String HOW_TO = "How to"; //$NON-NLS-1$
protected static final String USE_CASES = "Use Cases"; //$NON-NLS-1$
private static final String SYS_ML_REQUIREMENTS_REQUIREMENT = "SysML::Requirements::Requirement"; //$NON-NLS-1$
+ private static final String SYS_ML_REQUIREMENTS_TESTCASE = "SysML::Requirements::TestCase";
protected static final String REQUIREMENTS = "Requirements"; //$NON-NLS-1$
protected org.eclipse.uml2.uml.Package topModel;
protected String directoryPath = null;
protected HyperLinkHelperFactory hyperlinkHelperFactory;
+ protected int nbUnsatisfiedRequirement = 0;
+ protected int nbUnverifiedRequirement = 0;
+ protected int nbRequirement = 0;
+
/**
*
@@ -100,43 +112,114 @@ public class CreateDocumentModelCommand extends RecordingCommand {
documentModel.setValue(stereotypeDocument, I_DocumentStereotype.DOCUMENT_AUTHOR_ATT, (topModel.getValue(stereotypeProject, I_DeveloperIDMStereotype.PROJECT_AUTHOR_ATT)));
documentModel.setValue(stereotypeDocument, I_DocumentStereotype.DOCUMENT_VERSION_ATT, (topModel.getValue(stereotypeProject, I_DeveloperIDMStereotype.PROJECT_VERSION_ATT)));
-
-
for (Iterator<Comment> iteComment = (topModel).getOwnedComments().iterator(); iteComment.hasNext();) {
Comment currentComment = iteComment.next();
+ createImageFromHyperLink(copyImageUtil, documentModel, currentComment);
transformToContentComment(documentModel, currentComment);
}
+ // generate Table Of Content package
+ createTableOfContents(documentModel, "Table of Contents");
+
// get Requirement package
- generateRequirements(documentModel);
+ Model requirementsIn = getStereotypedPackage(I_DeveloperIDMStereotype.REQUIREMENTS_STEREOTYPE);
+ if (requirementsIn != null) {
+ Package requirementsOUT = createSection(documentModel, REQUIREMENTS);
+ generateRequirements(requirementsIn, requirementsOUT);
+ }
// get UseCases package
- generateUseCases(copyImageUtil, documentModel);
- // getDesing package
- generateDesign(copyImageUtil, documentModel);
+ Model useCaseIN = getStereotypedPackage(I_DeveloperIDMStereotype.USECASES_STEREOTYPE);
+ if (useCaseIN != null) {
+ Package useCaseModelOUT = createSection(documentModel, USE_CASES);
+ generateUseCases(copyImageUtil, useCaseIN, useCaseModelOUT);
+ }
+
+ // get Design package
+ Model designPackageIn = getStereotypedPackage(I_DeveloperIDMStereotype.DESIGN_STEREOTYPE);
+ if (designPackageIn != null) {
+ Package designPackageOUT = createSection(documentModel, DESIGN);
+ generateDesign(copyImageUtil, designPackageIn, designPackageOUT);
+ }
+
+
+ Model testIN = getStereotypedPackage(I_DeveloperIDMStereotype.TESTS_STEREOTYPE);
+ if (testIN != null) {
+ Package testModelOUT = createSection(documentModel, TESTS);
+ generateTests(copyImageUtil, testIN, testModelOUT);
+ }
- generateTests(copyImageUtil, documentModel);
+ // Get the requirements model package from the model
+ Model requirementsModel = getStereotypedPackage(I_DeveloperIDMStereotype.REQUIREMENTS_STEREOTYPE);
+ // For each requirements, creates a line in the table
+ if (requirementsModel != null) {
+ Package requirementsCoverageOUT = createSection(documentModel, "Requirements Coverage");
+ generateTableCoverage(requirementsModel, requirementsCoverageOUT);
+ }
+ // Generate content of the Table of Contents package
+ generateTableOfContents(documentModel);
}
- protected void generateRequirements(Model documentModel) {
- Model requirementsIn = null;
- for (Iterator<PackageableElement> iterator = topModel.getPackagedElements().iterator(); iterator.hasNext();) {
- PackageableElement packageableElement = iterator.next();
- if ((packageableElement.getAppliedStereotype(I_DeveloperIDMStereotype.REQUIREMENTS_STEREOTYPE)) != null) {
- requirementsIn = (Model) packageableElement;
+
+ /**
+ * Generate a package which represents a section on the table of content.
+ * First, iterates on each "Section" Package of the document model.
+ * Then, retrieves if the section has owned "section" package.
+ *
+ * @param documentModel
+ */
+ protected void generateTableOfContents(Model documentModel) {
+ for (Iterator<Element> sections = documentModel.getOwnedElements().iterator(); sections.hasNext();) {
+ Element section = sections.next();
+ Stereotype sectionStereotype = section.getAppliedStereotype(I_DocumentStereotype.SECTION_STEREOTYPE);
+ if (sectionStereotype != null) {
+ Package toc = (Package) documentModel.getPackagedElement("Table of Contents");
+ Stereotype tableOfContentStereotype = toc.getAppliedStereotype(I_DocumentStereotype.TABLEOFCONTENT_STEREOTYPE);
+ if (!(section.isStereotypeApplied(tableOfContentStereotype))) {
+ Package chapter = createSection(toc, ((Package)section).getName());
+ IDMAbstractHandler.Toc2DocElt.put(chapter, (Package) section);
+ setTableOfContents(section, chapter);
+ }
}
}
+ }
- if (requirementsIn != null) {
- Package requirementsOUT = UMLFactory.eINSTANCE.createPackage();
- documentModel.getPackagedElements().add(requirementsOUT);
- Stereotype sectionStereotype = requirementsOUT.getApplicableStereotype(I_DocumentStereotype.SECTION_STEREOTYPE);
- requirementsOUT.applyStereotype(sectionStereotype);
- requirementsOUT.setName(REQUIREMENTS);
-
- for (Iterator<Element> itereq = (requirementsIn).getOwnedElements().iterator(); itereq.hasNext();) {
- Element currentReq = itereq.next();
+ /**
+ *
+ * Generate a package which represents a sub section on the table of content
+ * This is the same algorithm as @see {@link CreateDocumentModelCommand}.generateTableOfContents()
+ * This method is recursive.
+ *
+ * @param packageElement
+ * @param chapterPackage
+ */
+ protected void setTableOfContents(Element packageElement, Package chapterPackage) {
+ if (packageElement.getOwnedElements() != null) {
+ for (Iterator<Element> elements = packageElement.getOwnedElements().iterator(); elements.hasNext();) {
+ Element cddElement = elements.next();
+ Stereotype sectionStereotype = cddElement.getAppliedStereotype(I_DocumentStereotype.SECTION_STEREOTYPE);
+ if (sectionStereotype != null) {
+ Package chapter = createSection(chapterPackage, ((Package)cddElement).getName());
+ IDMAbstractHandler.Toc2DocElt.put(chapter, (Package) cddElement);
+ setTableOfContents(cddElement, chapter);
+ }
+ }
+ }
+ }
+
+
+ protected void generateRequirements(Model requirementsIn, Package requirementsOUT) {
+ for (Iterator<EObject> itereq = requirementsIn.eAllContents(); itereq.hasNext();) {
+ EObject packageableElement = itereq.next();
+ if (packageableElement instanceof PackageImport) {
+ PackageImport importedPackage = (PackageImport)packageableElement;
+ if (importedPackage.getAppliedStereotype(I_DeveloperIDMStereotype.REQUIREMENTS_STEREOTYPE) != null) {
+ Model importedRequirementPackageIn = (Model) importedPackage.getImportedPackage();
+ generateRequirements(importedRequirementPackageIn, requirementsOUT);
+ }
+ } else if (packageableElement instanceof Element){
+ Element currentReq = (Element) packageableElement;
Stereotype reqStereotype = currentReq.getApplicableStereotype(SYS_ML_REQUIREMENTS_REQUIREMENT);
if (reqStereotype != null) {
String out = "- " + ((org.eclipse.uml2.uml.Class) currentReq).getName() + " (id=" + currentReq.getValue(reqStereotype, "id") + "): "; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
@@ -146,50 +229,65 @@ public class CreateDocumentModelCommand extends RecordingCommand {
Stereotype contentStereotype = comment.getApplicableStereotype(I_DocumentStereotype.CONTENT_STEREOTYPE);
comment.applyStereotype(contentStereotype);
comment.setBody(out);
+ IDMAbstractHandler.elt2DocElt.put(currentReq, comment);
}
}
}
}
- protected Model generateUseCases(CopyToImageUtil copyImageUtil, Model documentModel) {
- Model useCaseIN = null;
- for (Iterator<PackageableElement> iterator = topModel.getPackagedElements().iterator(); iterator.hasNext();) {
- PackageableElement packageableElement = iterator.next();
- if ((packageableElement.getAppliedStereotype(I_DeveloperIDMStereotype.USECASES_STEREOTYPE)) != null) {
- useCaseIN = (Model) packageableElement;
- }
+ protected void generateUseCases(CopyToImageUtil copyImageUtil, Model useCaseIN, Package useCaseModelOUT) {
+ // createRef diagram
+ if (containedDiagrams(useCaseIN).size() > 0) {
+ Diagram currentDiagram = containedDiagrams(useCaseIN).get(0);
+ generateImg(copyImageUtil, useCaseModelOUT, currentDiagram);
+ }
+ for (Iterator<Comment> iteComment = (useCaseIN).getOwnedComments().iterator(); iteComment.hasNext();) {
+ Comment currentComment = iteComment.next();
+ transformToContentComment(useCaseModelOUT, currentComment);
+ createImageFromHyperLink(copyImageUtil, useCaseModelOUT, currentComment);
}
- if (useCaseIN != null) {
- Package useCaseModelOUT = createSection(documentModel, USE_CASES);
-
- // createRef diagram
- if (containedDiagrams(useCaseIN).size() > 0) {
- Diagram currentDiagram = containedDiagrams(useCaseIN).get(0);
- generateImg(copyImageUtil, useCaseModelOUT, currentDiagram);
+ for (PackageableElement packageableElement : useCaseIN.getPackagedElements()) {
+ if( (packageableElement instanceof Classifier) &&(!(packageableElement instanceof Actor)) &&(!(packageableElement instanceof Association) )){
+ Classifier subjectIn = (Classifier) packageableElement;
+ Package subSectionOUT = createSection(useCaseModelOUT, subjectIn.getName());
+ generateUseCaseFromSubject(copyImageUtil, subjectIn, subSectionOUT);
}
- for (Iterator<Comment> iteComment = (useCaseIN).getOwnedComments().iterator(); iteComment.hasNext();) {
- Comment currentComment = iteComment.next();
- transformToContentComment(useCaseModelOUT, currentComment);
- createImageFromHyperLink(copyImageUtil, useCaseModelOUT, currentComment);
+ }
- }
+ }
- for (Iterator<EObject> iterator = useCaseIN.eAllContents(); iterator.hasNext();) {
- EObject packageableElement = iterator.next();
- if (packageableElement instanceof UseCase) {
- Package useCaseSectionOUT = createSection(useCaseModelOUT, ((UseCase) packageableElement).getName());
+ protected void generateUseCaseFromSubject(CopyToImageUtil copyImageUtil, Classifier subjectIN, Package useCaseModelOUT){
+ // createRef diagram
+ if (containedDiagrams(subjectIN).size() > 0) {
+ Diagram currentDiagram = containedDiagrams(subjectIN).get(0);
+ generateImg(copyImageUtil, useCaseModelOUT, currentDiagram);
+ }
+ for (Iterator<Comment> iteComment = (subjectIN).getOwnedComments().iterator(); iteComment.hasNext();) {
+ Comment currentComment = iteComment.next();
+ transformToContentComment(useCaseModelOUT, currentComment);
+ createImageFromHyperLink(copyImageUtil, useCaseModelOUT, currentComment);
+ }
- for (Iterator<Comment> iteComment = ((UseCase) packageableElement).getOwnedComments().iterator(); iteComment.hasNext();) {
- Comment currentComment = iteComment.next();
- transformToContentWithUser(copyImageUtil, useCaseSectionOUT, currentComment);
- }
+ for (Iterator<EObject> iterator = subjectIN.eAllContents(); iterator.hasNext();) {
+ EObject packageableElement = iterator.next();
+ if (packageableElement instanceof UseCase) {
+ Package useCaseSectionOUT = createSection(useCaseModelOUT, ((UseCase) packageableElement).getName());
+
+ for (Iterator<Comment> iteComment = ((UseCase) packageableElement).getOwnedComments().iterator(); iteComment.hasNext();) {
+ Comment currentComment = iteComment.next();
+ transformToContentWithUser(copyImageUtil, useCaseSectionOUT, currentComment);
+ }
+ } else if (packageableElement instanceof PackageImport) {
+ PackageImport importedPackage = (PackageImport)packageableElement;
+ if (importedPackage.getAppliedStereotype(I_DeveloperIDMStereotype.USECASES_STEREOTYPE) != null) {
+ Model importedUseCasesPackageIn = (Model) importedPackage.getImportedPackage();
+ generateUseCases(copyImageUtil, importedUseCasesPackageIn, useCaseModelOUT);
}
}
-
}
- return useCaseIN;
+
}
protected void transformToContentWithUser(CopyToImageUtil copyImageUtil, Package useCaseSectionOUT, Comment currentComment) {
@@ -208,78 +306,279 @@ public class CreateDocumentModelCommand extends RecordingCommand {
}
}
- protected void generateDesign(CopyToImageUtil copyImageUtil, Model documentModel) {
- // get Design package
- Model designPackageIn = null;
- for (Iterator<PackageableElement> iterator = topModel.getPackagedElements().iterator(); iterator.hasNext();) {
- PackageableElement packageableElement = iterator.next();
- if ((packageableElement.getAppliedStereotype(I_DeveloperIDMStereotype.DESIGN_STEREOTYPE)) != null) {
- designPackageIn = (Model) packageableElement;
+ protected void generateDesign(CopyToImageUtil copyImageUtil, Package designPackageIn, Package designPackageOUT) {
+
+ if(designPackageIn.getPackageImports().size()>0){
+ for (PackageImport packageImport : designPackageIn.getPackageImports()) {
+ if (packageImport.getAppliedStereotype(I_DeveloperIDMStereotype.DESIGN_STEREOTYPE) != null) {
+ Package importedDesignPackageIn = (Package) packageImport.getImportedPackage();
+ Package subSectionOUT = createSection(designPackageOUT, importedDesignPackageIn.getName());
+ IDMAbstractHandler.elt2DocElt.put((Element) importedDesignPackageIn, subSectionOUT);
+ generateDesign(copyImageUtil, importedDesignPackageIn, subSectionOUT);
+ }
}
}
- if (designPackageIn != null) {
- Package designPackageOUT = createSection(documentModel, DESIGN);
- // createRef diagram
- if (containedDiagrams(designPackageIn).size() > 0) {
- Diagram currentDiagram = containedDiagrams(designPackageIn).get(0);
- generateImg(copyImageUtil, designPackageOUT, currentDiagram);
- }
- for (Iterator<Comment> iteComment = (designPackageIn).getOwnedComments().iterator(); iteComment.hasNext();) {
- Comment currentComment = iteComment.next();
- createImageFromHyperLink(copyImageUtil, designPackageOUT, currentComment);
- transformToContentComment(designPackageOUT, currentComment);
- }
+
+ // createRef diagram
+ if (containedDiagrams(designPackageIn).size() > 0) {
+ Diagram currentDiagram = containedDiagrams(designPackageIn).get(0);
+ generateImg(copyImageUtil, designPackageOUT, currentDiagram);
+ }
+ for (Iterator<Comment> iteComment = (designPackageIn).getOwnedComments().iterator(); iteComment.hasNext();) {
+ Comment currentComment = iteComment.next();
+ createImageFromHyperLink(copyImageUtil, designPackageOUT, currentComment);
+ transformToContentComment(designPackageOUT, currentComment);
}
+ for (Iterator<PackageableElement> iterator = designPackageIn.getPackagedElements().iterator(); iterator.hasNext();) {
+ EObject packageableElement = iterator.next();
+ if (packageableElement instanceof Class) {
+ Package designSectionOUT = createSection(designPackageOUT, ((Class)packageableElement).getName());
+ IDMAbstractHandler.elt2DocElt.put((Element) packageableElement, designSectionOUT);
+ for (Iterator<Comment> iteComment = ((Class) packageableElement).getOwnedComments().iterator(); iteComment.hasNext();) {
+ Comment currentComment = iteComment.next();
+ transformToContentWithUser(copyImageUtil, designSectionOUT, currentComment);
+ }
+ }
+ if (packageableElement instanceof Package) {
+ Package designSectionOUT = createSection(designPackageOUT, ((Package)packageableElement).getName());
+ IDMAbstractHandler.elt2DocElt.put((Element) packageableElement, designSectionOUT);
+ generateDesign(copyImageUtil, (Package)packageableElement, designSectionOUT);
+ }
+ }
}
- protected Model generateTests(CopyToImageUtil copyImageUtil, Model documentModel) {
- Model testIN = null;
- for (Iterator<PackageableElement> iterator = topModel.getPackagedElements().iterator(); iterator.hasNext();) {
- PackageableElement packageableElement = iterator.next();
- if ((packageableElement.getAppliedStereotype(I_DeveloperIDMStereotype.TESTS_STEREOTYPE)) != null) {
- testIN = (Model) packageableElement;
+
+ protected void generateTests(CopyToImageUtil copyImageUtil, Package testIN, Package testModelOUT) {
+ if(testIN.getPackageImports().size()>0){
+ for (PackageImport packageImport : testIN.getPackageImports()) {
+ if (packageImport.getAppliedStereotype(I_DeveloperIDMStereotype.EXECUTABLETEST_STEREOTYPE) != null
+ || packageImport.getAppliedStereotype(SYS_ML_REQUIREMENTS_TESTCASE) != null
+ || packageImport.getAppliedStereotype(I_DeveloperIDMStereotype.MANUALTEST_STEREOTYPE) != null) {
+ Model importedTestPackageIn = (Model) packageImport.getImportedPackage();
+ generateTests(copyImageUtil, importedTestPackageIn, testModelOUT);
+ }
}
}
- if (testIN != null) {
- Package testModelOUT = createSection(documentModel, TESTS);
+ // createRef diagram
+ if (containedDiagrams(testIN).size() > 0) {
+ Diagram currentDiagram = containedDiagrams(testIN).get(0);
+ generateImg(copyImageUtil, testModelOUT, currentDiagram);
+ }
+ for (Iterator<Comment> iteComment = (testIN).getOwnedComments().iterator(); iteComment.hasNext();) {
+ Comment currentComment = iteComment.next();
+ createImageFromHyperLink(copyImageUtil, testModelOUT, currentComment);
+ transformToContentComment(testModelOUT, currentComment);
+ }
- // createRef diagram
- if (containedDiagrams(testIN).size() > 0) {
- Diagram currentDiagram = containedDiagrams(testIN).get(0);
- generateImg(copyImageUtil, testModelOUT, currentDiagram);
+ for (Iterator<PackageableElement> iterator = testIN.getPackagedElements().iterator(); iterator.hasNext();) {
+ EObject packageableElement = iterator.next();
+
+ if (packageableElement instanceof Package) {
+ Package testCaseSectionOUT = createSection(testModelOUT, ((Package) packageableElement).getName());
+ IDMAbstractHandler.elt2DocElt.put((Element) packageableElement, testCaseSectionOUT);
+ generateTests(copyImageUtil, (Package)packageableElement, testCaseSectionOUT);
+ for (Iterator<Comment> iteComment = ((Package) packageableElement).getOwnedComments().iterator(); iteComment.hasNext();) {
+ Comment currentComment = iteComment.next();
+ createImageFromHyperLink(copyImageUtil, testCaseSectionOUT, currentComment);
+ transformToContentComment(testCaseSectionOUT, currentComment);
+ }
}
- for (Iterator<Comment> iteComment = (testIN).getOwnedComments().iterator(); iteComment.hasNext();) {
- Comment currentComment = iteComment.next();
- transformToContentComment(testModelOUT, currentComment);
-
+ else if (packageableElement instanceof Behavior ||packageableElement instanceof Classifier) {
+
+ Package testCaseSectionOUT = createSection(testModelOUT, ((NamedElement) packageableElement).getName());
+ IDMAbstractHandler.elt2DocElt.put((Element) packageableElement, testCaseSectionOUT);
+ for (Iterator<Comment> iteComment = ((NamedElement) packageableElement).getOwnedComments().iterator(); iteComment.hasNext();) {
+ Comment currentComment = iteComment.next();
+ createImageFromHyperLink(copyImageUtil, testCaseSectionOUT, currentComment);
+ transformToContentComment(testCaseSectionOUT, currentComment);
+ }
}
- for (Iterator<EObject> iterator = testIN.eAllContents(); iterator.hasNext();) {
- EObject packageableElement = iterator.next();
- if (packageableElement instanceof UseCase) {
- Package useCaseSectionOUT = createSection(testModelOUT, ((UseCase) packageableElement).getName());
- for (Iterator<Comment> iteComment = ((UseCase) packageableElement).getOwnedComments().iterator(); iteComment.hasNext();) {
- Comment currentComment = iteComment.next();
- transformToContentComment(useCaseSectionOUT, currentComment);
+ }
+ }
+
+ /**
+ *
+ * Generate the Requirements Coverage "Section" Package in the document model.
+ * First, retrieves the requirements package in the model.
+ * Then, for each requirement, create a comment with "Line" stereotype.
+ * A line has cells, and those cells are represented by a comment with the "Cell" stereotype.
+ * And a cell has contents, those contents are represented by a comment with the "CellContent" stereotype
+ *
+ * @param documentModel
+ */
+ protected void generateTableCoverage(Model requirementsModel, Package requirementsCoverageOUT) {
+
+ // Create the comment with the table stereotype
+ Comment table = requirementsCoverageOUT.createOwnedComment();
+ table.setBody("Requirements Coverage Table");
+
+ Comment unsatisfiedRequirementComment = requirementsCoverageOUT.createOwnedComment();
+ unsatisfiedRequirementComment.setBody("");
+ Stereotype contentStereotype = unsatisfiedRequirementComment.getApplicableStereotype(I_DocumentStereotype.CONTENT_STEREOTYPE);
+ unsatisfiedRequirementComment.applyStereotype(contentStereotype);
+
+ Comment unverifiedRequirementComment = requirementsCoverageOUT.createOwnedComment();
+ unverifiedRequirementComment.setBody("");
+ unverifiedRequirementComment.applyStereotype(contentStereotype);
+
+ // "Loads" stereotypes will be used
+ Stereotype tableStereotype = table.getApplicableStereotype(I_DocumentStereotype.TABLE_STEREOTYPE);
+
+ // Add the caption of the table
+ table.applyStereotype(tableStereotype);
+ table.setValue(tableStereotype, I_DocumentStereotype.TABLE_CAPTION_ATT, "RequirementsCoverageTable");
+
+ setTableCoverage(requirementsModel, requirementsCoverageOUT, table, unsatisfiedRequirementComment, unverifiedRequirementComment);
+ }
+
+ public void setTableCoverage(Model requirementsModel, Package requirementsCoverageOUT, Comment table, Comment unsatisfiedRequirementComment, Comment unverifiedRequirementComment) {
+
+ // "Loads" stereotypes will be used
+ Stereotype refContentStereotype = table.getApplicableStereotype(I_DocumentStereotype.REF_CONTENT_STEREOTYPE);
+ Stereotype cellStereotype = table.getApplicableStereotype(I_DocumentStereotype.CELL_STEREOTYPE);
+ Stereotype lineStereotype = table.getApplicableStereotype(I_DocumentStereotype.LINE_STEREOTYPE);
+
+ // Iterates for each requirements
+ for (Iterator<EObject> itereq = requirementsModel.eAllContents(); itereq.hasNext();) {
+ EObject packageableElement = itereq.next();
+ if (packageableElement instanceof PackageImport) {
+ PackageImport importedPackage = (PackageImport)packageableElement;
+ if (importedPackage.getAppliedStereotype(I_DeveloperIDMStereotype.REQUIREMENTS_STEREOTYPE) != null) {
+ Model importedRequirementPackageIn = (Model) importedPackage.getImportedPackage();
+ setTableCoverage(importedRequirementPackageIn, requirementsCoverageOUT, table, unsatisfiedRequirementComment, unverifiedRequirementComment);
+ }
+ } else if (packageableElement instanceof Element) {
+
+ Element currentReq = (Element) packageableElement;
+ Stereotype reqStereotype = currentReq.getApplicableStereotype(SYS_ML_REQUIREMENTS_REQUIREMENT);
+ if (reqStereotype != null) {
+ nbRequirement++;
+ String reqID = (String) currentReq.getValue(reqStereotype, "id");
+
+ // Generate line of the table
+ Comment lineComment = table.createOwnedComment();
+ lineComment.applyStereotype(lineStereotype);
+ lineComment.setBody("Line for the requirement with " + reqID + " as id");
+
+ // Generate the cell ID of the table
+ Comment commentCellID = lineComment.createOwnedComment();
+ commentCellID.applyStereotype(cellStereotype);
+
+ commentCellID.setBody("Requirement ID");
+
+ // Generate the cellContent for the cell ID of the table
+ Comment commentContentID = commentCellID.createOwnedComment();
+ commentContentID.applyStereotype(refContentStereotype);
+
+ if (currentReq instanceof NamedElement) {
+ commentContentID.setBody(reqID);
}
- ArrayList<NamedElement> test = getAllDependentElement((UseCase) packageableElement, topModel);
- for (Iterator<NamedElement> iteratorTest = test.iterator(); iteratorTest.hasNext();) {
- NamedElement currentTest = iteratorTest.next();
- createSection(useCaseSectionOUT, currentTest.getName());
+ commentContentID.setValue(refContentStereotype, I_DocumentStereotype.REF_CONTENT_REF_ATT, currentReq);
+
+ // Generate SatisfiedBy cell of the table
+ Comment satisfiedByCell = lineComment.createOwnedComment();
+ satisfiedByCell.applyStereotype(cellStereotype);
+
+ @SuppressWarnings("unchecked")
+ List<NamedElement> cddSatisfiedBy = (List<NamedElement>) currentReq.getValue(reqStereotype, "satisfiedBy");
+
+ /* If the requirement is unsatisfied,
+ * add it to the unsatisfiedRequirement list (for tracability)
+ * creates a comment with the cellContentStereotype (to add reference in the documentation)
+ */
+ if (cddSatisfiedBy.size() == 0) {
+ nbUnsatisfiedRequirement++;
+
+ Comment unsatisfiedReq = unsatisfiedRequirementComment.createOwnedComment();
+ unsatisfiedReq.applyStereotype(refContentStereotype);
+ unsatisfiedReq.setValue(refContentStereotype, I_DocumentStereotype.REF_CONTENT_REF_ATT, currentReq);
+ unsatisfiedReq.setBody((String) currentReq.getValue(reqStereotype, "id"));
+ }
+
+ /* Iterate on satisfied elements of the requirements.
+ * For each one, create the cellContent.
+ * Then, add it to the SatisfiedBy cell of the table */
+ for (Iterator<NamedElement> iterSatisified = cddSatisfiedBy.iterator(); iterSatisified.hasNext();) {
+ NamedElement satisfiedElement = iterSatisified.next();
+
+ Comment satisfiedByCellContent = satisfiedByCell.createOwnedComment();
+ satisfiedByCellContent.applyStereotype(refContentStereotype);
+ satisfiedByCellContent.setValue(refContentStereotype, I_DocumentStereotype.REF_CONTENT_REF_ATT, satisfiedElement);
+
+ satisfiedByCellContent.setBody(satisfiedElement.getName());
+ }
+
+ satisfiedByCell.setBody("Satisfied elements");
+
+ // Generate VerifiedBy cell of the table
+ Comment verifiedByCell = lineComment.createOwnedComment();
+ verifiedByCell.applyStereotype(cellStereotype);
+
+ @SuppressWarnings("unchecked")
+ List<NamedElement> cddVerifiededBy = (List<NamedElement>) currentReq.getValue(reqStereotype, "verifiedBy");
+
+ /* If the requirement is unverified,
+ * add it to the unverifiedRequirement list (for tracability)
+ * creates a comment with the cellContentStereotype (to add reference in the documentation)
+ */
+ if (cddVerifiededBy.size() == 0) {
+ nbUnverifiedRequirement++;
+
+ Comment unverifiedReq = unverifiedRequirementComment.createOwnedComment();
+ unverifiedReq.applyStereotype(refContentStereotype);
+ unverifiedReq.setValue(refContentStereotype, I_DocumentStereotype.REF_CONTENT_REF_ATT, currentReq);
+ unverifiedReq.setBody((String) currentReq.getValue(reqStereotype, "id"));
+ }
+
+ /* Iterate on verified elements of the requirements.
+ * For each one, create the cellContent.
+ * Then, add it to the VerifiedBy cell of the table
+ */
+ for (Iterator<NamedElement> iterVerified = cddVerifiededBy.iterator(); iterVerified.hasNext();) {
+ NamedElement verifiedElement = iterVerified.next();
+
+ Comment verifiedByCellContent = verifiedByCell.createOwnedComment();
+ verifiedByCellContent.applyStereotype(refContentStereotype);
+ verifiedByCellContent.setValue(refContentStereotype, I_DocumentStereotype.REF_CONTENT_REF_ATT, verifiedElement);
+
+ verifiedByCellContent.setBody(verifiedElement.getName()) ;
}
+
+ verifiedByCell.setBody("Verified elements");
}
+ unsatisfiedRequirementComment.setBody("Unsatisfied requirements (" + nbUnsatisfiedRequirement + " out of " + nbRequirement + ") : ");
+ unverifiedRequirementComment.setBody("Unverified requirements (" + nbUnverifiedRequirement + " out of " + nbRequirement + ") : ");
}
+ }
+ }
+ /**
+ *
+ * Return the stereotyped model element.
+ *
+ * @param stereotypeName
+ * @return
+ */
+ public Model getStereotypedPackage(String stereotypeName) {
+ Model cddModel = null;
+ for (Iterator<PackageableElement> iterator = topModel.getPackagedElements().iterator(); iterator.hasNext();) {
+ PackageableElement packageableElement = iterator.next();
+ if ((packageableElement.getAppliedStereotype(stereotypeName)) != null) {
+ cddModel = (Model) packageableElement;
+ }
}
- return testIN;
+ return cddModel;
}
+
+
/**
*
* @param namedElement
@@ -314,7 +613,6 @@ public class CreateDocumentModelCommand extends RecordingCommand {
try {
result = (ArrayList<HyperLinkObject>) hyperlinkHelperFactory.getAllreferenced((View) referedViews.get(0));
} catch (HyperLinkException e) {
- // TODO Auto-generated catch block
e.printStackTrace();
}
for (Iterator<HyperLinkObject> iteratorhyperlink = result.iterator(); iteratorhyperlink.hasNext();) {
@@ -338,19 +636,35 @@ public class CreateDocumentModelCommand extends RecordingCommand {
}
/**
+ * create the element table of content from the package
+ *
+ * @param documentModelOUT
+ * @param title
+ * @return
+ */
+ protected Package createTableOfContents(Package documentModelOUT, String title) {
+ Package tocPackageOUT = UMLFactory.eINSTANCE.createPackage();
+ documentModelOUT.getPackagedElements().add(tocPackageOUT);
+ Stereotype tocStereotype = tocPackageOUT.getApplicableStereotype(I_DocumentStereotype.TABLEOFCONTENT_STEREOTYPE);
+ tocPackageOUT.applyStereotype(tocStereotype);
+ tocPackageOUT.setName(title);
+ return tocPackageOUT;
+ }
+
+ /**
* create the element section from the package
*
* @param documentModelOUT
- * @param sectiontitle
+ * @param sectionTitle
* @return
*/
- protected Package createSection(Package documentModelOUT, String sectiontitle) {
- Package SectionPackageOUT = UMLFactory.eINSTANCE.createPackage();
- documentModelOUT.getPackagedElements().add(SectionPackageOUT);
- Stereotype sectionStereotype = SectionPackageOUT.getApplicableStereotype(I_DocumentStereotype.SECTION_STEREOTYPE);
- SectionPackageOUT.applyStereotype(sectionStereotype);
- SectionPackageOUT.setName(sectiontitle);
- return SectionPackageOUT;
+ protected Package createSection(Package documentModelOUT, String sectionTitle) {
+ Package sectionPackageOUT = UMLFactory.eINSTANCE.createPackage();
+ documentModelOUT.getPackagedElements().add(sectionPackageOUT);
+ Stereotype sectionStereotype = sectionPackageOUT.getApplicableStereotype(I_DocumentStereotype.SECTION_STEREOTYPE);
+ sectionPackageOUT.applyStereotype(sectionStereotype);
+ sectionPackageOUT.setName(sectionTitle);
+ return sectionPackageOUT;
}
/**

Back to the top