1 /*
2 * Licensed to the Apache Software Foundation (ASF) under one or more
3 * contributor license agreements. See the NOTICE file distributed with
4 * this work for additional information regarding copyright ownership.
5 * The ASF licenses this file to You under the Apache License, Version 2.0
6 * (the "License"); you may not use this file except in compliance with
7 * the License. You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
18 package org.apache.commons.net.ftp;
19 import java.io.BufferedReader;
20 import java.io.IOException;
21 import java.util.Iterator;
22 import java.util.List;
23
24 /**
25 * This abstract class implements both the older FTPFileListParser and
26 * newer FTPFileEntryParser interfaces with default functionality.
27 * All the classes in the parser subpackage inherit from this.
28 *
29 */
30 public abstract class FTPFileEntryParserImpl
31 implements FTPFileEntryParser
32 {
33 /**
34 * The constructor for a FTPFileEntryParserImpl object.
35 */
36 public FTPFileEntryParserImpl()
37 {
38 }
39
40 /**
41 * Reads the next entry using the supplied BufferedReader object up to
42 * whatever delemits one entry from the next. This default implementation
43 * simply calls BufferedReader.readLine().
44 *
45 * @param reader The BufferedReader object from which entries are to be
46 * read.
47 *
48 * @return A string representing the next ftp entry or null if none found.
49 * @exception java.io.IOException thrown on any IO Error reading from the reader.
50 */
51 public String readNextEntry(BufferedReader reader) throws IOException
52 {
53 return reader.readLine();
54 }
55 /**
56 * This method is a hook for those implementors (such as
57 * VMSVersioningFTPEntryParser, and possibly others) which need to
58 * perform some action upon the FTPFileList after it has been created
59 * from the server stream, but before any clients see the list.
60 *
61 * This default implementation removes entries that do not parse as files.
62 *
63 * @param original Original list after it has been created from the server stream
64 *
65 * @return <code>original</code> unmodified.
66 */
67 public List<String> preParse(List<String> original) {
68 Iterator<String> it = original.iterator();
69 while (it.hasNext()){
70 String entry = it.next();
71 if (null == parseFTPEntry(entry)) {
72 it.remove();
73 }
74 }
75 return original;
76 }
77 }
78
79 /* Emacs configuration
80 * Local variables: **
81 * mode: java **
82 * c-basic-offset: 4 **
83 * indent-tabs-mode: nil **
84 * End: **
85 */