1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.commons.net.ftp.parser;
19
20 import org.apache.commons.net.ftp.FTPFile;
21 import org.apache.commons.net.ftp.FTPFileEntryParser;
22 import org.apache.commons.net.ftp.FTPFileEntryParserImpl;
23
24
25
26
27
28 public class CompositeFileEntryParser extends FTPFileEntryParserImpl {
29 private final FTPFileEntryParser[] ftpFileEntryParsers;
30 private FTPFileEntryParser cachedFtpFileEntryParser;
31
32 public CompositeFileEntryParser(final FTPFileEntryParser[] ftpFileEntryParsers) {
33 this.cachedFtpFileEntryParser = null;
34 this.ftpFileEntryParsers = ftpFileEntryParsers;
35 }
36
37 @Override
38 public FTPFile parseFTPEntry(final String listEntry) {
39 if (cachedFtpFileEntryParser != null) {
40 return cachedFtpFileEntryParser.parseFTPEntry(listEntry);
41 }
42 for (final FTPFileEntryParser ftpFileEntryParser : ftpFileEntryParsers) {
43 final FTPFile matched = ftpFileEntryParser.parseFTPEntry(listEntry);
44 if (matched != null) {
45 cachedFtpFileEntryParser = ftpFileEntryParser;
46 return matched;
47 }
48 }
49 return null;
50 }
51 }