private static void addGTCodesInWrites(ExpressionItem expressionItem, Set<String> gtCodes) { if (expressionItem instanceof CreateInstanceExpression) { MultipleAssignmentExpression multipleAssignmentExpression = ((CreateInstanceExpression) expressionItem).getAssignment(); for (AssignmentExpression assignmentExpression : multipleAssignmentExpression.getAssignmentExpressions()) { addGTCodesInWrites(assignmentExpression, gtCodes); } } else if (expressionItem instanceof AssignmentExpression) { gtCodes.add(((AssignmentExpression) expressionItem).getVariable().getCode()); } else { throw new RuntimeException("Unknown expression '" + expressionItem.getClass().getName() + "'"); } }
private Map<String, Collection<GuideAssignmentExpression>> generateAllAssignmentsByElementIdMap() { Map<String, Collection<GuideAssignmentExpression>> allAssignmentsByElementId = new HashMap<>(); for (Guide guide : guideMap.values()) { if (guide.getDefinition() != null) { for (Rule rule : guide.getDefinition().getRules().values()) { Collection<AssignmentExpression> simpleAssignmentsFromExpressionItems = getSimpleAssignmentsFromExpressionItems(rule.getThenStatements()); for (AssignmentExpression assignmentExpression : simpleAssignmentsFromExpressionItems) { Variable variable = assignmentExpression.getVariable(); RuleReference ruleReference = new RuleReference(guide.getId(), variable.getCode()); ElementInstance elementInstance = getElementInstanceByRuleReferenceMap().get(ruleReference); if (elementInstance == null) { logger.warn("ElementInstance not found for " + ruleReference); } else { Collection<GuideAssignmentExpression> guideAssignmentExpression = allAssignmentsByElementId.computeIfAbsent(elementInstance.getId(), k -> new ArrayList<>()); guideAssignmentExpression.add(new GuideAssignmentExpression(guide.getId(), assignmentExpression)); } } } } } return allAssignmentsByElementId; }
throw new InternalErrorException(new Exception("Element for binary expression " + guideAssignmentExpression + " not found!")); gtCode = guideAssignmentExpression.getAssignmentExpression().getVariable().getCode(); ruleReference = new RuleReference(guideAssignmentExpression.getGuideId(), gtCode); ElementInstance assignmentElementInstance = getElementInstanceByRuleReferenceMap().get(ruleReference);
protected void processAssignmentExpression( RuleLineCollection ruleLines, AssignmentExpression assignmentExpression) { String gtCode = assignmentExpression.getVariable().getCode(); ExpressionItem expressionItemAux = assignmentExpression.getAssignment(); String attribute = assignmentExpression.getVariable().getAttribute(); GTCodeRuleLineElement gtCodeRuleLineElement = gtCodeElementMap.get(gtCode).getGTCodeRuleLineElement();