KickJava   Java API By Example, From Geeks To Geeks.

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


1 /*
2  * Copyright 2001-2005 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 import java.text.ParseException JavaDoc;
18
19 import org.apache.commons.net.ftp.FTPClientConfig;
20 import org.apache.commons.net.ftp.FTPFile;
21
22 /**
23  * Implementation of FTPFileEntryParser and FTPFileListParser for OS2 Systems.
24  *
25  * @author <a HREF="Winston.Ojeda@qg.com">Winston Ojeda</a>
26  * @author <a HREF="mailto:scohen@apache.org">Steve Cohen</a>
27  * @version $Id: OS2FTPEntryParser.java 155429 2005-02-26 13:13:04Z dirkv $
28  * @see org.apache.commons.net.ftp.FTPFileEntryParser FTPFileEntryParser (for usage instructions)
29  */

30 public class OS2FTPEntryParser extends ConfigurableFTPFileEntryParserImpl
31
32 {
33     
34     private static final String JavaDoc DEFAULT_DATE_FORMAT
35         = "MM-dd-yy HH:mm"; //11-09-01 12:30
36
/**
37      * this is the regular expression used by this parser.
38      */

39     private static final String JavaDoc REGEX =
40         "(\\s+|[0-9]+)\\s*"
41         + "(\\s+|[A-Z]+)\\s*"
42         + "(DIR|\\s+)\\s*"
43         + "(\\S+)\\s+(\\S+)\\s+" /* date stuff */
44         + "(\\S.*)";
45
46     /**
47      * The default constructor for a OS2FTPEntryParser object.
48      *
49      * @exception IllegalArgumentException
50      * Thrown if the regular expression is unparseable. Should not be seen
51      * under normal conditions. It it is seen, this is a sign that
52      * <code>REGEX</code> is not a valid regular expression.
53      */

54     public OS2FTPEntryParser()
55     {
56         this(null);
57     }
58
59     /**
60      * This constructor allows the creation of an OS2FTPEntryParser object
61      * with something other than the default configuration.
62      *
63      * @param config The {@link FTPClientConfig configuration} object used to
64      * configure this parser.
65      * @exception IllegalArgumentException
66      * Thrown if the regular expression is unparseable. Should not be seen
67      * under normal conditions. It it is seen, this is a sign that
68      * <code>REGEX</code> is not a valid regular expression.
69      * @since 1.4
70      */

71      public OS2FTPEntryParser(FTPClientConfig config)
72     {
73         super(REGEX);
74         configure(config);
75     }
76
77     /**
78      * Parses a line of an OS2 FTP server file listing and converts it into a
79      * usable format in the form of an <code> FTPFile </code> instance. If the
80      * file listing line doesn't describe a file, <code> null </code> is
81      * returned, otherwise a <code> FTPFile </code> instance representing the
82      * files in the directory is returned.
83      * <p>
84      * @param entry A line of text from the file listing
85      * @return An FTPFile instance corresponding to the supplied entry
86      */

87     public FTPFile parseFTPEntry(String JavaDoc entry)
88     {
89
90         FTPFile f = new FTPFile();
91         if (matches(entry))
92         {
93             String JavaDoc size = group(1);
94             String JavaDoc attrib = group(2);
95             String JavaDoc dirString = group(3);
96             String JavaDoc datestr = group(4)+" "+group(5);
97             String JavaDoc name = group(6);
98             try
99             {
100                 f.setTimestamp(super.parseTimestamp(datestr));
101             }
102             catch (ParseException JavaDoc e)
103             {
104                 return null; // this is a parsing failure too.
105
}
106
107
108             //is it a DIR or a file
109
if (dirString.trim().equals("DIR") || attrib.trim().equals("DIR"))
110             {
111                 f.setType(FTPFile.DIRECTORY_TYPE);
112             }
113             else
114             {
115                 f.setType(FTPFile.FILE_TYPE);
116             }
117
118
119             //set the name
120
f.setName(name.trim());
121
122             //set the size
123
f.setSize(Long.parseLong(size.trim()));
124
125             return (f);
126         }
127         return null;
128
129     }
130
131     /**
132      * Defines a default configuration to be used when this class is
133      * instantiated without a {@link FTPClientConfig FTPClientConfig}
134      * parameter being specified.
135      * @return the default configuration for this parser.
136      */

137     protected FTPClientConfig getDefaultConfiguration() {
138         return new FTPClientConfig(
139                 FTPClientConfig.SYST_OS2,
140                 DEFAULT_DATE_FORMAT,
141                 null, null, null, null);
142     }
143
144 }
145
Popular Tags