protected Date parseDate()

in maven-scm-api/src/main/java/org/apache/maven/scm/util/AbstractConsumer.java [59:105]


    protected Date parseDate(String date, String userPattern, String defaultPattern, Locale locale) {
        DateFormat format;

        String patternUsed = null;
        Locale localeUsed = null;

        if (userPattern != null && !userPattern.isEmpty()) {
            if (locale != null) {
                format = new SimpleDateFormat(userPattern, locale);
                localeUsed = locale;
            } else {
                format = new SimpleDateFormat(userPattern);
                localeUsed = Locale.getDefault();
            }
            patternUsed = userPattern;
        } else {
            if (defaultPattern != null && !defaultPattern.isEmpty()) {
                if (locale != null) {
                    format = new SimpleDateFormat(defaultPattern, locale);
                    localeUsed = locale;
                } else {
                    format = new SimpleDateFormat(defaultPattern);
                    localeUsed = Locale.getDefault();
                }
                patternUsed = defaultPattern;
            } else {
                // Use the English short date pattern if no pattern is specified
                format = DateFormat.getDateInstance(DateFormat.SHORT, Locale.ENGLISH);
                patternUsed = "DateFormat.SHORT";
                localeUsed = Locale.ENGLISH;
            }
        }

        try {
            return format.parse(date);
        } catch (ParseException e) {
            if (logger.isWarnEnabled()) {
                logger.warn(
                        "skip ParseException: " + e.getMessage() + " during parsing date '" + date
                                + "' with pattern '" + patternUsed + "' and locale '"
                                + localeUsed + "'",
                        e);
            }

            return null;
        }
    }