sb.append(","); sb.append(getArithmeticExpressionStr(elementMap, binaryExpression.getRight(), stats, binaryExpression)); sb.append(")"); } else { .append(getArithmeticExpressionStr(elementMap, binaryExpression.getLeft(), stats, binaryExpression)); sb.append(binaryExpression.getOperator().getSymbol()); sb.append(getArithmeticExpressionStr(elementMap, binaryExpression.getRight(), stats, binaryExpression)) .append(")");
public static String toString(RuleLineElementWithValue<ExpressionItem> ruleLineElement, ExpressionItem expressionItem, String language) { if (expressionItem instanceof Variable) { return getVariableName(ruleLineElement, (Variable) expressionItem, language); } else if (expressionItem instanceof BinaryExpression) { BinaryExpression be = (BinaryExpression) expressionItem; return "(" + toString(ruleLineElement, be.getLeft(), language) + " " + be.getOperator().getSymbol() + " " + toString(ruleLineElement, be.getRight(), language) + ")"; } else if (expressionItem instanceof UnaryExpression) { UnaryExpression ue = (UnaryExpression) expressionItem; return ue.getOperator().getSymbol() + "(" + toString(ruleLineElement, ue.getOperand(), language) + ")"; } else if (expressionItem instanceof FunctionalExpression) { FunctionalExpression fe = (FunctionalExpression) expressionItem; StringBuilder sb = new StringBuilder(); String postFix = ""; for (ExpressionItem ei : fe.getItems()) { sb.append(postFix) .append(toString(ruleLineElement, ei, language)); postFix = ","; } return "(" + fe.getFunction().toString() + "(" + sb.toString() + "))"; } else if (expressionItem instanceof StringConstant) { return expressionItem.toString(); } else { return expressionItem != null ? expressionItem.toString().replace(",", " ") : null; } }
BinaryExpression be = expressionItem; ExpressionItem left = be.getLeft(); ExpressionItem right = be.getRight(); if (left instanceof Variable) { String path = ((Variable) left).getPath();
private void addSimpleConditionsFromExpressionItems(ExpressionItem expressionItem, Collection<BinaryExpression> simpleConditionsExpressionItems) { if (expressionItem instanceof BinaryExpression) { BinaryExpression binaryExpression = (BinaryExpression) expressionItem; if (OperatorKind.AND.equals(binaryExpression.getOperator()) || OperatorKind.OR.equals(binaryExpression.getOperator())) { addSimpleConditionsFromExpressionItems(binaryExpression.getLeft(), simpleConditionsExpressionItems); addSimpleConditionsFromExpressionItems(binaryExpression.getRight(), simpleConditionsExpressionItems); return; } else { if (isArithmeticOperator(binaryExpression.getOperator())) { addSimpleConditionsFromComplexExpressions(binaryExpression.getLeft(), simpleConditionsExpressionItems); addSimpleConditionsFromComplexExpressions(binaryExpression.getRight(), simpleConditionsExpressionItems); } if (!(binaryExpression.getLeft() instanceof Variable) || !(binaryExpression.getRight() instanceof ConstantExpression)) { return; //Skip conditions that are not like format 'variable op constant' } } simpleConditionsExpressionItems.add(binaryExpression); } else if (expressionItem instanceof AssignmentExpression) { AssignmentExpression assignmentExpression = (AssignmentExpression) expressionItem; addSimpleConditionsFromExpressionItems(assignmentExpression.getAssignment(), simpleConditionsExpressionItems); } }
private static void addGTCodesInReads(ExpressionItem expressionItem, Set<String> gtCodes) { if (expressionItem instanceof BinaryExpression) { BinaryExpression binaryExpression = (BinaryExpression) expressionItem; addGTCodesInReads(binaryExpression.getLeft(), gtCodes); addGTCodesInReads(binaryExpression.getRight(), gtCodes); } else if (expressionItem instanceof UnaryExpression) { UnaryExpression unaryExpression = (UnaryExpression) expressionItem; addGTCodesInReads(unaryExpression.getOperand(), gtCodes); } else if (expressionItem instanceof FunctionalExpression) { FunctionalExpression functionalExpression = (FunctionalExpression) expressionItem; for (ExpressionItem expressionItemAux : functionalExpression.getItems()) { addGTCodesInReads(expressionItemAux, gtCodes); } } else if (expressionItem instanceof AssignmentExpression) { AssignmentExpression assignmentExpression = (AssignmentExpression) expressionItem; addGTCodesInReads(assignmentExpression.getAssignment(), gtCodes); } else if (expressionItem instanceof MultipleAssignmentExpression) { MultipleAssignmentExpression multipleAssignmentExpression = (MultipleAssignmentExpression) expressionItem; for (AssignmentExpression assignmentExpression : multipleAssignmentExpression.getAssignmentExpressions()) { addGTCodesInReads(assignmentExpression, gtCodes); } } else if (expressionItem instanceof Variable) { Variable variable = (Variable) expressionItem; gtCodes.add(variable.getCode()); } else if (expressionItem instanceof ConstantExpression) { //Do nothing } else { throw new RuntimeException("Unkown expression '" + expressionItem.getClass().getName() + "'"); } }
public static String getEditableExpressionString(ExpressionItem expressionItem) { if (expressionItem instanceof Variable) { Variable var = (Variable) expressionItem; String attributePostfix = var.getAttribute() != null ? "." + var.getAttribute() : ""; return "$" + var.getCode() + attributePostfix; } else if (expressionItem instanceof BinaryExpression) { BinaryExpression be = (BinaryExpression) expressionItem; return "(" + getEditableExpressionString(be.getLeft()) + " " + be.getOperator().getSymbol() + " " + getEditableExpressionString(be.getRight()) + ")"; } else if (expressionItem instanceof UnaryExpression) { UnaryExpression ue = (UnaryExpression) expressionItem; return ue.getOperator().getSymbol() + "(" + getEditableExpressionString(ue.getOperand()) + ")"; } else if (expressionItem instanceof FunctionalExpression) { FunctionalExpression fe = (FunctionalExpression) expressionItem; StringBuilder sb = new StringBuilder(); String postFix = ""; for (ExpressionItem ei : fe.getItems()) { sb.append(postFix) .append(getEditableExpressionString(ei)); postFix = ", "; } return "(" + fe.getFunction().toString() + "(" + sb.toString() + "))"; } else { return expressionItem.toString(); } } }
ExpressionItem rightExpressionItem = guideBinaryExpressionItem.getBinaryExpression().getRight(); if (rightExpressionItem instanceof ConstantExpression) { ConstantExpression constantExpression = (ConstantExpression) rightExpressionItem;
private void addExpressionNodes(String guideId, ExpressionItem currentExpressionItem, GraphNode graphNode) throws InternalErrorException { if (currentExpressionItem instanceof BinaryExpression) { BinaryExpression binaryExpression = (BinaryExpression) currentExpressionItem; if (OperatorKind.OR.equals(binaryExpression.getOperator()) || OperatorKind.AND.equals(binaryExpression.getOperator())) { addExpressionNodes(guideId, binaryExpression.getLeft(), graphNode); addExpressionNodes(guideId, binaryExpression.getRight(), graphNode); return; } else if (isArithmeticOperator(binaryExpression.getOperator())) { addSimpleConditionsFromComplexExpressions(guideId, binaryExpression.getLeft(), graphNode); addSimpleConditionsFromComplexExpressions(guideId, binaryExpression.getRight(), graphNode); } } else if (currentExpressionItem instanceof AssignmentExpression) { AssignmentExpression assignmentExpression = (AssignmentExpression) currentExpressionItem; addExpressionNodes(guideId, assignmentExpression.getAssignment(), graphNode); } addExpressionToNode(guideId, currentExpressionItem, graphNode); }
if (binaryExpression.getRight() instanceof ConstantExpression) { ConstantExpression constantExpression = (ConstantExpression) binaryExpression.getRight(); String dvStr = constantExpression.getValue(); DataValue dv = null; eicrl.getExistenceOperatorRuleLineElement().setOperator(binaryExpression.getOperator()); } else if (binaryExpression.getRight() instanceof Variable) { Variable varRight = (Variable) binaryExpression.getRight(); String gtCodeAux = varRight.getCode(); ElementComparisonWithElementConditionRuleLine eccrl = new ElementComparisonWithElementConditionRuleLine(); eccrl.getComparisonOperatorRuleLineElement().setValue(binaryExpression.getOperator()); } else { throw new InternalErrorException(new Exception("Unknown expression '" + binaryExpression.getRight().getClass().getName() + "'")); addRuleLine(ecwnvc, ruleLines, parentRuleLine); ecwnvc.getArchetypeElementRuleLineElement().setValue(gtCodeRuleLineElement); ConstantExpression constantExpression = (ConstantExpression) binaryExpression.getRight(); String dvStr = constantExpression.getValue(); DataValue dv = parseDataValue(OpenEHRDataValues.DV_CODED_TEXT, dvStr, null); aerle.setValue(gtCodeRuleLineElement); eaccrl.getArchetypeElementAttributeRuleLineElement().setValue(aerle); eaccrl.getExpressionRuleLineElement().setValue(binaryExpression.getRight()); eaccrl.getComparisonOperatorRuleLineElement().setValue(binaryExpression.getOperator());
protected void processBinaryExpression( RuleLineCollection ruleLines, RuleLine parentRuleLine, BinaryExpression binaryExpression) { if (OperatorKind.OR.equals(binaryExpression.getOperator())) { OrOperatorRuleLine orOperatorRuleLine = new OrOperatorRuleLine(); processExpressionItem(ruleLines, orOperatorRuleLine.getLeftRuleLineBranch(), binaryExpression.getLeft()); processExpressionItem(ruleLines, orOperatorRuleLine.getRightRuleLineBranch(), binaryExpression.getRight()); addRuleLine(orOperatorRuleLine, ruleLines, parentRuleLine); } else if (OperatorKind.AND.equals(binaryExpression.getOperator())) { processExpressionItem(ruleLines, parentRuleLine, binaryExpression.getLeft()); processExpressionItem(ruleLines, parentRuleLine, binaryExpression.getRight()); } else if (OperatorKind.EQUALITY.equals(binaryExpression.getOperator()) || OperatorKind.INEQUAL.equals(binaryExpression.getOperator()) || OperatorKind.IS_A.equals(binaryExpression.getOperator()) || OperatorKind.IS_NOT_A.equals(binaryExpression.getOperator()) || OperatorKind.GREATER_THAN.equals(binaryExpression.getOperator()) || OperatorKind.GREATER_THAN_OR_EQUAL.equals(binaryExpression.getOperator()) || OperatorKind.LESS_THAN.equals(binaryExpression.getOperator()) || OperatorKind.LESS_THAN_OR_EQUAL.equals(binaryExpression.getOperator())) { processComparisonExpression(ruleLines, parentRuleLine, binaryExpression); } else { throw new InternalErrorException(new Exception("Unknown operator '" + binaryExpression.getOperator() + "'")); } }
if (binaryExpression.getLeft() instanceof Variable && !isVariableAttribute((Variable) binaryExpression.getLeft()) && binaryExpression.getRight() instanceof ConstantExpression) { Variable variable = (Variable) binaryExpression.getLeft(); ConstantExpression constantExpression2 = (ConstantExpression) binaryExpression.getRight(); String path = variable.getPath(); String dvStr = constantExpression2.getValue(); wepedrl.getExistenceOperatorRuleLineElement().setValue(binaryExpression.getOperator().getSymbol() + "null"); } else if (binaryExpression.getLeft() instanceof Variable && binaryExpression.getRight() != null) { Variable variable = (Variable) binaryExpression.getLeft(); WithElementPredicateExpressionDefinitionRuleLine wepdrl = new WithElementPredicateExpressionDefinitionRuleLine(airl); ExpressionItem expressionItemAux = binaryExpression.getRight(); wepdrl.getExpressionRuleLineElement().setValue(expressionItemAux); wepdrl.getComparisonOperatorRuleLineElement().setValue(binaryExpression.getOperator());