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