class DateColumnValueProvider {

    public Date getDate(List<? extends String> row, DateColumn column) throws ParseException
    {
        StringBuilder dateStringBuilder = new StringBuilder();
        dateStringBuilder.append(row.get(column.getPrimaryColumnIndex()));

        StringBuilder formatStringBuilder = new StringBuilder();
        formatStringBuilder.append(column.getPrimaryColumnFormat());

        if (column.getSecondaryColumnIndex() >= 0)
        {
            dateStringBuilder.append(' ');
            dateStringBuilder.append(row.get(column.getSecondaryColumnIndex()));

            formatStringBuilder.append(' ');
            formatStringBuilder.append(column.getSecondaryColumnFormat());
        }

        String formatString = formatStringBuilder.toString();

        String dateString = dateStringBuilder.toString();
        if (formatString.contains("S"))
        {
            dateString = DateTimeUtilities.fixMillis(dateString);
        }

        SimpleDateFormat format = new SimpleDateFormat(formatString);

        return format.parse(dateString);
    }

}