I am not a [net] developer but I am sure it would facilitate integration if you could submit this as a bugzilla ticket.
Thanks, Gary > -----Original Message----- > From: Mario Ivankovits [mailto:[EMAIL PROTECTED] > Sent: Wednesday, March 17, 2004 07:32 > To: Jakarta Commons Developers List > Subject: [NET] OS400 FTP FileEntry parser > > Here you will find my OS/400 FileEntry parser. > Maybe one would add this to commons.net? > > Ciao, > Mario > > ---cut here--- > import org.apache.commons.net.ftp.FTPFile; > import org.apache.commons.net.ftp.FTPFileListParserImpl; > > import java.util.Calendar; > > public class OS400FTPEntryParser extends FTPFileListParserImpl > { > private static final String REGEX = > "(\\S+)\\s+" // user > + "(\\d+)\\s+" // size > + "(\\d\\d)/(\\d\\d)/(\\d\\d)\\s+" // year/month/day > + "(\\d\\d):(\\d\\d):(\\d\\d)\\s+" // hour/minutes/seconds > + "(\\*\\S+)\\s+" // *STMF/*DIR > + "(\\S+/?)\\s*"; // filename > > public OS400FTPEntryParser() > { > super(REGEX); > } > > public FTPFile parseFTPEntry(String entry) > { > > FTPFile file = new FTPFile(); > file.setRawListing(entry); > int type; > > if (matches(entry)) > { > String usr = group(1); > String filesize = group(2); > String yr = group(3); > String mo = group(4); > String da = group(5); > String hr = group(6); > String min = group(7); > String sec = group(8); > String typeStr = group(9); > String name = group(10); > > if (typeStr.equalsIgnoreCase("*STMF")) > { > type = FTPFile.FILE_TYPE; > } > else if (typeStr.equalsIgnoreCase("*DIR")) > { > type = FTPFile.DIRECTORY_TYPE; > } > else > { > type = FTPFile.FILE_TYPE; > } > > file.setType(type); > > file.setUser(usr); > > try > { > file.setSize(Integer.parseInt(filesize)); > } > catch (NumberFormatException e) > { > // intentionally do nothing > } > > Calendar cal = Calendar.getInstance(); > cal.set(Calendar.SECOND, 0); > cal.set(Calendar.MINUTE, 0); > cal.set(Calendar.HOUR_OF_DAY, 0); > > try > { > int year = Integer.parseInt(yr, 10); > if (year < 70) > { > year += 2000; > } > else > { > year += 1900; > } > > cal.set(Calendar.YEAR, year); > cal.set(Calendar.MONTH, Integer.parseInt(mo, 10)); > cal.set(Calendar.DAY_OF_MONTH, Integer.parseInt(da, 10)); > > cal.set(Calendar.HOUR_OF_DAY, Integer.parseInt(hr, 10)); > cal.set(Calendar.MINUTE, Integer.parseInt(min, 10)); > cal.set(Calendar.SECOND, Integer.parseInt(sec, 10)); > > file.setTimestamp(cal); > } > catch (NumberFormatException e) > { > // do nothing, date will be uninitialized > } > > if (name.endsWith("/")) > { > name = name.substring(0, name.length()-1); > } > int pos = name.lastIndexOf('/'); > if (pos > -1) > { > name=name.substring(pos+1); > } > > file.setName(name); > > return file; > } > return null; > } > } > ---cut here--- > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
