Package org.apache.commons.net.ftp.parser

# 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:
  - `ConfigurableFTPFileEntryParserImpl`

- ## Field Summary

  ### Fields inherited from interface org.apache.commons.net.ftp.parser.FTPTimestampParser

  `DEFAULT_RECENT_SDF, DEFAULT_SDF`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `FTPTimestampParserImpl()`
  The only constructor for this class.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `configure(FTPClientConfig config)`
  Implementation of the `Configurable` interface.
  `SimpleDateFormat`
  `getDefaultDateFormat()`
  `String`
  `getDefaultDateFormatString()`
  `SimpleDateFormat`
  `getRecentDateFormat()`
  `String`
  `getRecentDateFormatString()`
  `TimeZone`
  `getServerTimeZone()`
  `String[]`
  `getShortMonths()`
  `Calendar`
  `parseTimestamp(String timestampStr)`
  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.
  `Calendar`
  `parseTimestamp(String timestampStr, Calendar serverTime)`
  If the recentDateFormat member has been defined, try to parse the supplied string with that.

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Constructor Details

  - ### FTPTimestampParserImpl

    public FTPTimestampParserImpl()
    The only constructor for this class.

- ## Method Details

  - ### configure

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

    Set 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.

  - ### 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(String, Calendar)`

  - ### 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:
      - `FTPTimestampParser.parseTimestamp(String)`