    001    /*
    002     * Licensed to the Apache Software Foundation (ASF) under one or more
    003     * contributor license agreements.  See the NOTICE file distributed with
    004     * this work for additional information regarding copyright ownership.
    005     * The ASF licenses this file to You under the Apache License, Version 2.0
    006     * (the "License"); you may not use this file except in compliance with
    007     * the License.  You may obtain a copy of the License at
    008     *
    009     *      http://www.apache.org/licenses/LICENSE-2.0
    010     *
    011     * Unless required by applicable law or agreed to in writing, software
    012     * distributed under the License is distributed on an "AS IS" BASIS,
    013     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    014     * See the License for the specific language governing permissions and
    015     * limitations under the License.
    016     */
    017
    018    package org.apache.commons.net.ftp;
    019    import java.io.BufferedReader;
    020    import java.io.IOException;
    021    import java.util.Iterator;
    022    import java.util.List;
    023
    024    /**
    025     * This abstract class implements both the older FTPFileListParser and
    026     * newer FTPFileEntryParser interfaces with default functionality.
    027     * All the classes in the parser subpackage inherit from this.
    028     *
    029     */
    030    public abstract class FTPFileEntryParserImpl
    031        implements FTPFileEntryParser
    032    {
    033        /**
    034         * The constructor for a FTPFileEntryParserImpl object.
    035         */
    036        public FTPFileEntryParserImpl()
    037        {
    038        }
    039
    040        /**
    041         * Reads the next entry using the supplied BufferedReader object up to
    042         * whatever delemits one entry from the next.  This default implementation
    043         * simply calls BufferedReader.readLine().
    044         *
    045         * @param reader The BufferedReader object from which entries are to be
    046         * read.
    047         *
    048         * @return A string representing the next ftp entry or null if none found.
    049         * @exception java.io.IOException thrown on any IO Error reading from the reader.
    050         */
    051        public String readNextEntry(BufferedReader reader) throws IOException
    052        {
    053            return reader.readLine();
    054        }
    055        /**
    056         * This method is a hook for those implementors (such as
    057         * VMSVersioningFTPEntryParser, and possibly others) which need to
    058         * perform some action upon the FTPFileList after it has been created
    059         * from the server stream, but before any clients see the list.
    060         *
    061         * This default implementation removes entries that do not parse as files.
    062         *
    063         * @param original Original list after it has been created from the server stream
    064         *
    065         * @return <code>original</code> unmodified.
    066         */
    067         public List<String> preParse(List<String> original) {
    068             Iterator<String> it = original.iterator();
    069             while (it.hasNext()){
    070                String entry = it.next();
    071                if (null == parseFTPEntry(entry)) {
    072                    it.remove();
    073                }
    074             }
    075             return original;
    076         }
    077    }
    078
    079    /* Emacs configuration
    080     * Local variables:        **
    081     * mode:             java  **
    082     * c-basic-offset:   4     **
    083     * indent-tabs-mode: nil   **
    084     * End:                    **
    085     */