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 */