Class MVSFTPEntryParser

All Implemented Interfaces:
Configurable, FTPFileEntryParser

public class MVSFTPEntryParser extends ConfigurableFTPFileEntryParserImpl
Implementation of FTPFileEntryParser and FTPFileListParser for IBM zOS/MVS Systems.
Version:
$Id: MVSFTPEntryParser.java 1697293 2015-08-24 01:01:00Z sebb $
See Also:
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    (package private) static final String
    Dates are ignored for file lists, but are used for member lists where possible
    (package private) static final String
    Matches these entries: Volume Unit Referred Ext Used Recfm Lrecl BlkSz Dsorg Dsname B10142 3390 2006/03/20 2 31 F 80 80 PS MDI.OKL.WORK
    (package private) static final int
     
    private int
     
    (package private) static final String
    Matches these entries, note: no header: IBMUSER1 JOB01906 OUTPUT 3 Spool Files 012345678901234567890123456789012345678901234 1 2 3 4
    (package private) static final int
     
    (package private) static final String
    JES INTERFACE LEVEL 2 parser Matches these entries: JOBNAME JOBID OWNER STATUS CLASS IBMUSER1 JOB01906 IBMUSER OUTPUT A RC=0000 3 spool files IBMUSER TSU01830 IBMUSER OUTPUT TSU ABEND=522 3 spool files 012345678901234567890123456789012345678901234 1 2 3 4 012345678901234567890123456789012345678901234567890
    (package private) static final int
     
    (package private) static final String
    Matches these entries: Name VV.MM Created Changed Size Init Mod Id TBSHELF 01.03 2002/09/12 2002/10/11 09:37 11 11 0 KIL001
    (package private) static final int
     
    (package private) static final int
     
    Fallback parser for Unix-style listings
    (package private) static final int
     

    Fields inherited from class org.apache.commons.net.ftp.parser.RegexFTPFileEntryParserImpl

    _matcher_
  • Constructor Summary

    Constructors
    Constructor
    Description
    The sole constructor for a MVSFTPEntryParser object.
  • Method Summary

    Modifier and Type
    Method
    Description
    protected FTPClientConfig
    Each concrete subclass must define this member to create a default configuration to be used when that subclass is instantiated without a FTPClientConfig parameter being specified.
    private boolean
    Parse entries representing a dataset list.
    Parses a line of an z/OS - MVS FTP server file listing and converts it into a usable format in the form of an FTPFile instance.
    private boolean
    Matches these entries, note: no header: [1] [2] [3] [4] [5] IBMUSER1 JOB01906 OUTPUT 3 Spool Files 012345678901234567890123456789012345678901234 1 2 3 4 ------------------------------------------- Group in regex [1] Job name [2] Job number [3] Job status (INPUT,ACTIVE,OUTPUT) [4] Number of sysout files [5] The string "Spool Files"
    private boolean
    Matches these entries, note: no header: [1] [2] [3] [4] [5] JOBNAME JOBID OWNER STATUS CLASS IBMUSER1 JOB01906 IBMUSER OUTPUT A RC=0000 3 spool files IBMUSER TSU01830 IBMUSER OUTPUT TSU ABEND=522 3 spool files 012345678901234567890123456789012345678901234 1 2 3 4 ------------------------------------------- Group in regex [1] Job name [2] Job number [3] Owner [4] Job status (INPUT,ACTIVE,OUTPUT) [5] Job Class [6] The rest
    private boolean
    Parse entries within a partitioned dataset.
    private boolean
    Assigns the name to the first word of the entry.
    private boolean
    Parse the entry as a standard unix file.
    preParse is called as part of the interface.
    (package private) void
    setType(int type)
    Explicitly set the type of listing being processed.

    Methods inherited from class org.apache.commons.net.ftp.parser.ConfigurableFTPFileEntryParserImpl

    configure, parseTimestamp

    Methods inherited from class org.apache.commons.net.ftp.parser.RegexFTPFileEntryParserImpl

    getGroupCnt, getGroupsAsString, group, matches, setRegex, setRegex

    Methods inherited from class org.apache.commons.net.ftp.FTPFileEntryParserImpl

    readNextEntry

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • UNKNOWN_LIST_TYPE

      static final int UNKNOWN_LIST_TYPE
      See Also:
    • FILE_LIST_TYPE

      static final int FILE_LIST_TYPE
      See Also:
    • MEMBER_LIST_TYPE

      static final int MEMBER_LIST_TYPE
      See Also:
    • UNIX_LIST_TYPE

      static final int UNIX_LIST_TYPE
      See Also:
    • JES_LEVEL_1_LIST_TYPE

      static final int JES_LEVEL_1_LIST_TYPE
      See Also:
    • JES_LEVEL_2_LIST_TYPE

      static final int JES_LEVEL_2_LIST_TYPE
      See Also:
    • isType

      private int isType
    • unixFTPEntryParser

      private UnixFTPEntryParser unixFTPEntryParser
      Fallback parser for Unix-style listings
    • DEFAULT_DATE_FORMAT

      static final String DEFAULT_DATE_FORMAT
      Dates are ignored for file lists, but are used for member lists where possible
      See Also:
    • FILE_LIST_REGEX

      static final String FILE_LIST_REGEX
      Matches these entries: Volume Unit Referred Ext Used Recfm Lrecl BlkSz Dsorg Dsname B10142 3390 2006/03/20 2 31 F 80 80 PS MDI.OKL.WORK
      See Also:
    • MEMBER_LIST_REGEX

      static final String MEMBER_LIST_REGEX
      Matches these entries: Name VV.MM Created Changed Size Init Mod Id TBSHELF 01.03 2002/09/12 2002/10/11 09:37 11 11 0 KIL001
      See Also:
    • JES_LEVEL_1_LIST_REGEX

      static final String JES_LEVEL_1_LIST_REGEX
      Matches these entries, note: no header: IBMUSER1 JOB01906 OUTPUT 3 Spool Files 012345678901234567890123456789012345678901234 1 2 3 4
      See Also:
    • JES_LEVEL_2_LIST_REGEX

      static final String JES_LEVEL_2_LIST_REGEX
      JES INTERFACE LEVEL 2 parser Matches these entries: JOBNAME JOBID OWNER STATUS CLASS IBMUSER1 JOB01906 IBMUSER OUTPUT A RC=0000 3 spool files IBMUSER TSU01830 IBMUSER OUTPUT TSU ABEND=522 3 spool files 012345678901234567890123456789012345678901234 1 2 3 4 012345678901234567890123456789012345678901234567890
      See Also:
  • Constructor Details

    • MVSFTPEntryParser

      public MVSFTPEntryParser()
      The sole constructor for a MVSFTPEntryParser object.
  • Method Details

    • parseFTPEntry

      public FTPFile parseFTPEntry(String entry)
      Parses a line of an z/OS - MVS FTP server file listing and converts it into a usable format in the form of an FTPFile instance. If the file listing line doesn't describe a file, then null is returned. Otherwise a FTPFile instance representing the file is returned.
      Parameters:
      entry - A line of text from the file listing
      Returns:
      An FTPFile instance corresponding to the supplied entry
    • parseFileList

      private boolean parseFileList(FTPFile file, String entry)
      Parse entries representing a dataset list. Only datasets with DSORG PS or PO or PO-E and with RECFM F* or V* will be parsed. Format of ZOS/MVS file list: 1 2 3 4 5 6 7 8 9 10 Volume Unit Referred Ext Used Recfm Lrecl BlkSz Dsorg Dsname B10142 3390 2006/03/20 2 31 F 80 80 PS MDI.OKL.WORK ARCIVE Not Direct Access Device KJ.IOP998.ERROR.PL.UNITTEST B1N231 3390 2006/03/20 1 15 VB 256 27998 PO PLU B1N231 3390 2006/03/20 1 15 VB 256 27998 PO-E PLB ----------------------------------- Group within Regex [1] Volume [2] Unit [3] Referred [4] Ext: number of extents [5] Used [6] Recfm: Record format [7] Lrecl: Logical record length [8] BlkSz: Block size [9] Dsorg: Dataset organisation. Many exists but only support: PS, PO, PO-E [10] Dsname: Dataset name Note: When volume is ARCIVE, it means the dataset is stored somewhere in a tape archive. These entries is currently not supported by this parser. A null value is returned.
      Parameters:
      file - will be updated with Name, Type, Timestamp if parsed.
      entry - zosDirectoryEntry
      Returns:
      true: entry was parsed, false: entry was not parsed.
    • parseMemberList

      private boolean parseMemberList(FTPFile file, String entry)
      Parse entries within a partitioned dataset. Format of a memberlist within a PDS: 1 2 3 4 5 6 7 8 9 Name VV.MM Created Changed Size Init Mod Id TBSHELF 01.03 2002/09/12 2002/10/11 09:37 11 11 0 KIL001 TBTOOL 01.12 2002/09/12 2004/11/26 19:54 51 28 0 KIL001 ------------------------------------------- [1] Name [2] VV.MM: Version . modification [3] Created: yyyy / MM / dd [4,5] Changed: yyyy / MM / dd HH:mm [6] Size: number of lines [7] Init: number of lines when first created [8] Mod: number of modified lines a last save [9] Id: User id for last update
      Parameters:
      file - will be updated with Name, Type and Timestamp if parsed.
      entry - zosDirectoryEntry
      Returns:
      true: entry was parsed, false: entry was not parsed.
    • parseSimpleEntry

      private boolean parseSimpleEntry(FTPFile file, String entry)
      Assigns the name to the first word of the entry. Only to be used from a safe context, for example from a memberlist, where the regex for some reason fails. Then just assign the name field of FTPFile.
      Parameters:
      file -
      entry -
      Returns:
      true if the entry string is non-null and non-empty
    • parseUnixList

      private boolean parseUnixList(FTPFile file, String entry)
      Parse the entry as a standard unix file. Using the UnixFTPEntryParser.
      Parameters:
      file -
      entry -
      Returns:
      true: entry is parsed, false: entry could not be parsed.
    • parseJeslevel1List

      private boolean parseJeslevel1List(FTPFile file, String entry)
      Matches these entries, note: no header: [1] [2] [3] [4] [5] IBMUSER1 JOB01906 OUTPUT 3 Spool Files 012345678901234567890123456789012345678901234 1 2 3 4 ------------------------------------------- Group in regex [1] Job name [2] Job number [3] Job status (INPUT,ACTIVE,OUTPUT) [4] Number of sysout files [5] The string "Spool Files"
      Parameters:
      file - will be updated with Name, Type and Timestamp if parsed.
      entry - zosDirectoryEntry
      Returns:
      true: entry was parsed, false: entry was not parsed.
    • parseJeslevel2List

      private boolean parseJeslevel2List(FTPFile file, String entry)
      Matches these entries, note: no header: [1] [2] [3] [4] [5] JOBNAME JOBID OWNER STATUS CLASS IBMUSER1 JOB01906 IBMUSER OUTPUT A RC=0000 3 spool files IBMUSER TSU01830 IBMUSER OUTPUT TSU ABEND=522 3 spool files 012345678901234567890123456789012345678901234 1 2 3 4 ------------------------------------------- Group in regex [1] Job name [2] Job number [3] Owner [4] Job status (INPUT,ACTIVE,OUTPUT) [5] Job Class [6] The rest
      Parameters:
      file - will be updated with Name, Type and Timestamp if parsed.
      entry - zosDirectoryEntry
      Returns:
      true: entry was parsed, false: entry was not parsed.
    • preParse

      public List<String> preParse(List<String> orig)
      preParse is called as part of the interface. Per definition is is called before the parsing takes place. Three kind of lists is recognize: z/OS-MVS File lists z/OS-MVS Member lists unix file lists
      Specified by:
      preParse in interface FTPFileEntryParser
      Overrides:
      preParse in class FTPFileEntryParserImpl
      Parameters:
      orig - Original list after it has been created from the server stream
      Returns:
      original unmodified.
      Since:
      2.0
    • setType

      void setType(int type)
      Explicitly set the type of listing being processed.
      Parameters:
      type - The listing type.
    • getDefaultConfiguration

      protected FTPClientConfig getDefaultConfiguration()
      Description copied from class: ConfigurableFTPFileEntryParserImpl
      Each concrete subclass must define this member to create a default configuration to be used when that subclass is instantiated without a FTPClientConfig parameter being specified.
      Specified by:
      getDefaultConfiguration in class ConfigurableFTPFileEntryParserImpl
      Returns:
      the default configuration for the subclass.