private static String formatConstantValue( Map<String, ArchetypeElementVO> elementMap, ConstantExpression exp, ExpressionItem parentExpressionItem) { String value = exp.getValue(); if (value.contains(",")) { String units = StringUtils.substringAfter(value, ","); if (isUcumTime(units)) { OperatorKind operatorKind = getOperatorKind(parentExpressionItem); if (operatorKind == null) { throw new RuntimeException(format("Operator kind not defined in expression : %s", parentExpressionItem)); } if (hasLeftVariableName(parentExpressionItem)) { String temporalVariableName = getLeftVariableNameFromExpression(elementMap, parentExpressionItem); value = format("DVUtil.calculateDuration(\"%s\",%s,\"%s\")", value, temporalVariableName, operatorKind.getSymbol()); } else { value = format("DVUtil.calculateDuration(\"%s\",\"%s\")", value, operatorKind.getSymbol()); } } else { throw new IllegalArgumentException(format("Unknown time units in value '%s'", value)); } } else if (exp instanceof MathConstant) { if (Constant.E.equals(((MathConstant) exp).getConstant())) { value = "(double) " + Math.E; } } return "(" + value + ")"; }