org.pentaho.di.job.entries.ftp
Class MVSFileParser

java.lang.Object
  extended by com.enterprisedt.net.ftp.FTPFileParser
      extended by org.pentaho.di.job.entries.ftp.MVSFileParser

public class MVSFileParser
extends com.enterprisedt.net.ftp.FTPFileParser

MVS Folder Listing Parser The purpose of this parser is to be able handle responses from an MVS z/OS mainframe FTP server. Many places on the 'net were consulted for input to this parser. Importantly, this information from com.os.os2.networking.tcp-ip group: http://groups.google.com/group/comp.os.os2.networking.tcp-ip/msg/25acc89563f1e93e http://groups.google.com/group/comp.os.os2.networking.tcp-ip/browse_frm/thread/11af1ba1bc6b0edd?hl=en&lr&ie=UTF-8&oe=UTF-8&rnum=6&prev=/groups?q%3DMVS%2BPartitioned%2Bdata%2Bset%2Bdirectory%26hl%3Den%26lr%3D%26ie%3DUTF-8%26oe%3DUTF-8%26selm%3D4e7k0p%2524t1v%2540blackice.winternet.com%26rnum%3D6&pli=1 http://publibz.boulder.ibm.com/cgi-bin/bookmgr_OS390/BOOKS/F1AA2032/1.5.15?SHELF=&DT=20001127174124 Implementation Details 1- This supports folders and partitioned data sets only. This does not support JCL or HFS 2- You must treat partitioned data sets (Dsorg PO/PO-E) like folders and CD to them 3- Dsorg=PS is a downloadable file as are all the contents of a Partitioned Data Set. 4- When downloading from a folder, the Recfm must start with V or F. Note - the location for this is completely up for debate. I modeled this after the ftpsget/FTPSConnection and how ftpsput reaches up and into the ftpsget package to get it. However, I think a better solution is to have an entry/common. James and I agreed (in Matt's absense) to model the behavior after something already existing rather than introduce a new folder (like entry/common or entry/util).

Author:
mbatchelor September 2010

Constructor Summary
MVSFileParser()
           
 
Method Summary
 String getDateFormatString()
          Returns the date format string in use for parsing date in the listing.
 boolean isPartitionedDataset()
           
 boolean isValidFormat(String[] listing)
          Abstract Class Implementations
 com.enterprisedt.net.ftp.FTPFile parse(String raw)
          This parses an individual line from the directory listing.
 void setDateFormatString(String value)
          Provides ability to pre-specify the format that the parser will use to parse dates.
 void setLocale(Locale arg0)
          Could in theory be used to figure out the format of the date/time except that I'd need time on the server to see if this actually works that way.
 String toString()
          Returns parser name.
 
Methods inherited from class com.enterprisedt.net.ftp.FTPFileParser
isMultiLine, setIgnoreDateParseErrors
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

MVSFileParser

public MVSFileParser()
Method Detail

isValidFormat

public boolean isValidFormat(String[] listing)
Abstract Class Implementations

Overrides:
isValidFormat in class com.enterprisedt.net.ftp.FTPFileParser

parse

public com.enterprisedt.net.ftp.FTPFile parse(String raw)
                                       throws ParseException
This parses an individual line from the directory listing.

Specified by:
parse in class com.enterprisedt.net.ftp.FTPFileParser
Throws:
ParseException

setLocale

public void setLocale(Locale arg0)
Could in theory be used to figure out the format of the date/time except that I'd need time on the server to see if this actually works that way. For now, we ignore the locale and try to figure out the date format ourselves.

Specified by:
setLocale in class com.enterprisedt.net.ftp.FTPFileParser

toString

public String toString()
Returns parser name. By extensibility oversight in the third-party library we use, this isn't used to match the on the server (unfortunately).

Overrides:
toString in class Object

isPartitionedDataset

public boolean isPartitionedDataset()
Returns:
true if listing is a PDS

getDateFormatString

public String getDateFormatString()
Returns the date format string in use for parsing date in the listing.

Returns:
string format

setDateFormatString

public void setDateFormatString(String value)
Provides ability to pre-specify the format that the parser will use to parse dates.

Parameters:
value - the string to set.