|
What this is
Other links
The source code/* * Copyright 2004 The Apache Software Foundation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.commons.net.ftp.parser; import org.apache.commons.net.ftp.FTPFile; import java.util.Calendar; /** * @version $Id: OS400FTPEntryParser.java,v 1.3 2004/04/22 00:48:07 scohen Exp $ */ public class OS400FTPEntryParser extends RegexFTPFileEntryParserImpl { private static final String REGEX = "(\\S+)\\s+" // user + "(\\d+)\\s+" // size + "(\\d\\d)/(\\d\\d)/(\\d\\d)\\s+" // year/month/day + "([0-2][0-9]):([0-5][0-9]):([0-5][0-9])\\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.UNKNOWN_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)-1); 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; } } |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.