alvinalexander.com | career | drupal | java | mac | mysql | perl | scala | uml | unix  

What this is

This file is included in the DevDaily.com "Java Source Code Warehouse" project. The intent of this project is to help you "Learn Java by Example" TM.

Other links

The source code

/*
 * Copyright 2001-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 java.util.Calendar;
import org.apache.commons.net.ftp.FTPFile;

/**
 * Implementation of FTPFileEntryParser and FTPFileListParser for OS2 Systems.
 *
 * @author Winston Ojeda
 * @author Steve Cohen
 * @version $Id: OS2FTPEntryParser.java,v 1.11 2004/04/21 23:30:33 scohen Exp $
 * @see org.apache.commons.net.ftp.FTPFileEntryParser FTPFileEntryParser (for usage instructions)
 */
public class OS2FTPEntryParser extends RegexFTPFileEntryParserImpl

{
    /**
     * this is the regular expression used by this parser.
     */
    private static final String REGEX =
        "(\\s+|[0-9]+)\\s*"
        + "(\\s+|[A-Z]+)\\s*"
        + "(DIR|\\s+)\\s*"
        + "((?:0[1-9])|(?:1[0-2]))-"
        + "((?:0[1-9])|(?:[1-2]\\d)|(?:3[0-1]))-"
        + "(\\d\\d)\\s*"
        + "(?:([0-1]\\d)|(?:2[0-3])):"
        + "([0-5]\\d)\\s*"
        + "(\\S.*)";

    /**
     * The sole constructor for a OS2FTPEntryParser object.
     *
     * @exception IllegalArgumentException
     * Thrown if the regular expression is unparseable.  Should not be seen
     * under normal conditions.  It it is seen, this is a sign that
     * REGEX is  not a valid regular expression.
     */
    public OS2FTPEntryParser()
    {
        super(REGEX);
    }


    /**
     * Parses a line of an OS2 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,  null  is
     * returned, otherwise a  FTPFile  instance representing the
     * files in the directory is returned.
     * 

* @param entry A line of text from the file listing * @return An FTPFile instance corresponding to the supplied entry */ public FTPFile parseFTPEntry(String entry) { FTPFile f = new FTPFile(); if (matches(entry)) { String size = group(1); String attrib = group(2); String dirString = group(3); String mo = group(4); String da = group(5); String yr = group(6); String hr = group(7); String min = group(8); String name = group(9); //is it a DIR or a file if (dirString.trim().equals("DIR") || attrib.trim().equals("DIR")) { f.setType(FTPFile.DIRECTORY_TYPE); } else { f.setType(FTPFile.FILE_TYPE); } Calendar cal = Calendar.getInstance(); //convert all the calendar stuff to ints int month = new Integer(mo).intValue() - 1; int day = new Integer(da).intValue(); int year = new Integer(yr).intValue() + 2000; int hour = new Integer(hr).intValue(); int minutes = new Integer(min).intValue(); // Y2K stuff? this will break again in 2080 but I will // be sooooo dead anyways who cares. // SMC - IS OS2's directory date REALLY still not Y2K-compliant? if (year > 2080) { year -= 100; } //set the calendar cal.set(Calendar.SECOND, 0); cal.set(Calendar.MINUTE, minutes); cal.set(Calendar.HOUR_OF_DAY, hour); cal.set(Calendar.YEAR, year); cal.set(Calendar.DATE, day); cal.set(Calendar.MONTH, month); f.setTimestamp(cal); //set the name f.setName(name.trim()); //set the size Long theSize = new Long(size.trim()); theSize = new Long(String.valueOf(theSize.intValue())); f.setSize(theSize.longValue()); return (f); } return null; } }

... this post is sponsored by my books ...

#1 New Release!

FP Best Seller

 

new blog posts

 

Copyright 1998-2021 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.