~ubuntu-branches/ubuntu/gutsy/libcommons-net-java/gutsy

« back to all changes in this revision

Viewing changes to src/java/org/apache/commons/net/ftp/parser/CompositeFileEntryParser.java

  • Committer: Bazaar Package Importer
  • Author(s): Arnaud Vandyck
  • Date: 2004-05-29 21:05:46 UTC
  • Revision ID: james.westby@ubuntu.com-20040529210546-lfvfw6v3qybb6w3r
Tags: upstream-1.2.1
ImportĀ upstreamĀ versionĀ 1.2.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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.FTPFileEntryParser;
 
19
import org.apache.commons.net.ftp.FTPFile;
 
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 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
}