}
if (parameters.getParameterCount() > 4)
{
throw EvaluationException.getInstance(LibFormulaErrorValue.ERROR_ARGUMENTS_VALUE);
}
final TypeRegistry typeRegistry = context.getTypeRegistry();
final String dateString = typeRegistry.convertToText(parameters.getType(0), parameters.getValue(0));
final String pattern = typeRegistry.convertToText(parameters.getType(1), parameters.getValue(1));
final Locale locale;
if (parameters.getParameterCount() > 2)
{
final String localeText = typeRegistry.convertToText(parameters.getType(2), parameters.getValue(2));
if (StringUtils.isEmpty(localeText))
{
locale = context.getLocalizationContext().getLocale();
}
else
{
locale = parseLocale(localeText);
}
}
else
{
locale = context.getLocalizationContext().getLocale();
}
final TimeZone timeZone;
if (parameters.getParameterCount() > 3)
{
final String timeZoneText = typeRegistry.convertToText(parameters.getType(3), parameters.getValue(3));
timeZone = TimeZone.getTimeZone(timeZoneText);
}
else
{
timeZone = context.getLocalizationContext().getTimeZone();