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 + ")";
}