KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > commons > net > ftp > parser > CompositeFileEntryParser


1 /*
2  * Copyright 2004 The Apache Software Foundation
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */

16 package org.apache.commons.net.ftp.parser;
17
18 import org.apache.commons.net.ftp.FTPFile;
19 import org.apache.commons.net.ftp.FTPFileEntryParser;
20 import org.apache.commons.net.ftp.FTPFileEntryParserImpl;
21
22 /**
23  * This implementation allows to pack some FileEntryParsers together
24  * and handle the case where to returned dirstyle isnt clearly defined.
25  * The matching parser will be cached.
26  * If the cached parser wont match due to the server changed the dirstyle,
27  * a new matching parser will be searched.
28  *
29  * @author Mario Ivankovits <mario@ops.co.at>
30  */

31 public class CompositeFileEntryParser extends FTPFileEntryParserImpl
32 {
33     private final FTPFileEntryParser[] ftpFileEntryParsers;
34     private FTPFileEntryParser cachedFtpFileEntryParser;
35
36     public CompositeFileEntryParser(FTPFileEntryParser[] ftpFileEntryParsers)
37     {
38         super();
39
40         this.cachedFtpFileEntryParser = null;
41         this.ftpFileEntryParsers = ftpFileEntryParsers;
42     }
43
44     public FTPFile parseFTPEntry(String JavaDoc listEntry)
45     {
46         if (cachedFtpFileEntryParser != null)
47         {
48             FTPFile matched = cachedFtpFileEntryParser.parseFTPEntry(listEntry);
49             if (matched != null)
50             {
51                 return matched;
52             }
53         }
54         else
55         {
56             for (int iterParser=0; iterParser < ftpFileEntryParsers.length; iterParser++)
57             {
58                 FTPFileEntryParser ftpFileEntryParser = ftpFileEntryParsers[iterParser];
59
60                 FTPFile matched = ftpFileEntryParser.parseFTPEntry(listEntry);
61                 if (matched != null)
62                 {
63                     cachedFtpFileEntryParser = ftpFileEntryParser;
64                     return matched;
65                 }
66             }
67         }
68         return null;
69     }
70 }
71
Popular Tags