/// <summary> /// Sets the default requirement sets for the paragraph /// </summary> /// <param name="paragraph"></param> public void SetDefaultRequirementSets(Paragraph paragraph) { if (getDefault()) { paragraph.AppendToRequirementSet(this); } foreach (RequirementSet subRequirementSet in RequirementSets) { subRequirementSet.SetDefaultRequirementSets(paragraph); } }
/// <summary> /// Replaces the paragraph scope by the corresponding flags /// </summary> /// <param name="obj"></param> /// <param name="visitSubNodes"></param> public override void visit(Paragraph obj, bool visitSubNodes) { Specification.Paragraph paragraph = (Specification.Paragraph)obj; // WARNING : This phase is completed by the next phase to place all requirement in requirement sets // Ensures the scope is located in the flags switch (paragraph.getObsoleteScope()) { case acceptor.Paragraph_scope.aOBU: paragraph.setObsoleteScopeOnBoard(true); break; case acceptor.Paragraph_scope.aTRACK: paragraph.setObsoleteScopeTrackside(true); break; case acceptor.Paragraph_scope.aOBU_AND_TRACK: case acceptor.Paragraph_scope.defaultParagraph_scope: paragraph.setObsoleteScopeOnBoard(true); paragraph.setObsoleteScopeTrackside(true); break; case acceptor.Paragraph_scope.aROLLING_STOCK: paragraph.setObsoleteScopeRollingStock(true); break; } paragraph.setObsoleteScope(acceptor.Paragraph_scope.aFLAGS); // WARNING : do not remove the preceding phase since it still required for previous versions of EFS files // Based on the flag information, place the requirements in their corresponding requirement set // STM was never used, this information is discarded RequirementSet scope = paragraph.Dictionary.findRequirementSet(Dictionary.ScopeName, true); if (paragraph.getObsoleteScopeOnBoard()) { RequirementSet onBoard = scope.findRequirementSet(RequirementSet.OnboardScopeName, false); if (onBoard == null) { onBoard = scope.findRequirementSet(RequirementSet.OnboardScopeName, true); onBoard.setRecursiveSelection(false); onBoard.setDefault(true); } paragraph.AppendToRequirementSet(onBoard); paragraph.setObsoleteScopeOnBoard(false); } if (paragraph.getObsoleteScopeTrackside()) { RequirementSet trackSide = scope.findRequirementSet(RequirementSet.TracksideScopeName, false); if (trackSide == null) { trackSide = scope.findRequirementSet(RequirementSet.TracksideScopeName, true); trackSide.setRecursiveSelection(false); trackSide.setDefault(true); } paragraph.AppendToRequirementSet(trackSide); paragraph.setObsoleteScopeTrackside(false); } if (paragraph.getObsoleteScopeRollingStock()) { RequirementSet rollingStock = scope.findRequirementSet(RequirementSet.RollingStockScopeName, false); if (rollingStock == null) { rollingStock = scope.findRequirementSet(RequirementSet.RollingStockScopeName, true); rollingStock.setRecursiveSelection(false); rollingStock.setDefault(false); } paragraph.AppendToRequirementSet(rollingStock); paragraph.setObsoleteScopeRollingStock(false); } // Updates the functional block information based on the FunctionalBlockName field if (!string.IsNullOrEmpty(paragraph.getObsoleteFunctionalBlockName())) { RequirementSet allFunctionalBlocks = paragraph.Dictionary.findRequirementSet(Dictionary.FunctionalBlockName, true); RequirementSet functionalBlock = allFunctionalBlocks.findRequirementSet(paragraph.getObsoleteFunctionalBlockName(), true); functionalBlock.setRecursiveSelection(true); functionalBlock.setDefault(false); paragraph.AppendToRequirementSet(functionalBlock); paragraph.setObsoleteFunctionalBlockName(null); } base.visit(obj, visitSubNodes); }