Class FTPTimestampParserImpl

java.lang.Object
org.apache.commons.net.ftp.parser.FTPTimestampParserImpl
All Implemented Interfaces:
Configurable, FTPTimestampParser

public class FTPTimestampParserImpl extends Object implements FTPTimestampParser, Configurable
Default implementation of the FTPTimestampParser interface also implements the Configurable interface to allow the parsing to be configured from the outside.
Since:
1.4
See Also:
  • Field Details

    • CALENDAR_UNITS

      private static final int[] CALENDAR_UNITS
    • defaultDateFormat

      private SimpleDateFormat defaultDateFormat
      The date format for all dates, except possibly recent dates. Assumed to include the year.
    • defaultDateSmallestUnitIndex

      private int defaultDateSmallestUnitIndex
    • recentDateFormat

      private SimpleDateFormat recentDateFormat
      The format used for recent dates (which don't have the year). May be null.
    • recentDateSmallestUnitIndex

      private int recentDateSmallestUnitIndex
    • lenientFutureDates

      private boolean lenientFutureDates
  • Constructor Details

    • FTPTimestampParserImpl

      public FTPTimestampParserImpl()
      The only constructor for this class.
  • Method Details

    • getEntry

      private static int getEntry(SimpleDateFormat dateFormat)
    • indexOf

      private static int indexOf(int calendarUnit)
    • setPrecision

      private static void setPrecision(int index, Calendar working)
    • configure

      public void configure(FTPClientConfig config)
      Implements the Configurable interface. Configures this FTPTimestampParser according to the following logic:

      Sets up the defaultDateFormat and optionally the recentDateFormat to values supplied in the config based on month names configured as follows:

      • If a shortMonthString has been supplied in the config, use that to parse parse timestamps.
      • Otherwise, if a serverLanguageCode has been supplied in the config, use the month names represented by that language to parse timestamps.
      • otherwise use default English month names

      Finally if a serverTimeZoneId has been supplied via the config, set that into all date formats that have been configured.

      Specified by:
      configure in interface Configurable
      Parameters:
      config - the object containing the configuration data
    • getDefaultDateFormat

      public SimpleDateFormat getDefaultDateFormat()
      Returns:
      Returns the defaultDateFormat.
    • getDefaultDateFormatString

      public String getDefaultDateFormatString()
      Returns:
      Returns the defaultDateFormat pattern string.
    • getRecentDateFormat

      public SimpleDateFormat getRecentDateFormat()
      Returns:
      Returns the recentDateFormat.
    • getRecentDateFormatString

      public String getRecentDateFormatString()
      Returns:
      Returns the recentDateFormat.
    • getServerTimeZone

      public TimeZone getServerTimeZone()
      Returns:
      Returns the serverTimeZone used by this parser.
    • getShortMonths

      public String[] getShortMonths()
      Returns:
      returns an array of 12 strings representing the short month names used by this parse.
    • isLenientFutureDates

      boolean isLenientFutureDates()
      Returns:
      Returns the lenientFutureDates.
    • parseTimestamp

      public Calendar parseTimestamp(String timestampStr) throws ParseException
      Implements the one method in the FTPTimestampParser interface according to this algorithm: If the recentDateFormat member has been defined, try to parse the supplied string with that. If that parse fails, or if the recentDateFormat member has not been defined, attempt to parse with the defaultDateFormat member. If that fails, throw a ParseException. This method assumes that the server time is the same as the local time.
      Specified by:
      parseTimestamp in interface FTPTimestampParser
      Parameters:
      timestampStr - The timestamp to be parsed
      Returns:
      a Calendar with the parsed timestamp
      Throws:
      ParseException - if none of the parser mechanisms belonging to the implementor can parse the input.
      See Also:
    • parseTimestamp

      public Calendar parseTimestamp(String timestampStr, Calendar serverTime) throws ParseException
      If the recentDateFormat member has been defined, try to parse the supplied string with that. If that parse fails, or if the recentDateFormat member has not been defined, attempt to parse with the defaultDateFormat member. If that fails, throw a ParseException. This method allows a Calendar instance to be passed in which represents the current (system) time.
      Parameters:
      timestampStr - The timestamp to be parsed
      serverTime - The current time for the server
      Returns:
      the calendar
      Throws:
      ParseException - if timestamp cannot be parsed
      Since:
      1.5
      See Also:
    • setDefaultDateFormat

      private void setDefaultDateFormat(String format, DateFormatSymbols dfs)
      Parameters:
      format - The defaultDateFormat to be set.
      dfs - the symbols to use (may be null)
    • setLenientFutureDates

      void setLenientFutureDates(boolean lenientFutureDates)
      Parameters:
      lenientFutureDates - The lenientFutureDates to set.
    • setRecentDateFormat

      private void setRecentDateFormat(String format, DateFormatSymbols dfs)
      Parameters:
      format - The recentDateFormat to set.
      dfs - the symbols to use (may be null)
    • setServerTimeZone

      private void setServerTimeZone(String serverTimeZoneId)
      sets a TimeZone represented by the supplied ID string into all the parsers used by this server.
      Parameters:
      serverTimeZoneId - Time Id java.util.TimeZone id used by the ftp server. If null the client's local time zone is assumed.