summaryrefslogtreecommitdiff
path: root/org/apache/commons/net/ftp/parser
diff options
context:
space:
mode:
authorJoe Robinson <joe@lc8n.com>2010-10-27 17:16:37 +0100
committerJoe Robinson <joe@lc8n.com>2010-10-27 17:16:37 +0100
commitbbbc051aa70b8c3dc98218b7b7ca23bea588f41a (patch)
treebf2b91652d245de4016dc327f4b855e52fa9df60 /org/apache/commons/net/ftp/parser
parent063284837c8c366e5502b1b0264b8eb807b61732 (diff)
Removed duplicate org.apache.commons files
Diffstat (limited to 'org/apache/commons/net/ftp/parser')
-rw-r--r--org/apache/commons/net/ftp/parser/CompositeFileEntryParser.classbin882 -> 0 bytes
-rw-r--r--org/apache/commons/net/ftp/parser/CompositeFileEntryParser.java72
-rw-r--r--org/apache/commons/net/ftp/parser/ConfigurableFTPFileEntryParserImpl.classbin1378 -> 0 bytes
-rw-r--r--org/apache/commons/net/ftp/parser/ConfigurableFTPFileEntryParserImpl.java116
-rw-r--r--org/apache/commons/net/ftp/parser/DefaultFTPFileEntryParserFactory.classbin4098 -> 0 bytes
-rw-r--r--org/apache/commons/net/ftp/parser/DefaultFTPFileEntryParserFactory.java247
-rw-r--r--org/apache/commons/net/ftp/parser/EnterpriseUnixFTPEntryParser.java166
-rw-r--r--org/apache/commons/net/ftp/parser/FTPFileEntryParserFactory.classbin473 -> 0 bytes
-rw-r--r--org/apache/commons/net/ftp/parser/FTPFileEntryParserFactory.java68
-rw-r--r--org/apache/commons/net/ftp/parser/FTPTimestampParser.classbin409 -> 0 bytes
-rw-r--r--org/apache/commons/net/ftp/parser/FTPTimestampParser.java52
-rw-r--r--org/apache/commons/net/ftp/parser/FTPTimestampParserImpl.classbin4464 -> 0 bytes
-rw-r--r--org/apache/commons/net/ftp/parser/FTPTimestampParserImpl.java301
-rw-r--r--org/apache/commons/net/ftp/parser/MVSFTPEntryParser.classbin4638 -> 0 bytes
-rw-r--r--org/apache/commons/net/ftp/parser/MVSFTPEntryParser.java495
-rw-r--r--org/apache/commons/net/ftp/parser/NTFTPEntryParser.classbin2100 -> 0 bytes
-rw-r--r--org/apache/commons/net/ftp/parser/NTFTPEntryParser.java147
-rw-r--r--org/apache/commons/net/ftp/parser/NetwareFTPEntryParser.classbin2169 -> 0 bytes
-rw-r--r--org/apache/commons/net/ftp/parser/NetwareFTPEntryParser.java176
-rw-r--r--org/apache/commons/net/ftp/parser/OS2FTPEntryParser.classbin2062 -> 0 bytes
-rw-r--r--org/apache/commons/net/ftp/parser/OS2FTPEntryParser.java147
-rw-r--r--org/apache/commons/net/ftp/parser/OS400FTPEntryParser.classbin2427 -> 0 bytes
-rw-r--r--org/apache/commons/net/ftp/parser/OS400FTPEntryParser.java158
-rw-r--r--org/apache/commons/net/ftp/parser/ParserInitializationException.classbin548 -> 0 bytes
-rw-r--r--org/apache/commons/net/ftp/parser/ParserInitializationException.java65
-rw-r--r--org/apache/commons/net/ftp/parser/RegexFTPFileEntryParserImpl.classbin2082 -> 0 bytes
-rw-r--r--org/apache/commons/net/ftp/parser/RegexFTPFileEntryParserImpl.java155
-rw-r--r--org/apache/commons/net/ftp/parser/UnixFTPEntryParser.classbin3748 -> 0 bytes
-rw-r--r--org/apache/commons/net/ftp/parser/UnixFTPEntryParser.java295
-rw-r--r--org/apache/commons/net/ftp/parser/VMSFTPEntryParser.classbin4251 -> 0 bytes
-rw-r--r--org/apache/commons/net/ftp/parser/VMSFTPEntryParser.java288
-rw-r--r--org/apache/commons/net/ftp/parser/VMSVersioningFTPEntryParser$NameVersion.classbin605 -> 0 bytes
-rw-r--r--org/apache/commons/net/ftp/parser/VMSVersioningFTPEntryParser.classbin2768 -> 0 bytes
-rw-r--r--org/apache/commons/net/ftp/parser/VMSVersioningFTPEntryParser.java183
34 files changed, 0 insertions, 3131 deletions
diff --git a/org/apache/commons/net/ftp/parser/CompositeFileEntryParser.class b/org/apache/commons/net/ftp/parser/CompositeFileEntryParser.class
deleted file mode 100644
index 0beda53..0000000
--- a/org/apache/commons/net/ftp/parser/CompositeFileEntryParser.class
+++ /dev/null
Binary files differ
diff --git a/org/apache/commons/net/ftp/parser/CompositeFileEntryParser.java b/org/apache/commons/net/ftp/parser/CompositeFileEntryParser.java
deleted file mode 100644
index 4977b3f..0000000
--- a/org/apache/commons/net/ftp/parser/CompositeFileEntryParser.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.net.ftp.parser;
-
-import org.apache.commons.net.ftp.FTPFile;
-import org.apache.commons.net.ftp.FTPFileEntryParser;
-import org.apache.commons.net.ftp.FTPFileEntryParserImpl;
-
-/**
- * This implementation allows to pack some FileEntryParsers together
- * and handle the case where to returned dirstyle isnt clearly defined.
- * The matching parser will be cached.
- * If the cached parser wont match due to the server changed the dirstyle,
- * a new matching parser will be searched.
- *
- * @author Mario Ivankovits <mario@ops.co.at>
- */
-public class CompositeFileEntryParser extends FTPFileEntryParserImpl
-{
- private final FTPFileEntryParser[] ftpFileEntryParsers;
- private FTPFileEntryParser cachedFtpFileEntryParser;
-
- public CompositeFileEntryParser(FTPFileEntryParser[] ftpFileEntryParsers)
- {
- super();
-
- this.cachedFtpFileEntryParser = null;
- this.ftpFileEntryParsers = ftpFileEntryParsers;
- }
-
- public FTPFile parseFTPEntry(String listEntry)
- {
- if (cachedFtpFileEntryParser != null)
- {
- FTPFile matched = cachedFtpFileEntryParser.parseFTPEntry(listEntry);
- if (matched != null)
- {
- return matched;
- }
- }
- else
- {
- for (int iterParser=0; iterParser < ftpFileEntryParsers.length; iterParser++)
- {
- FTPFileEntryParser ftpFileEntryParser = ftpFileEntryParsers[iterParser];
-
- FTPFile matched = ftpFileEntryParser.parseFTPEntry(listEntry);
- if (matched != null)
- {
- cachedFtpFileEntryParser = ftpFileEntryParser;
- return matched;
- }
- }
- }
- return null;
- }
-}
diff --git a/org/apache/commons/net/ftp/parser/ConfigurableFTPFileEntryParserImpl.class b/org/apache/commons/net/ftp/parser/ConfigurableFTPFileEntryParserImpl.class
deleted file mode 100644
index 5cbb5d5..0000000
--- a/org/apache/commons/net/ftp/parser/ConfigurableFTPFileEntryParserImpl.class
+++ /dev/null
Binary files differ
diff --git a/org/apache/commons/net/ftp/parser/ConfigurableFTPFileEntryParserImpl.java b/org/apache/commons/net/ftp/parser/ConfigurableFTPFileEntryParserImpl.java
deleted file mode 100644
index a3e832f..0000000
--- a/org/apache/commons/net/ftp/parser/ConfigurableFTPFileEntryParserImpl.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.net.ftp.parser;
-
-import java.text.ParseException;
-import java.util.Calendar;
-
-import org.apache.commons.net.ftp.Configurable;
-import org.apache.commons.net.ftp.FTPClientConfig;
-
-
-/**
- * <p>
- * This abstract class implements the common timestamp parsing
- * algorithm for all the concrete parsers. Classes derived from
- * this one will parse file listings via a supplied regular expression
- * that pulls out the date portion as a separate string which is
- * passed to the underlying {@link FTPTimestampParser delegate} to
- * handle parsing of the file timestamp.
- * </p><p>
- * This class also implements the {@link Configurable Configurable}
- * interface to allow the parser to be configured from the outside.
- * </p>
- * @since 1.4
- */
-/**
- * To change the template for this generated type comment go to
- * Window - Preferences - Java - Code Style - Code Templates - Comments
- */
-public abstract class ConfigurableFTPFileEntryParserImpl
-extends RegexFTPFileEntryParserImpl
-implements Configurable
-{
-
- private FTPTimestampParser timestampParser;
-
- /**
- * Only constructor for this absract class.
- * @param regex Regular expression used main parsing of the
- * file listing.
- */
- public ConfigurableFTPFileEntryParserImpl(String regex)
- {
- super(regex);
- this.timestampParser = new FTPTimestampParserImpl();
- }
-
- /**
- * This method is called by the concrete parsers to delegate
- * timestamp parsing to the timestamp parser.
- * <p>
- * @param timestampStr the timestamp string pulled from the
- * file listing by the regular expression parser, to be submitted
- * to the <code>timestampParser</code> for extracting the timestamp.
- * @return a <code>java.util.Calendar</code> containing results of the
- * timestamp parse.
- */
- public Calendar parseTimestamp(String timestampStr) throws ParseException {
- return this.timestampParser.parseTimestamp(timestampStr);
- }
-
-
- /**
- * Implementation of the {@link Configurable Configurable}
- * interface. Configures this parser by delegating to the
- * underlying Configurable FTPTimestampParser implementation, '
- * passing it the supplied {@link FTPClientConfig FTPClientConfig}
- * if that is non-null or a default configuration defined by
- * each concrete subclass.
- * </p>
- * @param config the configuration to be used to configure this parser.
- * If it is null, a default configuration defined by
- * each concrete subclass is used instead.
- */
- public void configure(FTPClientConfig config)
- {
- if (this.timestampParser instanceof Configurable) {
- FTPClientConfig defaultCfg = getDefaultConfiguration();
- if (config != null) {
- if (null == config.getDefaultDateFormatStr()) {
- config.setDefaultDateFormatStr(defaultCfg.getDefaultDateFormatStr());
- }
- if (null == config.getRecentDateFormatStr()) {
- config.setRecentDateFormatStr(defaultCfg.getRecentDateFormatStr());
- }
- ((Configurable)this.timestampParser).configure(config);
- } else {
- ((Configurable)this.timestampParser).configure(defaultCfg);
- }
- }
- }
-
- /**
- * Each concrete subclass must define this member to create
- * a default configuration to be used when that subclass is
- * instantiated without a {@link FTPClientConfig FTPClientConfig}
- * parameter being specified.
- * @return the default configuration for the subclass.
- */
- protected abstract FTPClientConfig getDefaultConfiguration();
-}
diff --git a/org/apache/commons/net/ftp/parser/DefaultFTPFileEntryParserFactory.class b/org/apache/commons/net/ftp/parser/DefaultFTPFileEntryParserFactory.class
deleted file mode 100644
index a4da6ed..0000000
--- a/org/apache/commons/net/ftp/parser/DefaultFTPFileEntryParserFactory.class
+++ /dev/null
Binary files differ
diff --git a/org/apache/commons/net/ftp/parser/DefaultFTPFileEntryParserFactory.java b/org/apache/commons/net/ftp/parser/DefaultFTPFileEntryParserFactory.java
deleted file mode 100644
index c071a8e..0000000
--- a/org/apache/commons/net/ftp/parser/DefaultFTPFileEntryParserFactory.java
+++ /dev/null
@@ -1,247 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.net.ftp.parser;
-
-import org.apache.commons.net.ftp.Configurable;
-import org.apache.commons.net.ftp.FTPClientConfig;
-import org.apache.commons.net.ftp.FTPFileEntryParser;
-
-
-/**
- * This is the default implementation of the
- * FTPFileEntryParserFactory interface. This is the
- * implementation that will be used by
- * org.apache.commons.net.ftp.FTPClient.listFiles()
- * if no other implementation has been specified.
- *
- * @see org.apache.commons.net.ftp.FTPClient#listFiles
- * @see org.apache.commons.net.ftp.FTPClient#setParserFactory
- */
-public class DefaultFTPFileEntryParserFactory
- implements FTPFileEntryParserFactory
-{
- private FTPClientConfig config = null;
-
- /**
- * This default implementation of the FTPFileEntryParserFactory
- * interface works according to the following logic:
- * First it attempts to interpret the supplied key as a fully
- * qualified classname of a class implementing the
- * FTPFileEntryParser interface. If that succeeds, a parser
- * object of this class is instantiated and is returned;
- * otherwise it attempts to interpret the key as an identirier
- * commonly used by the FTP SYST command to identify systems.
- * <p/>
- * If <code>key</code> is not recognized as a fully qualified
- * classname known to the system, this method will then attempt
- * to see whether it <b>contains</b> a string identifying one of
- * the known parsers. This comparison is <b>case-insensitive</b>.
- * The intent here is where possible, to select as keys strings
- * which are returned by the SYST command on the systems which
- * the corresponding parser successfully parses. This enables
- * this factory to be used in the auto-detection system.
- * <p/>
- *
- * @param key should be a fully qualified classname corresponding to
- * a class implementing the FTPFileEntryParser interface<br/>
- * OR<br/>
- * a string containing (case-insensitively) one of the
- * following keywords:
- * <ul>
- * <li>{@link FTPClientConfig#SYST_UNIX UNIX}</li>
- * <li>{@link FTPClientConfig#SYST_NT WINDOWS}</li>
- * <li>{@link FTPClientConfig#SYST_OS2 OS/2}</li>
- * <li>{@link FTPClientConfig#SYST_OS400 OS/400}</li>
- * <li>{@link FTPClientConfig#SYST_VMS VMS}</li>
- * <li>{@link FTPClientConfig#SYST_MVS MVS}</li>
- * <li>{@link FTPClientConfig#SYST_NETWARE}</li>
- * </ul>
- * @return the FTPFileEntryParser corresponding to the supplied key.
- * @throws ParserInitializationException thrown if for any reason the factory cannot resolve
- * the supplied key into an FTPFileEntryParser.
- * @see FTPFileEntryParser
- */
- public FTPFileEntryParser createFileEntryParser(String key)
- {
- if (key == null)
- throw new ParserInitializationException("Parser key cannot be null");
-
- Class<?> parserClass = null;
- FTPFileEntryParser parser = null;
- try
- {
- parserClass = Class.forName(key);
- parser = (FTPFileEntryParser) parserClass.newInstance();
- }
- catch (ClassNotFoundException e)
- {
- try
- {
- String ukey = null;
- if (null != key)
- {
- ukey = key.toUpperCase(java.util.Locale.ENGLISH);
- }
- if ((ukey.indexOf(FTPClientConfig.SYST_UNIX) >= 0)
- || (ukey.indexOf(FTPClientConfig.SYST_L8) >= 0))
- {
- parser = createUnixFTPEntryParser();
- }
- else if (ukey.indexOf(FTPClientConfig.SYST_VMS) >= 0)
- {
- parser = createVMSVersioningFTPEntryParser();
- }
- else if (ukey.indexOf(FTPClientConfig.SYST_NT) >= 0)
- {
- parser = createNTFTPEntryParser();
- }
- else if (ukey.indexOf(FTPClientConfig.SYST_OS2) >= 0)
- {
- parser = createOS2FTPEntryParser();
- }
- else if (ukey.indexOf(FTPClientConfig.SYST_OS400) >= 0 ||
- ukey.indexOf(FTPClientConfig.SYST_AS400) >= 0)
- {
- parser = createOS400FTPEntryParser();
- }
- else if (ukey.indexOf(FTPClientConfig.SYST_MVS) >= 0)
- {
- parser = createMVSEntryParser();
- }
- else if (ukey.indexOf(FTPClientConfig.SYST_NETWARE) >= 0)
- {
- parser = createNetwareFTPEntryParser();
- }
- else
- {
- throw new ParserInitializationException("Unknown parser type: " + key);
- }
- }
- catch (NoClassDefFoundError nf) {
- throw new ParserInitializationException("Error initializing parser", nf);
- }
-
- }
- catch (NoClassDefFoundError e)
- {
- throw new ParserInitializationException("Error initializing parser", e);
- }
- catch (ClassCastException e)
- {
- throw new ParserInitializationException(parserClass.getName()
- + " does not implement the interface "
- + "org.apache.commons.net.ftp.FTPFileEntryParser.", e);
- }
- catch (Throwable e)
- {
- throw new ParserInitializationException("Error initializing parser", e);
- }
-
- if (parser instanceof Configurable) {
- ((Configurable)parser).configure(this.config);
- }
- return parser;
- }
-
- /**
- * <p>Implementation extracts a key from the supplied
- * {@link FTPClientConfig FTPClientConfig}
- * parameter and creates an object implementing the
- * interface FTPFileEntryParser and uses the supplied configuration
- * to configure it.
- * </p><p>
- * Note that this method will generally not be called in scenarios
- * that call for autodetection of parser type but rather, for situations
- * where the user knows that the server uses a non-default configuration
- * and knows what that configuration is.
- * </p>
- * @param config A {@link FTPClientConfig FTPClientConfig}
- * used to configure the parser created
- *
- * @return the @link FTPFileEntryParser FTPFileEntryParser} so created.
- * @exception ParserInitializationException
- * Thrown on any exception in instantiation
- * @since 1.4
- */
- public FTPFileEntryParser createFileEntryParser(FTPClientConfig config)
- throws ParserInitializationException
- {
- this.config = config;
- String key = config.getServerSystemKey();
- return createFileEntryParser(key);
- }
-
-
- public FTPFileEntryParser createUnixFTPEntryParser()
- {
- return new UnixFTPEntryParser();
- }
-
- public FTPFileEntryParser createVMSVersioningFTPEntryParser()
- {
- return new VMSVersioningFTPEntryParser();
- }
-
- public FTPFileEntryParser createNetwareFTPEntryParser() {
- return new NetwareFTPEntryParser();
- }
-
- public FTPFileEntryParser createNTFTPEntryParser()
- {
- if (config != null && FTPClientConfig.SYST_NT.equals(
- config.getServerSystemKey()))
- {
- return new NTFTPEntryParser();
- } else {
- return new CompositeFileEntryParser(new FTPFileEntryParser[]
- {
- new NTFTPEntryParser(),
- new UnixFTPEntryParser()
- });
- }
- }
-
- public FTPFileEntryParser createOS2FTPEntryParser()
- {
- return new OS2FTPEntryParser();
- }
-
- public FTPFileEntryParser createOS400FTPEntryParser()
- {
- if (config != null &&
- FTPClientConfig.SYST_OS400.equals(config.getServerSystemKey()))
- {
- return new OS400FTPEntryParser();
- } else {
- return new CompositeFileEntryParser(new FTPFileEntryParser[]
- {
- new OS400FTPEntryParser(),
- new UnixFTPEntryParser()
- });
- }
- }
-
- public FTPFileEntryParser createMVSEntryParser()
- {
- return new MVSFTPEntryParser();
- }
-
-
-
-}
-
diff --git a/org/apache/commons/net/ftp/parser/EnterpriseUnixFTPEntryParser.java b/org/apache/commons/net/ftp/parser/EnterpriseUnixFTPEntryParser.java
deleted file mode 100644
index c7e6da7..0000000
--- a/org/apache/commons/net/ftp/parser/EnterpriseUnixFTPEntryParser.java
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.net.ftp.parser;
-import java.util.Calendar;
-
-import org.apache.commons.net.ftp.FTPFile;
-
-/**
- * Parser for the Connect Enterprise Unix FTP Server From Sterling Commerce.
- * Here is a sample of the sort of output line this parser processes:
- * "-C--E-----FTP B QUA1I1 18128 41 Aug 12 13:56 QUADTEST"
- * <P><B>
- * Note: EnterpriseUnixFTPEntryParser can only be instantiated through the
- * DefaultFTPParserFactory by classname. It will not be chosen
- * by the autodetection scheme.
- * </B>
- * @version $Id: EnterpriseUnixFTPEntryParser.java 658518 2008-05-21 01:04:30Z sebb $
- * @author <a href="Winston.Ojeda@qg.com">Winston Ojeda</a>
- * @see org.apache.commons.net.ftp.FTPFileEntryParser FTPFileEntryParser (for usage instructions)
- * @see org.apache.commons.net.ftp.parser.DefaultFTPFileEntryParserFactory
- */
-public class EnterpriseUnixFTPEntryParser extends RegexFTPFileEntryParserImpl
-{
-
- /**
- * months abbreviations looked for by this parser. Also used
- * to determine <b>which</b> month has been matched by the parser.
- */
- private static final String MONTHS =
- "(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)";
-
- /**
- * this is the regular expression used by this parser.
- */
- private static final String REGEX =
- "(([\\-]|[A-Z])([\\-]|[A-Z])([\\-]|[A-Z])([\\-]|[A-Z])([\\-]|[A-Z])"
- + "([\\-]|[A-Z])([\\-]|[A-Z])([\\-]|[A-Z])([\\-]|[A-Z])([\\-]|[A-Z]))"
- + "(\\S*)\\s*"
- + "(\\S+)\\s*"
- + "(\\S*)\\s*"
- + "(\\d*)\\s*"
- + "(\\d*)\\s*"
- + MONTHS
- + "\\s*"
- + "((?:[012]\\d*)|(?:3[01]))\\s*"
- + "((\\d\\d\\d\\d)|((?:[01]\\d)|(?:2[0123])):([012345]\\d))\\s"
- + "(\\S*)(\\s*.*)";
-
- /**
- * The sole constructor for a EnterpriseUnixFTPEntryParser object.
- *
- */
- public EnterpriseUnixFTPEntryParser()
- {
- super(REGEX);
- }
-
- /**
- * Parses a line of a unix FTP server file listing and converts it into a
- * usable format in the form of an <code> FTPFile </code> instance. If
- * the file listing line doesn't describe a file, <code> null </code> is
- * returned, otherwise a <code> FTPFile </code> instance representing the
- * files in the directory is returned.
- *
- * @param entry A line of text from the file listing
- * @return An FTPFile instance corresponding to the supplied entry
- */
- public FTPFile parseFTPEntry(String entry)
- {
-
- FTPFile file = new FTPFile();
- file.setRawListing(entry);
-
- if (matches(entry))
- {
- String usr = group(14);
- String grp = group(15);
- String filesize = group(16);
- String mo = group(17);
- String da = group(18);
- String yr = group(20);
- String hr = group(21);
- String min = group(22);
- String name = group(23);
-
- file.setType(FTPFile.FILE_TYPE);
- file.setUser(usr);
- file.setGroup(grp);
- try
- {
- file.setSize(Long.parseLong(filesize));
- }
- catch (NumberFormatException e)
- {
- // intentionally do nothing
- }
-
- Calendar cal = Calendar.getInstance();
- cal.set(Calendar.MILLISECOND, 0);
- cal.set(Calendar.SECOND,
- 0);
- cal.set(Calendar.MINUTE,
- 0);
- cal.set(Calendar.HOUR_OF_DAY,
- 0);
- try
- {
-
- int pos = MONTHS.indexOf(mo);
- int month = pos / 4;
- if (yr != null)
- {
- // it's a year
- cal.set(Calendar.YEAR,
- Integer.parseInt(yr));
- }
- else
- {
- // it must be hour/minute or we wouldn't have matched
- int year = cal.get(Calendar.YEAR);
-
- // if the month we're reading is greater than now, it must
- // be last year
- if (cal.get(Calendar.MONTH) < month)
- {
- year--;
- }
- cal.set(Calendar.YEAR,
- year);
- cal.set(Calendar.HOUR_OF_DAY,
- Integer.parseInt(hr));
- cal.set(Calendar.MINUTE,
- Integer.parseInt(min));
- }
- cal.set(Calendar.MONTH,
- month);
- cal.set(Calendar.DATE,
- Integer.parseInt(da));
- file.setTimestamp(cal);
- }
- catch (NumberFormatException e)
- {
- // do nothing, date will be uninitialized
- }
- file.setName(name);
-
- return file;
- }
- return null;
- }
-}
diff --git a/org/apache/commons/net/ftp/parser/FTPFileEntryParserFactory.class b/org/apache/commons/net/ftp/parser/FTPFileEntryParserFactory.class
deleted file mode 100644
index f1bdf1b..0000000
--- a/org/apache/commons/net/ftp/parser/FTPFileEntryParserFactory.class
+++ /dev/null
Binary files differ
diff --git a/org/apache/commons/net/ftp/parser/FTPFileEntryParserFactory.java b/org/apache/commons/net/ftp/parser/FTPFileEntryParserFactory.java
deleted file mode 100644
index e80ec0d..0000000
--- a/org/apache/commons/net/ftp/parser/FTPFileEntryParserFactory.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.net.ftp.parser;
-import org.apache.commons.net.ftp.FTPClientConfig;
-import org.apache.commons.net.ftp.FTPFileEntryParser;
-
-/**
- * The interface describes a factory for creating FTPFileEntryParsers.
- * @since 1.2
- */
-public interface FTPFileEntryParserFactory
-{
- /**
- * Implementation should be a method that decodes the
- * supplied key and creates an object implementing the
- * interface FTPFileEntryParser.
- *
- * @param key A string that somehow identifies an
- * FTPFileEntryParser to be created.
- *
- * @return the FTPFileEntryParser created.
- * @exception ParserInitializationException
- * Thrown on any exception in instantiation
- */
- public FTPFileEntryParser createFileEntryParser(String key)
- throws ParserInitializationException;
-
- /**
- *<p>
- * Implementation should be a method that extracts
- * a key from the supplied {@link FTPClientConfig FTPClientConfig}
- * parameter and creates an object implementing the
- * interface FTPFileEntryParser and uses the supplied configuration
- * to configure it.
- * </p><p>
- * Note that this method will generally not be called in scenarios
- * that call for autodetection of parser type but rather, for situations
- * where the user knows that the server uses a non-default configuration
- * and knows what that configuration is.
- * </p>
- *
- * @param config A {@link FTPClientConfig FTPClientConfig}
- * used to configure the parser created
- *
- * @return the @link FTPFileEntryParser FTPFileEntryParser} so created.
- * @exception ParserInitializationException
- * Thrown on any exception in instantiation
- * @since 1.4
- */
- public FTPFileEntryParser createFileEntryParser(FTPClientConfig config)
- throws ParserInitializationException;
-
-}
diff --git a/org/apache/commons/net/ftp/parser/FTPTimestampParser.class b/org/apache/commons/net/ftp/parser/FTPTimestampParser.class
deleted file mode 100644
index 32230d8..0000000
--- a/org/apache/commons/net/ftp/parser/FTPTimestampParser.class
+++ /dev/null
Binary files differ
diff --git a/org/apache/commons/net/ftp/parser/FTPTimestampParser.java b/org/apache/commons/net/ftp/parser/FTPTimestampParser.java
deleted file mode 100644
index 40b46cb..0000000
--- a/org/apache/commons/net/ftp/parser/FTPTimestampParser.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.net.ftp.parser;
-
-import java.text.ParseException;
-import java.util.Calendar;
-
-/**
- * This interface specifies the concept of parsing an FTP server's
- * timestamp.
- * @since 1.4
- */
-public interface FTPTimestampParser {
-
- /**
- * the default default date format.
- */
- public static final String DEFAULT_SDF = UnixFTPEntryParser.DEFAULT_DATE_FORMAT;
- /**
- * the default recent date format.
- */
- public static final String DEFAULT_RECENT_SDF = UnixFTPEntryParser.DEFAULT_RECENT_DATE_FORMAT;
-
- /**
- * Parses the supplied datestamp parameter. This parameter typically would
- * have been pulled from a longer FTP listing via the regular expression
- * mechanism
- * @param timestampStr - the timestamp portion of the FTP directory listing
- * to be parsed
- * @return a <code>java.util.Calendar</code> object initialized to the date
- * parsed by the parser
- * @throws ParseException if none of the parser mechanisms belonging to
- * the implementor can parse the input.
- */
- public Calendar parseTimestamp(String timestampStr) throws ParseException;
-
-}
diff --git a/org/apache/commons/net/ftp/parser/FTPTimestampParserImpl.class b/org/apache/commons/net/ftp/parser/FTPTimestampParserImpl.class
deleted file mode 100644
index 0ae3067..0000000
--- a/org/apache/commons/net/ftp/parser/FTPTimestampParserImpl.class
+++ /dev/null
Binary files differ
diff --git a/org/apache/commons/net/ftp/parser/FTPTimestampParserImpl.java b/org/apache/commons/net/ftp/parser/FTPTimestampParserImpl.java
deleted file mode 100644
index 02a0cc8..0000000
--- a/org/apache/commons/net/ftp/parser/FTPTimestampParserImpl.java
+++ /dev/null
@@ -1,301 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.net.ftp.parser;
-
-import java.text.DateFormatSymbols;
-import java.text.ParseException;
-import java.text.ParsePosition;
-import java.text.SimpleDateFormat;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.TimeZone;
-
-import org.apache.commons.net.ftp.Configurable;
-import org.apache.commons.net.ftp.FTPClientConfig;
-
-/**
- * Default implementation of the {@link FTPTimestampParser FTPTimestampParser}
- * interface also implements the {@link org.apache.commons.net.ftp.Configurable Configurable}
- * interface to allow the parsing to be configured from the outside.
- *
- * @see ConfigurableFTPFileEntryParserImpl
- * @since 1.4
- */
-public class FTPTimestampParserImpl implements
- FTPTimestampParser, Configurable
-{
-
-
- private SimpleDateFormat defaultDateFormat;
- private SimpleDateFormat recentDateFormat;
- private boolean lenientFutureDates = false;
-
-
- /**
- * The only constructor for this class.
- */
- public FTPTimestampParserImpl() {
- setDefaultDateFormat(DEFAULT_SDF);
- setRecentDateFormat(DEFAULT_RECENT_SDF);
- }
-
- /**
- * Implements the one {@link FTPTimestampParser#parseTimestamp(String) method}
- * in the {@link FTPTimestampParser FTPTimestampParser} interface
- * according to this algorithm:
- *
- * If the recentDateFormat member has been defined, try to parse the
- * supplied string with that. If that parse fails, or if the recentDateFormat
- * member has not been defined, attempt to parse with the defaultDateFormat
- * member. If that fails, throw a ParseException.
- *
- * This method allows a {@link Calendar} instance to be passed in which represents the
- * current (system) time.
- *
- * @see org.apache.commons.net.ftp.parser.FTPTimestampParser#parseTimestamp(java.lang.String)
- *
- * @param timestampStr The timestamp to be parsed
- */
- public Calendar parseTimestamp(String timestampStr) throws ParseException {
- Calendar now = Calendar.getInstance();
- return parseTimestamp(timestampStr, now);
- }
-
- /**
- * Implements the one {@link FTPTimestampParser#parseTimestamp(String) method}
- * in the {@link FTPTimestampParser FTPTimestampParser} interface
- * according to this algorithm:
- *
- * If the recentDateFormat member has been defined, try to parse the
- * supplied string with that. If that parse fails, or if the recentDateFormat
- * member has not been defined, attempt to parse with the defaultDateFormat
- * member. If that fails, throw a ParseException.
- *
- * @see org.apache.commons.net.ftp.parser.FTPTimestampParser#parseTimestamp(java.lang.String)
- * @param timestampStr The timestamp to be parsed
- * @param serverTime The current time for the server
- * @since 1.5
- */
- public Calendar parseTimestamp(String timestampStr, Calendar serverTime) throws ParseException {
- Calendar now = (Calendar) serverTime.clone();// Copy this, because we may change it
- now.setTimeZone(this.getServerTimeZone());
- Calendar working = (Calendar) now.clone();
- working.setTimeZone(getServerTimeZone());
- ParsePosition pp = new ParsePosition(0);
-
- Date parsed = null;
- if (recentDateFormat != null) {
- if (lenientFutureDates) {
- // add a day to "now" so that "slop" doesn't cause a date
- // slightly in the future to roll back a full year. (Bug 35181)
- now.add(Calendar.DATE, 1);
- }
- parsed = recentDateFormat.parse(timestampStr, pp);
- }
- if (parsed != null && pp.getIndex() == timestampStr.length())
- {
- working.setTime(parsed);
- working.set(Calendar.YEAR, now.get(Calendar.YEAR));
-
- if (working.after(now)) {
- working.add(Calendar.YEAR, -1);
- }
- } else {
- // Temporarily add the current year to the short date time
- // to cope with short-date leap year strings.
- // e.g. Java's DateFormatter will assume that "Feb 29 12:00" refers to
- // Feb 29 1970 (an invalid date) rather than a potentially valid leap year date.
- // This is pretty bad hack to work around the deficiencies of the JDK date/time classes.
- if (recentDateFormat != null) {
- pp = new ParsePosition(0);
- int year = now.get(Calendar.YEAR);
- String timeStampStrPlusYear = timestampStr + " " + year;
- SimpleDateFormat hackFormatter = new SimpleDateFormat(recentDateFormat.toPattern() + " yyyy",
- recentDateFormat.getDateFormatSymbols());
- hackFormatter.setLenient(false);
- hackFormatter.setTimeZone(recentDateFormat.getTimeZone());
- parsed = hackFormatter.parse(timeStampStrPlusYear, pp);
- }
- if (parsed != null && pp.getIndex() == timestampStr.length() + 5) {
- working.setTime(parsed);
- }
- else {
- pp = new ParsePosition(0);
- parsed = defaultDateFormat.parse(timestampStr, pp);
- // note, length checks are mandatory for us since
- // SimpleDateFormat methods will succeed if less than
- // full string is matched. They will also accept,
- // despite "leniency" setting, a two-digit number as
- // a valid year (e.g. 22:04 will parse as 22 A.D.)
- // so could mistakenly confuse an hour with a year,
- // if we don't insist on full length parsing.
- if (parsed != null && pp.getIndex() == timestampStr.length()) {
- working.setTime(parsed);
- } else {
- throw new ParseException(
- "Timestamp could not be parsed with older or recent DateFormat",
- pp.getIndex());
- }
- }
- }
- return working;
- }
-
- /**
- * @return Returns the defaultDateFormat.
- */
- public SimpleDateFormat getDefaultDateFormat() {
- return defaultDateFormat;
- }
- /**
- * @return Returns the defaultDateFormat pattern string.
- */
- public String getDefaultDateFormatString() {
- return defaultDateFormat.toPattern();
- }
- /**
- * @param defaultDateFormat The defaultDateFormat to be set.
- */
- private void setDefaultDateFormat(String format) {
- if (format != null) {
- this.defaultDateFormat = new SimpleDateFormat(format);
- this.defaultDateFormat.setLenient(false);
- }
- }
- /**
- * @return Returns the recentDateFormat.
- */
- public SimpleDateFormat getRecentDateFormat() {
- return recentDateFormat;
- }
- /**
- * @return Returns the recentDateFormat.
- */
- public String getRecentDateFormatString() {
- return recentDateFormat.toPattern();
- }
- /**
- * @param recentDateFormat The recentDateFormat to set.
- */
- private void setRecentDateFormat(String format) {
- if (format != null) {
- this.recentDateFormat = new SimpleDateFormat(format);
- this.recentDateFormat.setLenient(false);
- }
- }
-
- /**
- * @return returns an array of 12 strings representing the short
- * month names used by this parse.
- */
- public String[] getShortMonths() {
- return defaultDateFormat.getDateFormatSymbols().getShortMonths();
- }
-
-
- /**
- * @return Returns the serverTimeZone used by this parser.
- */
- public TimeZone getServerTimeZone() {
- return this.defaultDateFormat.getTimeZone();
- }
- /**
- * sets a TimeZone represented by the supplied ID string into all
- * of the parsers used by this server.
- * @param serverTimeZone Time Id java.util.TimeZone id used by
- * the ftp server. If null the client's local time zone is assumed.
- */
- private void setServerTimeZone(String serverTimeZoneId) {
- TimeZone serverTimeZone = TimeZone.getDefault();
- if (serverTimeZoneId != null) {
- serverTimeZone = TimeZone.getTimeZone(serverTimeZoneId);
- }
- this.defaultDateFormat.setTimeZone(serverTimeZone);
- if (this.recentDateFormat != null) {
- this.recentDateFormat.setTimeZone(serverTimeZone);
- }
- }
-
- /**
- * Implementation of the {@link Configurable Configurable}
- * interface. Configures this <code>FTPTimestampParser</code> according
- * to the following logic:
- * <p>
- * Set up the {@link FTPClientConfig#setDefaultDateFormatStr(java.lang.String) defaultDateFormat}
- * and optionally the {@link FTPClientConfig#setRecentDateFormatStr(String) recentDateFormat}
- * to values supplied in the config based on month names configured as follows:
- * </p><p><ul>
- * <li>If a {@link FTPClientConfig#setShortMonthNames(String) shortMonthString}
- * has been supplied in the <code>config</code>, use that to parse parse timestamps.</li>
- * <li>Otherwise, if a {@link FTPClientConfig#setServerLanguageCode(String) serverLanguageCode}
- * has been supplied in the <code>config</code>, use the month names represented
- * by that {@link FTPClientConfig#lookupDateFormatSymbols(String) language}
- * to parse timestamps.</li>
- * <li>otherwise use default English month names</li>
- * </ul></p><p>
- * Finally if a {@link org.apache.commons.net.ftp.FTPClientConfig#setServerTimeZoneId(String) serverTimeZoneId}
- * has been supplied via the config, set that into all date formats that have
- * been configured.
- * </p>
- */
- public void configure(FTPClientConfig config) {
- DateFormatSymbols dfs = null;
-
- String languageCode = config.getServerLanguageCode();
- String shortmonths = config.getShortMonthNames();
- if (shortmonths != null) {
- dfs = FTPClientConfig.getDateFormatSymbols(shortmonths);
- } else if (languageCode != null) {
- dfs = FTPClientConfig.lookupDateFormatSymbols(languageCode);
- } else {
- dfs = FTPClientConfig.lookupDateFormatSymbols("en");
- }
-
-
- String recentFormatString = config.getRecentDateFormatStr();
- if (recentFormatString == null) {
- this.recentDateFormat = null;
- } else {
- this.recentDateFormat = new SimpleDateFormat(recentFormatString, dfs);
- this.recentDateFormat.setLenient(false);
- }
-
- String defaultFormatString = config.getDefaultDateFormatStr();
- if (defaultFormatString == null) {
- throw new IllegalArgumentException("defaultFormatString cannot be null");
- }
- this.defaultDateFormat = new SimpleDateFormat(defaultFormatString, dfs);
- this.defaultDateFormat.setLenient(false);
-
- setServerTimeZone(config.getServerTimeZoneId());
-
- this.lenientFutureDates = config.isLenientFutureDates();
- }
- /**
- * @return Returns the lenientFutureDates.
- */
- boolean isLenientFutureDates() {
- return lenientFutureDates;
- }
- /**
- * @param lenientFutureDates The lenientFutureDates to set.
- */
- void setLenientFutureDates(boolean lenientFutureDates) {
- this.lenientFutureDates = lenientFutureDates;
- }
-}
diff --git a/org/apache/commons/net/ftp/parser/MVSFTPEntryParser.class b/org/apache/commons/net/ftp/parser/MVSFTPEntryParser.class
deleted file mode 100644
index 0dc97d0..0000000
--- a/org/apache/commons/net/ftp/parser/MVSFTPEntryParser.class
+++ /dev/null
Binary files differ
diff --git a/org/apache/commons/net/ftp/parser/MVSFTPEntryParser.java b/org/apache/commons/net/ftp/parser/MVSFTPEntryParser.java
deleted file mode 100644
index cd87e6e..0000000
--- a/org/apache/commons/net/ftp/parser/MVSFTPEntryParser.java
+++ /dev/null
@@ -1,495 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.net.ftp.parser;
-
-import java.text.ParseException;
-import java.util.List;
-
-import org.apache.commons.net.ftp.FTPClientConfig;
-import org.apache.commons.net.ftp.FTPFile;
-
-/**
- * Implementation of FTPFileEntryParser and FTPFileListParser for IBM zOS/MVS
- * Systems.
- *
- * @author <a href="henrik.sorensen@balcab.ch">Henrik Sorensen</a>
- * @author <a href="jnadler@srcginc.com">Jeff Nadler</a>
- * @author <a href="wnoto@openfinance.com">William Noto</a>
- *
- * @version $Id: MVSFTPEntryParser.java 658520 2008-05-21 01:14:11Z sebb $
- * @see org.apache.commons.net.ftp.FTPFileEntryParser FTPFileEntryParser (for
- * usage instructions)
- */
-public class MVSFTPEntryParser extends ConfigurableFTPFileEntryParserImpl {
-
- static final int UNKNOWN_LIST_TYPE = -1;
- static final int FILE_LIST_TYPE = 0;
- static final int MEMBER_LIST_TYPE = 1;
- static final int UNIX_LIST_TYPE = 2;
- static final int JES_LEVEL_1_LIST_TYPE = 3;
- static final int JES_LEVEL_2_LIST_TYPE = 4;
-
- private int isType = UNKNOWN_LIST_TYPE;
-
- /**
- * Fallback parser for Unix-style listings
- */
- private UnixFTPEntryParser unixFTPEntryParser;
-
- /**
- * Dates are ignored for file lists, but are used for member lists where
- * possible
- */
- static final String DEFAULT_DATE_FORMAT = "yyyy/MM/dd HH:mm"; // 2001/09/18
- // 13:52
-
- /**
- * Matches these entries: Volume Unit Referred Ext Used Recfm Lrecl BlkSz
- * Dsorg Dsname B10142 3390 2006/03/20 2 31 F 80 80 PS MDI.OKL.WORK
- *
- */
- static final String FILE_LIST_REGEX = "\\S+\\s+" + // volume
- // ignored
- "\\S+\\s+" + // unit - ignored
- "\\S+\\s+" + // access date - ignored
- "\\S+\\s+" + // extents -ignored
- "\\S+\\s+" + // used - ignored
- "[FV]\\S*\\s+" + // recfm - must start with F or V
- "\\S+\\s+" + // logical record length -ignored
- "\\S+\\s+" + // block size - ignored
- "(PS|PO|PO-E)\\s+" + // Dataset organisation. Many exist
- // but only support: PS, PO, PO-E
- "(\\S+)\\s*"; // Dataset Name (file name)
-
- /**
- * Matches these entries: Name VV.MM Created Changed Size Init Mod Id
- * TBSHELF 01.03 2002/09/12 2002/10/11 09:37 11 11 0 KIL001
- */
- static final String MEMBER_LIST_REGEX = "(\\S+)\\s+" + // name
- "\\S+\\s+" + // version, modification (ignored)
- "\\S+\\s+" + // create date (ignored)
- "(\\S+)\\s+" + // modification date
- "(\\S+)\\s+" + // modification time
- "\\S+\\s+" + // size in lines (ignored)
- "\\S+\\s+" + // size in lines at creation(ignored)
- "\\S+\\s+" + // lines modified (ignored)
- "\\S+\\s*"; // id of user who modified (ignored)
-
- /**
- * Matches these entries, note: no header: IBMUSER1 JOB01906 OUTPUT 3 Spool
- * Files 012345678901234567890123456789012345678901234 1 2 3 4
- */
- static final String JES_LEVEL_1_LIST_REGEX = "(\\S+)\\s+" + // job
- // name
- // ignored
- "(\\S+)\\s+" + // job number
- "(\\S+)\\s+" + // job status (OUTPUT,INPUT,ACTIVE)
- "(\\S+)\\s+" + // number of spool files
- "(\\S+)\\s+" + // Text "Spool" ignored
- "(\\S+)\\s*" // Text "Files" ignored
- ;
-
- /**
- * JES INTERFACE LEVEL 2 parser Matches these entries: JOBNAME JOBID OWNER
- * STATUS CLASS IBMUSER1 JOB01906 IBMUSER OUTPUT A RC=0000 3 spool files
- * IBMUSER TSU01830 IBMUSER OUTPUT TSU ABEND=522 3 spool files
- * 012345678901234567890123456789012345678901234 1 2 3 4
- * 012345678901234567890123456789012345678901234567890
- */
-
- static final String JES_LEVEL_2_LIST_REGEX = "(\\S+)\\s+" + // job
- // name
- // ignored
- "(\\S+)\\s+" + // job number
- "(\\S+)\\s+" + // owner ignored
- "(\\S+)\\s+" + // job status (OUTPUT,INPUT,ACTIVE) ignored
- "(\\S+)\\s+" + // job class ignored
- "(\\S+).*" // rest ignored
- ;
-
- /*
- * ---------------------------------------------------------------------
- * Very brief and incomplete description of the zOS/MVS-filesystem. (Note:
- * "zOS" is the operating system on the mainframe, and is the new name for
- * MVS)
- *
- * The filesystem on the mainframe does not have hierarchal structure as for
- * example the unix filesystem. For a more comprehensive description, please
- * refer to the IBM manuals
- *
- * @LINK:
- * http://publibfp.boulder.ibm.com/cgi-bin/bookmgr/BOOKS/dgt2d440/CONTENTS
- *
- *
- * Dataset names =============
- *
- * A dataset name consist of a number of qualifiers separated by '.', each
- * qualifier can be at most 8 characters, and the total length of a dataset
- * can be max 44 characters including the dots.
- *
- *
- * Dataset organisation ====================
- *
- * A dataset represents a piece of storage allocated on one or more disks.
- * The structure of the storage is described with the field dataset
- * organinsation (DSORG). There are a number of dataset organisations, but
- * only two are usable for FTP transfer.
- *
- * DSORG: PS: sequential, or flat file PO: partitioned dataset PO-E:
- * extended partitioned dataset
- *
- * The PS file is just a flat file, as you would find it on the unix file
- * system.
- *
- * The PO and PO-E files, can be compared to a single level directory
- * structure. A PO file consist of a number of dataset members, or files if
- * you will. It is possible to CD into the file, and to retrieve the
- * individual members.
- *
- *
- * Dataset record format =====================
- *
- * The physical layout of the dataset is described on the dataset itself.
- * There are a number of record formats (RECFM), but just a few is relavant
- * for the FTP transfer.
- *
- * Any one beginning with either F or V can safely used by FTP transfer. All
- * others should only be used with great care, so this version will just
- * ignore the other record formats. F means a fixed number of records per
- * allocated storage, and V means a variable number of records.
- *
- *
- * Other notes ===========
- *
- * The file system supports automatically backup and retrieval of datasets.
- * If a file is backed up, the ftp LIST command will return: ARCIVE Not
- * Direct Access Device KJ.IOP998.ERROR.PL.UNITTEST
- *
- *
- * Implementation notes ====================
- *
- * Only datasets that have dsorg PS, PO or PO-E and have recfm beginning
- * with F or V, is fully parsed.
- *
- * The following fields in FTPFile is used: FTPFile.Rawlisting: Always set.
- * FTPFile.Type: DIRECTORY_TYPE or FILE_TYPE or UNKNOWN FTPFile.Name: name
- * FTPFile.Timestamp: change time or null
- *
- *
- *
- * Additional information ======================
- *
- * The MVS ftp server supports a number of features via the FTP interface.
- * The features are controlled with the FTP command quote site filetype=<SEQ|JES|DB2>
- * SEQ is the default and used for normal file transfer JES is used to
- * interact with the Job Entry Subsystem (JES) similar to a job scheduler
- * DB2 is used to interact with a DB2 subsystem
- *
- * This parser supports SEQ and JES.
- *
- *
- *
- *
- *
- *
- */
-
- /**
- * The sole constructor for a MVSFTPEntryParser object.
- *
- */
- public MVSFTPEntryParser() {
- super(""); // note the regex is set in preParse.
- super.configure(null); // configure parser with default configurations
- }
-
- /**
- * Parses a line of an z/OS - MVS FTP server file listing and converts it
- * into a usable format in the form of an <code> FTPFile </code> instance.
- * If the file listing line doesn't describe a file, then
- * <code> null </code> is returned. Otherwise a <code> FTPFile </code>
- * instance representing the file is returned.
- *
- * @param entry
- * A line of text from the file listing
- * @return An FTPFile instance corresponding to the supplied entry
- */
- public FTPFile parseFTPEntry(String entry) {
- boolean isParsed = false;
- FTPFile f = new FTPFile();
-
- if (isType == FILE_LIST_TYPE)
- isParsed = parseFileList(f, entry);
- else if (isType == MEMBER_LIST_TYPE) {
- isParsed = parseMemberList(f, entry);
- if (!isParsed)
- isParsed = parseSimpleEntry(f, entry);
- } else if (isType == UNIX_LIST_TYPE) {
- isParsed = parseUnixList(f, entry);
- } else if (isType == JES_LEVEL_1_LIST_TYPE) {
- isParsed = parseJeslevel1List(f, entry);
- } else if (isType == JES_LEVEL_2_LIST_TYPE) {
- isParsed = parseJeslevel2List(f, entry);
- }
-
- if (!isParsed)
- f = null;
-
- return f;
- }
-
- /**
- * Parse entries representing a dataset list. Only datasets with DSORG PS or
- * PO or PO-E and with RECFM F* or V* will be parsed.
- *
- * Format of ZOS/MVS file list: 1 2 3 4 5 6 7 8 9 10 Volume Unit Referred
- * Ext Used Recfm Lrecl BlkSz Dsorg Dsname B10142 3390 2006/03/20 2 31 F 80
- * 80 PS MDI.OKL.WORK ARCIVE Not Direct Access Device
- * KJ.IOP998.ERROR.PL.UNITTEST B1N231 3390 2006/03/20 1 15 VB 256 27998 PO
- * PLU B1N231 3390 2006/03/20 1 15 VB 256 27998 PO-E PLB
- *
- * ----------------------------------- Group within Regex [1] Volume [2]
- * Unit [3] Referred [4] Ext: number of extents [5] Used [6] Recfm: Record
- * format [7] Lrecl: Logical record length [8] BlkSz: Block size [9] Dsorg:
- * Dataset organisation. Many exists but only support: PS, PO, PO-E [10]
- * Dsname: Dataset name
- *
- * Note: When volume is ARCIVE, it means the dataset is stored somewhere in
- * a tape archive. These entries is currently not supported by this parser.
- * A null value is returned.
- *
- * @param file
- * will be updated with Name, Type, Timestamp if parsed.
- * @param entry zosDirectoryEntry
- * @return true: entry was parsed, false: entry was not parsed.
- */
- private boolean parseFileList(FTPFile file, String entry) {
- if (matches(entry)) {
- file.setRawListing(entry);
- String name = group(2);
- String dsorg = group(1);
- file.setName(name);
-
- // DSORG
- if ("PS".equals(dsorg)) {
- file.setType(FTPFile.FILE_TYPE);
- }
- else if ("PO".equals(dsorg) || "PO-E".equals(dsorg)) {
- // regex already ruled out anything other than PO or PO-E
- file.setType(FTPFile.DIRECTORY_TYPE);
- }
- else {
- return false;
- }
-
- return true;
- }
-
- return false;
- }
-
- /**
- * Parse entries within a partitioned dataset.
- *
- * Format of a memberlist within a PDS: 1 2 3 4 5 6 7 8 9 Name VV.MM Created
- * Changed Size Init Mod Id TBSHELF 01.03 2002/09/12 2002/10/11 09:37 11 11
- * 0 KIL001 TBTOOL 01.12 2002/09/12 2004/11/26 19:54 51 28 0 KIL001
- *
- * ------------------------------------------- [1] Name [2] VV.MM: Version .
- * modification [3] Created: yyyy / MM / dd [4,5] Changed: yyyy / MM / dd
- * HH:mm [6] Size: number of lines [7] Init: number of lines when first
- * created [8] Mod: number of modified lines a last save [9] Id: User id for
- * last update
- *
- *
- * @param file
- * will be updated with Name, Type and Timestamp if parsed.
- * @param entry zosDirectoryEntry
- * @return true: entry was parsed, false: entry was not parsed.
- */
- private boolean parseMemberList(FTPFile file, String entry) {
- if (matches(entry)) {
- file.setRawListing(entry);
- String name = group(1);
- String datestr = group(2) + " " + group(3);
- file.setName(name);
- file.setType(FTPFile.FILE_TYPE);
- try {
- file.setTimestamp(super.parseTimestamp(datestr));
- } catch (ParseException e) {
- e.printStackTrace();
- // just ignore parsing errors.
- // TODO check this is ok
- return false; // this is a parsing failure too.
- }
- return true;
- }
-
- return false;
- }
-
- /**
- * Assigns the name to the first word of the entry. Only to be used from a
- * safe context, for example from a memberlist, where the regex for some
- * reason fails. Then just assign the name field of FTPFile.
- *
- * @param file
- * @param entry
- * @return
- */
- private boolean parseSimpleEntry(FTPFile file, String entry) {
- if (entry != null && entry.length() > 0) {
- file.setRawListing(entry);
- String name = entry.split(" ")[0];
- file.setName(name);
- file.setType(FTPFile.FILE_TYPE);
- return true;
- }
- return false;
- }
-
- /**
- * Parse the entry as a standard unix file. Using the UnixFTPEntryParser.
- *
- * @param file
- * @param entry
- * @return true: entry is parsed, false: entry could not be parsed.
- */
- private boolean parseUnixList(FTPFile file, String entry) {
- file = unixFTPEntryParser.parseFTPEntry(entry);
- if (file == null)
- return false;
- return true;
- }
-
- /**
- * Matches these entries, note: no header: [1] [2] [3] [4] [5] IBMUSER1
- * JOB01906 OUTPUT 3 Spool Files
- * 012345678901234567890123456789012345678901234 1 2 3 4
- * ------------------------------------------- Group in regex [1] Job name
- * [2] Job number [3] Job status (INPUT,ACTIVE,OUTPUT) [4] Number of sysout
- * files [5] The string "Spool Files"
- *
- *
- * @param file
- * will be updated with Name, Type and Timestamp if parsed.
- * @param entry zosDirectoryEntry
- * @return true: entry was parsed, false: entry was not parsed.
- */
- private boolean parseJeslevel1List(FTPFile file, String entry) {
- if (matches(entry)) {
- if (group(3).equalsIgnoreCase("OUTPUT")) {
- file.setRawListing(entry);
- String name = group(2); /* Job Number, used by GET */
- file.setName(name);
- file.setType(FTPFile.FILE_TYPE);
- return true;
- }
- }
-
- return false;
- }
-
- /**
- * Matches these entries, note: no header: [1] [2] [3] [4] [5] JOBNAME JOBID
- * OWNER STATUS CLASS IBMUSER1 JOB01906 IBMUSER OUTPUT A RC=0000 3 spool
- * files IBMUSER TSU01830 IBMUSER OUTPUT TSU ABEND=522 3 spool files
- * 012345678901234567890123456789012345678901234 1 2 3 4
- * ------------------------------------------- Group in regex [1] Job name
- * [2] Job number [3] Owner [4] Job status (INPUT,ACTIVE,OUTPUT) [5] Job
- * Class [6] The rest
- *
- *
- * @param file
- * will be updated with Name, Type and Timestamp if parsed.
- * @param entry zosDirectoryEntry
- * @return true: entry was parsed, false: entry was not parsed.
- */
- private boolean parseJeslevel2List(FTPFile file, String entry) {
- if (matches(entry)) {
- if (group(4).equalsIgnoreCase("OUTPUT")) {
- file.setRawListing(entry);
- String name = group(2); /* Job Number, used by GET */
- file.setName(name);
- file.setType(FTPFile.FILE_TYPE);
- return true;
- }
- }
-
- return false;
- }
-
- /**
- * preParse is called as part of the interface. Per definition is is called
- * before the parsing takes place. Three kind of lists is recognize:
- * z/OS-MVS File lists z/OS-MVS Member lists unix file lists
- * @since 2.0
- */
- @Override
- public List<String> preParse(List<String> orig) {
- // simply remove the header line. Composite logic will take care of the
- // two different types of
- // list in short order.
- if (orig != null && orig.size() > 0) {
- String header = orig.get(0);
- if (header.indexOf("Volume") >= 0 && header.indexOf("Dsname") >= 0) {
- setType(FILE_LIST_TYPE);
- super.setRegex(FILE_LIST_REGEX);
- } else if (header.indexOf("Name") >= 0 && header.indexOf("Id") >= 0) {
- setType(MEMBER_LIST_TYPE);
- super.setRegex(MEMBER_LIST_REGEX);
- } else if (header.indexOf("total") == 0) {
- setType(UNIX_LIST_TYPE);
- unixFTPEntryParser = new UnixFTPEntryParser();
- } else if (header.indexOf("Spool Files") >= 30) {
- setType(JES_LEVEL_1_LIST_TYPE);
- super.setRegex(JES_LEVEL_1_LIST_REGEX);
- } else if (header.indexOf("JOBNAME") == 0
- && header.indexOf("JOBID") > 8) {// header contains JOBNAME JOBID OWNER // STATUS CLASS
- setType(JES_LEVEL_2_LIST_TYPE);
- super.setRegex(JES_LEVEL_2_LIST_REGEX);
- } else {
- setType(UNKNOWN_LIST_TYPE);
- }
-
- if (isType != JES_LEVEL_1_LIST_TYPE) { // remove header is necessary
- orig.remove(0);
- }
- }
-
- return orig;
- }
-
- /**
- * Explicitly set the type of listing being processed.
- * @param type The listing type.
- */
- void setType(int type) {
- isType = type;
- }
-
- /*
- * @return
- */
- @Override
- protected FTPClientConfig getDefaultConfiguration() {
- return new FTPClientConfig(FTPClientConfig.SYST_MVS,
- DEFAULT_DATE_FORMAT, null, null, null, null);
- }
-
-}
diff --git a/org/apache/commons/net/ftp/parser/NTFTPEntryParser.class b/org/apache/commons/net/ftp/parser/NTFTPEntryParser.class
deleted file mode 100644
index bb3ed8f..0000000
--- a/org/apache/commons/net/ftp/parser/NTFTPEntryParser.class
+++ /dev/null
Binary files differ
diff --git a/org/apache/commons/net/ftp/parser/NTFTPEntryParser.java b/org/apache/commons/net/ftp/parser/NTFTPEntryParser.java
deleted file mode 100644
index b6bc75e..0000000
--- a/org/apache/commons/net/ftp/parser/NTFTPEntryParser.java
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.net.ftp.parser;
-import java.text.ParseException;
-
-import org.apache.commons.net.ftp.FTPClientConfig;
-import org.apache.commons.net.ftp.FTPFile;
-
-/**
- * Implementation of FTPFileEntryParser and FTPFileListParser for NT Systems.
- *
- * @author <a href="Winston.Ojeda@qg.com">Winston Ojeda</a>
- * @author <a href="mailto:scohen@apache.org">Steve Cohen</a>
- * @version $Id: NTFTPEntryParser.java 658518 2008-05-21 01:04:30Z sebb $
- * @see org.apache.commons.net.ftp.FTPFileEntryParser FTPFileEntryParser (for usage instructions)
- */
-public class NTFTPEntryParser extends ConfigurableFTPFileEntryParserImpl
-{
-
- private static final String DEFAULT_DATE_FORMAT
- = "MM-dd-yy hh:mma"; //11-09-01 12:30PM
-
-
- /**
- * this is the regular expression used by this parser.
- */
- private static final String REGEX =
- "(\\S+)\\s+(\\S+)\\s+"
- + "(?:(<DIR>)|([0-9]+))\\s+"
- + "(\\S.*)";
-
- /**
- * The sole constructor for an NTFTPEntryParser object.
- *
- * @exception IllegalArgumentException
- * Thrown if the regular expression is unparseable. Should not be seen
- * under normal conditions. It it is seen, this is a sign that
- * <code>REGEX</code> is not a valid regular expression.
- */
- public NTFTPEntryParser()
- {
- this(null);
- }
-
- /**
- * This constructor allows the creation of an NTFTPEntryParser object
- * with something other than the default configuration.
- *
- * @param config The {@link FTPClientConfig configuration} object used to
- * configure this parser.
- * @exception IllegalArgumentException
- * Thrown if the regular expression is unparseable. Should not be seen
- * under normal conditions. It it is seen, this is a sign that
- * <code>REGEX</code> is not a valid regular expression.
- * @since 1.4
- */
- public NTFTPEntryParser(FTPClientConfig config)
- {
- super(REGEX);
- configure(config);
- }
-
- /**
- * Parses a line of an NT FTP server file listing and converts it into a
- * usable format in the form of an <code> FTPFile </code> instance. If the
- * file listing line doesn't describe a file, <code> null </code> is
- * returned, otherwise a <code> FTPFile </code> instance representing the
- * files in the directory is returned.
- * <p>
- * @param entry A line of text from the file listing
- * @return An FTPFile instance corresponding to the supplied entry
- */
- public FTPFile parseFTPEntry(String entry)
- {
- FTPFile f = new FTPFile();
- f.setRawListing(entry);
-
- if (matches(entry))
- {
- String datestr = group(1)+" "+group(2);
- String dirString = group(3);
- String size = group(4);
- String name = group(5);
- try
- {
- f.setTimestamp(super.parseTimestamp(datestr));
- }
- catch (ParseException e)
- {
- // intentionally do nothing
- }
-
- if (null == name || name.equals(".") || name.equals(".."))
- {
- return (null);
- }
- f.setName(name);
-
-
- if ("<DIR>".equals(dirString))
- {
- f.setType(FTPFile.DIRECTORY_TYPE);
- f.setSize(0);
- }
- else
- {
- f.setType(FTPFile.FILE_TYPE);
- if (null != size)
- {
- f.setSize(Long.parseLong(size));
- }
- }
- return (f);
- }
- return null;
- }
-
- /**
- * Defines a default configuration to be used when this class is
- * instantiated without a {@link FTPClientConfig FTPClientConfig}
- * parameter being specified.
- * @return the default configuration for this parser.
- */
- @Override
- public FTPClientConfig getDefaultConfiguration() {
- return new FTPClientConfig(
- FTPClientConfig.SYST_NT,
- DEFAULT_DATE_FORMAT,
- null, null, null, null);
- }
-
-}
diff --git a/org/apache/commons/net/ftp/parser/NetwareFTPEntryParser.class b/org/apache/commons/net/ftp/parser/NetwareFTPEntryParser.class
deleted file mode 100644
index 71babc5..0000000
--- a/org/apache/commons/net/ftp/parser/NetwareFTPEntryParser.class
+++ /dev/null
Binary files differ
diff --git a/org/apache/commons/net/ftp/parser/NetwareFTPEntryParser.java b/org/apache/commons/net/ftp/parser/NetwareFTPEntryParser.java
deleted file mode 100644
index 3cbea82..0000000
--- a/org/apache/commons/net/ftp/parser/NetwareFTPEntryParser.java
+++ /dev/null
@@ -1,176 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.net.ftp.parser;
-
-import java.text.ParseException;
-
-import org.apache.commons.net.ftp.FTPClientConfig;
-import org.apache.commons.net.ftp.FTPFile;
-
-/**
- * Implementation of FTPFileEntryParser and FTPFileListParser for Netware Systems. Note that some of the proprietary
- * extensions for Novell-specific operations are not supported. See
- * <a href="http://www.novell.com/documentation/nw65/index.html?page=/documentation/nw65/ftp_enu/data/fbhbgcfa.html">http://www.novell.com/documentation/nw65/index.html?page=/documentation/nw65/ftp_enu/data/fbhbgcfa.html</a>
- * for more details.
- *
- * @author <a href="rwinston@apache.org">Rory Winston</a>
- * @see org.apache.commons.net.ftp.FTPFileEntryParser FTPFileEntryParser (for usage instructions)
- * @version $Id: NetwareFTPEntryParser.java 658520 2008-05-21 01:14:11Z sebb $
- * @since 1.5
- */
-public class NetwareFTPEntryParser extends ConfigurableFTPFileEntryParserImpl {
-
- /**
- * Default date format is e.g. Feb 22 2006
- */
- private static final String DEFAULT_DATE_FORMAT = "MMM dd yyyy";
-
- /**
- * Default recent date format is e.g. Feb 22 17:32
- */
- private static final String DEFAULT_RECENT_DATE_FORMAT = "MMM dd HH:mm";
-
- /**
- * this is the regular expression used by this parser.
- * Example: d [-W---F--] SCION_VOL2 512 Apr 13 23:12 VOL2
- */
- private static final String REGEX = "(d|-){1}\\s+" // Directory/file flag
- + "\\[(.*)\\]\\s+" // Attributes
- + "(\\S+)\\s+" + "(\\d+)\\s+" // Owner and size
- + "(\\S+\\s+\\S+\\s+((\\d+:\\d+)|(\\d{4})))" // Long/short date format
- + "\\s+(.*)"; // Filename (incl. spaces)
-
- /**
- * The default constructor for a NetwareFTPEntryParser object.
- *
- * @exception IllegalArgumentException
- * Thrown if the regular expression is unparseable. Should not be seen
- * under normal conditions. It it is seen, this is a sign that
- * <code>REGEX</code> is not a valid regular expression.
- */
- public NetwareFTPEntryParser() {
- this(null);
- }
-
- /**
- * This constructor allows the creation of an NetwareFTPEntryParser object
- * with something other than the default configuration.
- *
- * @param config The {@link FTPClientConfig configuration} object used to
- * configure this parser.
- * @exception IllegalArgumentException
- * Thrown if the regular expression is unparseable. Should not be seen
- * under normal conditions. It it is seen, this is a sign that
- * <code>REGEX</code> is not a valid regular expression.
- * @since 1.4
- */
- public NetwareFTPEntryParser(FTPClientConfig config) {
- super(REGEX);
- configure(config);
- }
-
- /**
- * Parses a line of an NetwareFTP server file listing and converts it into a
- * usable format in the form of an <code> FTPFile </code> instance. If the
- * file listing line doesn't describe a file, <code> null </code> is
- * returned, otherwise a <code> FTPFile </code> instance representing the
- * files in the directory is returned.
- * <p>
- * <p>
- * Netware file permissions are in the following format: RWCEAFMS, and are explained as follows:
- * <ul>
- * <li><b>S</b> - Supervisor; All rights.
- * <li><b>R</b> - Read; Right to open and read or execute.
- * <li><b>W</b> - Write; Right to open and modify.
- * <li><b>C</b> - Create; Right to create; when assigned to a file, allows a deleted file to be recovered.
- * <li><b>E</b> - Erase; Right to delete.
- * <li><b>M</b> - Modify; Right to rename a file and to change attributes.
- * <li><b>F</b> - File Scan; Right to see directory or file listings.
- * <li><b>A</b> - Access Control; Right to modify trustee assignments and the Inherited Rights Mask.
- * </ul>
- *
- * See <a href="http://www.novell.com/documentation/nfap10/index.html?page=/documentation/nfap10/nfaubook/data/abxraws.html">here</a>
- * for more details
- *
- * @param entry A line of text from the file listing
- * @return An FTPFile instance corresponding to the supplied entry
- */
- public FTPFile parseFTPEntry(String entry) {
-
- FTPFile f = new FTPFile();
- if (matches(entry)) {
- String dirString = group(1);
- String attrib = group(2);
- String user = group(3);
- String size = group(4);
- String datestr = group(5);
- String name = group(9);
-
- try {
- f.setTimestamp(super.parseTimestamp(datestr));
- } catch (ParseException e) {
- // intentionally do nothing
- }
-
- //is it a DIR or a file
- if (dirString.trim().equals("d")) {
- f.setType(FTPFile.DIRECTORY_TYPE);
- } else // Should be "-"
- {
- f.setType(FTPFile.FILE_TYPE);
- }
-
- f.setUser(user);
-
- //set the name
- f.setName(name.trim());
-
- //set the size
- f.setSize(Long.parseLong(size.trim()));
-
- // Now set the permissions (or at least a subset thereof - full permissions would probably require
- // subclassing FTPFile and adding extra metainformation there)
- if (attrib.indexOf("R") != -1) {
- f.setPermission(FTPFile.USER_ACCESS, FTPFile.READ_PERMISSION,
- true);
- }
- if (attrib.indexOf("W") != -1) {
- f.setPermission(FTPFile.USER_ACCESS, FTPFile.WRITE_PERMISSION,
- true);
- }
-
- return (f);
- }
- return null;
-
- }
-
- /**
- * Defines a default configuration to be used when this class is
- * instantiated without a {@link FTPClientConfig FTPClientConfig}
- * parameter being specified.
- * @return the default configuration for this parser.
- */
- @Override
- protected FTPClientConfig getDefaultConfiguration() {
- return new FTPClientConfig(FTPClientConfig.SYST_NETWARE,
- DEFAULT_DATE_FORMAT, DEFAULT_RECENT_DATE_FORMAT, null, null,
- null);
- }
-
-}
diff --git a/org/apache/commons/net/ftp/parser/OS2FTPEntryParser.class b/org/apache/commons/net/ftp/parser/OS2FTPEntryParser.class
deleted file mode 100644
index 332ae30..0000000
--- a/org/apache/commons/net/ftp/parser/OS2FTPEntryParser.class
+++ /dev/null
Binary files differ
diff --git a/org/apache/commons/net/ftp/parser/OS2FTPEntryParser.java b/org/apache/commons/net/ftp/parser/OS2FTPEntryParser.java
deleted file mode 100644
index dc02ffb..0000000
--- a/org/apache/commons/net/ftp/parser/OS2FTPEntryParser.java
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.net.ftp.parser;
-import java.text.ParseException;
-
-import org.apache.commons.net.ftp.FTPClientConfig;
-import org.apache.commons.net.ftp.FTPFile;
-
-/**
- * Implementation of FTPFileEntryParser and FTPFileListParser for OS2 Systems.
- *
- * @author <a href="Winston.Ojeda@qg.com">Winston Ojeda</a>
- * @author <a href="mailto:scohen@apache.org">Steve Cohen</a>
- * @version $Id: OS2FTPEntryParser.java 658518 2008-05-21 01:04:30Z sebb $
- * @see org.apache.commons.net.ftp.FTPFileEntryParser FTPFileEntryParser (for usage instructions)
- */
-public class OS2FTPEntryParser extends ConfigurableFTPFileEntryParserImpl
-
-{
-
- private static final String DEFAULT_DATE_FORMAT
- = "MM-dd-yy HH:mm"; //11-09-01 12:30
- /**
- * this is the regular expression used by this parser.
- */
- private static final String REGEX =
- "\\s*([0-9]+)\\s*"
- + "(\\s+|[A-Z]+)\\s*"
- + "(DIR|\\s+)\\s*"
- + "(\\S+)\\s+(\\S+)\\s+" /* date stuff */
- + "(\\S.*)";
-
- /**
- * The default constructor for a OS2FTPEntryParser object.
- *
- * @exception IllegalArgumentException
- * Thrown if the regular expression is unparseable. Should not be seen
- * under normal conditions. It it is seen, this is a sign that
- * <code>REGEX</code> is not a valid regular expression.
- */
- public OS2FTPEntryParser()
- {
- this(null);
- }
-
- /**
- * This constructor allows the creation of an OS2FTPEntryParser object
- * with something other than the default configuration.
- *
- * @param config The {@link FTPClientConfig configuration} object used to
- * configure this parser.
- * @exception IllegalArgumentException
- * Thrown if the regular expression is unparseable. Should not be seen
- * under normal conditions. It it is seen, this is a sign that
- * <code>REGEX</code> is not a valid regular expression.
- * @since 1.4
- */
- public OS2FTPEntryParser(FTPClientConfig config)
- {
- super(REGEX);
- configure(config);
- }
-
- /**
- * Parses a line of an OS2 FTP server file listing and converts it into a
- * usable format in the form of an <code> FTPFile </code> instance. If the
- * file listing line doesn't describe a file, <code> null </code> is
- * returned, otherwise a <code> FTPFile </code> instance representing the
- * files in the directory is returned.
- * <p>
- * @param entry A line of text from the file listing
- * @return An FTPFile instance corresponding to the supplied entry
- */
- public FTPFile parseFTPEntry(String entry)
- {
-
- FTPFile f = new FTPFile();
- if (matches(entry))
- {
- String size = group(1);
- String attrib = group(2);
- String dirString = group(3);
- String datestr = group(4)+" "+group(5);
- String name = group(6);
- try
- {
- f.setTimestamp(super.parseTimestamp(datestr));
- }
- catch (ParseException e)
- {
- // intentionally do nothing
- }
-
-
- //is it a DIR or a file
- if (dirString.trim().equals("DIR") || attrib.trim().equals("DIR"))
- {
- f.setType(FTPFile.DIRECTORY_TYPE);
- }
- else
- {
- f.setType(FTPFile.FILE_TYPE);
- }
-
-
- //set the name
- f.setName(name.trim());
-
- //set the size
- f.setSize(Long.parseLong(size.trim()));
-
- return (f);
- }
- return null;
-
- }
-
- /**
- * Defines a default configuration to be used when this class is
- * instantiated without a {@link FTPClientConfig FTPClientConfig}
- * parameter being specified.
- * @return the default configuration for this parser.
- */
- @Override
- protected FTPClientConfig getDefaultConfiguration() {
- return new FTPClientConfig(
- FTPClientConfig.SYST_OS2,
- DEFAULT_DATE_FORMAT,
- null, null, null, null);
- }
-
-}
diff --git a/org/apache/commons/net/ftp/parser/OS400FTPEntryParser.class b/org/apache/commons/net/ftp/parser/OS400FTPEntryParser.class
deleted file mode 100644
index b77795b..0000000
--- a/org/apache/commons/net/ftp/parser/OS400FTPEntryParser.class
+++ /dev/null
Binary files differ
diff --git a/org/apache/commons/net/ftp/parser/OS400FTPEntryParser.java b/org/apache/commons/net/ftp/parser/OS400FTPEntryParser.java
deleted file mode 100644
index 66c370b..0000000
--- a/org/apache/commons/net/ftp/parser/OS400FTPEntryParser.java
+++ /dev/null
@@ -1,158 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.net.ftp.parser;
-
-import java.text.ParseException;
-
-import org.apache.commons.net.ftp.FTPClientConfig;
-import org.apache.commons.net.ftp.FTPFile;
-
-/**
- * @version $Id: OS400FTPEntryParser.java 658518 2008-05-21 01:04:30Z sebb $
- */
-
-public class OS400FTPEntryParser extends ConfigurableFTPFileEntryParserImpl
-{
- private static final String DEFAULT_DATE_FORMAT
- = "yy/MM/dd HH:mm:ss"; //01/11/09 12:30:24
-
-
-
- private static final String REGEX =
- "(\\S+)\\s+" // user
- + "(\\d+)\\s+" // size
- + "(\\S+)\\s+(\\S+)\\s+" // date stuff
- + "(\\*\\S+)\\s+" // *STMF/*DIR
- + "(\\S+/?)\\s*"; // filename
-
-
- /**
- * The default constructor for a OS400FTPEntryParser object.
- *
- * @exception IllegalArgumentException
- * Thrown if the regular expression is unparseable. Should not be seen
- * under normal conditions. It it is seen, this is a sign that
- * <code>REGEX</code> is not a valid regular expression.
- */
- public OS400FTPEntryParser()
- {
- this(null);
- }
-
- /**
- * This constructor allows the creation of an OS400FTPEntryParser object
- * with something other than the default configuration.
- *
- * @param config The {@link FTPClientConfig configuration} object used to
- * configure this parser.
- * @exception IllegalArgumentException
- * Thrown if the regular expression is unparseable. Should not be seen
- * under normal conditions. It it is seen, this is a sign that
- * <code>REGEX</code> is not a valid regular expression.
- * @since 1.4
- */
- public OS400FTPEntryParser(FTPClientConfig config)
- {
- super(REGEX);
- configure(config);
- }
-
-
- public FTPFile parseFTPEntry(String entry)
- {
-
- FTPFile file = new FTPFile();
- file.setRawListing(entry);
- int type;
-
- if (matches(entry))
- {
- String usr = group(1);
- String filesize = group(2);
- String datestr = group(3)+" "+group(4);
- String typeStr = group(5);
- String name = group(6);
-
- try
- {
- file.setTimestamp(super.parseTimestamp(datestr));
- }
- catch (ParseException e)
- {
- // intentionally do nothing
- }
-
-
- if (typeStr.equalsIgnoreCase("*STMF"))
- {
- type = FTPFile.FILE_TYPE;
- }
- else if (typeStr.equalsIgnoreCase("*DIR"))
- {
- type = FTPFile.DIRECTORY_TYPE;
- }
- else
- {
- type = FTPFile.UNKNOWN_TYPE;
- }
-
- file.setType(type);
-
- file.setUser(usr);
-
- try
- {
- file.setSize(Long.parseLong(filesize));
- }
- catch (NumberFormatException e)
- {
- // intentionally do nothing
- }
-
- if (name.endsWith("/"))
- {
- name = name.substring(0, name.length() - 1);
- }
- int pos = name.lastIndexOf('/');
- if (pos > -1)
- {
- name = name.substring(pos + 1);
- }
-
- file.setName(name);
-
- return file;
- }
- return null;
- }
-
- /**
- * Defines a default configuration to be used when this class is
- * instantiated without a {@link FTPClientConfig FTPClientConfig}
- * parameter being specified.
- * @return the default configuration for this parser.
- */
- @Override
- protected FTPClientConfig getDefaultConfiguration() {
- return new FTPClientConfig(
- FTPClientConfig.SYST_OS400,
- DEFAULT_DATE_FORMAT,
- null, null, null, null);
- }
-
-}
diff --git a/org/apache/commons/net/ftp/parser/ParserInitializationException.class b/org/apache/commons/net/ftp/parser/ParserInitializationException.class
deleted file mode 100644
index 4f7fb6f..0000000
--- a/org/apache/commons/net/ftp/parser/ParserInitializationException.class
+++ /dev/null
Binary files differ
diff --git a/org/apache/commons/net/ftp/parser/ParserInitializationException.java b/org/apache/commons/net/ftp/parser/ParserInitializationException.java
deleted file mode 100644
index 8af9261..0000000
--- a/org/apache/commons/net/ftp/parser/ParserInitializationException.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.net.ftp.parser;
-
-/**
- * This class encapsulates all errors that may be thrown by
- * the process of an FTPFileEntryParserFactory creating and
- * instantiating an FTPFileEntryParser.
- */
-public class ParserInitializationException extends RuntimeException {
-
- /**
- * Root exception that caused this to be thrown
- */
- private final Throwable rootCause;
-
- /**
- * Constucts a ParserInitializationException with just a message
- *
- * @param message Exception message
- */
- public ParserInitializationException(String message) {
- super(message);
- this.rootCause = null;
- }
-
- /**
- * Constucts a ParserInitializationException with a message
- * and a root cause.
- *
- * @param message Exception message
- * @param rootCause root cause throwable that caused
- * this to be thrown
- */
- public ParserInitializationException(String message, Throwable rootCause) {
- super(message);
- this.rootCause = rootCause;
- }
-
- /**
- * returns the root cause of this exception or null
- * if no root cause was specified.
- *
- * @return the root cause of this exception being thrown
- */
- public Throwable getRootCause() {
- return this.rootCause;
- }
-
-}
diff --git a/org/apache/commons/net/ftp/parser/RegexFTPFileEntryParserImpl.class b/org/apache/commons/net/ftp/parser/RegexFTPFileEntryParserImpl.class
deleted file mode 100644
index 3cd32f0..0000000
--- a/org/apache/commons/net/ftp/parser/RegexFTPFileEntryParserImpl.class
+++ /dev/null
Binary files differ
diff --git a/org/apache/commons/net/ftp/parser/RegexFTPFileEntryParserImpl.java b/org/apache/commons/net/ftp/parser/RegexFTPFileEntryParserImpl.java
deleted file mode 100644
index 5277444..0000000
--- a/org/apache/commons/net/ftp/parser/RegexFTPFileEntryParserImpl.java
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-package org.apache.commons.net.ftp.parser;
-
-import java.util.regex.MatchResult;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-import java.util.regex.PatternSyntaxException;
-
-import org.apache.commons.net.ftp.FTPFileEntryParserImpl;
-
-/**
- * This abstract class implements both the older FTPFileListParser and
- * newer FTPFileEntryParser interfaces with default functionality.
- * All the classes in the parser subpackage inherit from this.
- *
- * This is the base for all regular based FTPFileEntryParser
- *
- * @author Steve Cohen <scohen@apache.org>
- */
-public abstract class RegexFTPFileEntryParserImpl extends
- FTPFileEntryParserImpl {
- /**
- * internal pattern the matcher tries to match, representing a file
- * entry
- */
- private Pattern pattern = null;
-
- /**
- * internal match result used by the parser
- */
- private MatchResult result = null;
-
- /**
- * Internal PatternMatcher object used by the parser. It has protected
- * scope in case subclasses want to make use of it for their own purposes.
- */
- protected Matcher _matcher_ = null;
-
- /**
- * The constructor for a RegexFTPFileEntryParserImpl object.
- *
- * @param regex The regular expression with which this object is
- * initialized.
- *
- * @exception IllegalArgumentException
- * Thrown if the regular expression is unparseable. Should not be seen in
- * normal conditions. It it is seen, this is a sign that a subclass has
- * been created with a bad regular expression. Since the parser must be
- * created before use, this means that any bad parser subclasses created
- * from this will bomb very quickly, leading to easy detection.
- */
-
- public RegexFTPFileEntryParserImpl(String regex) {
- super();
- setRegex(regex);
- }
-
- /**
- * Convenience method delegates to the internal MatchResult's matches()
- * method.
- *
- * @param s the String to be matched
- * @return true if s matches this object's regular expression.
- */
-
- public boolean matches(String s) {
- this.result = null;
- _matcher_ = pattern.matcher(s);
- if (_matcher_.matches()) {
- this.result = _matcher_.toMatchResult();
- }
- return null != this.result;
- }
-
- /**
- * Convenience method
- *
- * @return the number of groups() in the internal MatchResult.
- */
-
- public int getGroupCnt() {
- if (this.result == null) {
- return 0;
- }
- return this.result.groupCount();
- }
-
- /**
- * Convenience method delegates to the internal MatchResult's group()
- * method.
- *
- * @param matchnum match group number to be retrieved
- *
- * @return the content of the <code>matchnum'th<code> group of the internal
- * match or null if this method is called without a match having
- * been made.
- */
- public String group(int matchnum) {
- if (this.result == null) {
- return null;
- }
- return this.result.group(matchnum);
- }
-
- /**
- * For debugging purposes - returns a string shows each match group by
- * number.
- *
- * @return a string shows each match group by number.
- */
-
- public String getGroupsAsString() {
- StringBuffer b = new StringBuffer();
- for (int i = 1; i <= this.result.groupCount(); i++) {
- b.append(i).append(") ").append(this.result.group(i)).append(
- System.getProperty("line.separator"));
- }
- return b.toString();
- }
-
- /**
- * Alter the current regular expression being utilised for entry parsing
- * and create a new {@link Pattern} instance.
- * @param regex The new regular expression
- * @return
- * @since 2.0
- */
- public boolean setRegex(String regex) {
- try {
- pattern = Pattern.compile(regex);
- } catch (PatternSyntaxException pse) {
- throw new IllegalArgumentException("Unparseable regex supplied: "
- + regex);
- }
- return (pattern != null);
- }
-
-}
diff --git a/org/apache/commons/net/ftp/parser/UnixFTPEntryParser.class b/org/apache/commons/net/ftp/parser/UnixFTPEntryParser.class
deleted file mode 100644
index 27a082b..0000000
--- a/org/apache/commons/net/ftp/parser/UnixFTPEntryParser.class
+++ /dev/null
Binary files differ
diff --git a/org/apache/commons/net/ftp/parser/UnixFTPEntryParser.java b/org/apache/commons/net/ftp/parser/UnixFTPEntryParser.java
deleted file mode 100644
index 2a2a909..0000000
--- a/org/apache/commons/net/ftp/parser/UnixFTPEntryParser.java
+++ /dev/null
@@ -1,295 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.net.ftp.parser;
-import java.text.ParseException;
-
-import org.apache.commons.net.ftp.FTPClientConfig;
-import org.apache.commons.net.ftp.FTPFile;
-
-/**
- * Implementation FTPFileEntryParser and FTPFileListParser for standard
- * Unix Systems.
- *
- * This class is based on the logic of Daniel Savarese's
- * DefaultFTPListParser, but adapted to use regular expressions and to fit the
- * new FTPFileEntryParser interface.
- * @version $Id: UnixFTPEntryParser.java 658518 2008-05-21 01:04:30Z sebb $
- * @see org.apache.commons.net.ftp.FTPFileEntryParser FTPFileEntryParser (for usage instructions)
- */
-public class UnixFTPEntryParser extends ConfigurableFTPFileEntryParserImpl
-{
-
- static final String DEFAULT_DATE_FORMAT
- = "MMM d yyyy"; //Nov 9 2001
-
- static final String DEFAULT_RECENT_DATE_FORMAT
- = "MMM d HH:mm"; //Nov 9 20:06
-
- static final String NUMERIC_DATE_FORMAT
- = "yyyy-MM-dd HH:mm"; //2001-11-09 20:06
-
- /**
- * Some Linux distributions are now shipping an FTP server which formats
- * file listing dates in an all-numeric format:
- * <code>"yyyy-MM-dd HH:mm</code>.
- * This is a very welcome development, and hopefully it will soon become
- * the standard. However, since it is so new, for now, and possibly
- * forever, we merely accomodate it, but do not make it the default.
- * <p>
- * For now end users may specify this format only via
- * <code>UnixFTPEntryParser(FTPClientConfig)</code>.
- * Steve Cohen - 2005-04-17
- */
- public static final FTPClientConfig NUMERIC_DATE_CONFIG =
- new FTPClientConfig(
- FTPClientConfig.SYST_UNIX,
- NUMERIC_DATE_FORMAT,
- null, null, null, null);
-
- /**
- * this is the regular expression used by this parser.
- *
- * Permissions:
- * r the file is readable
- * w the file is writable
- * x the file is executable
- * - the indicated permission is not granted
- * L mandatory locking occurs during access (the set-group-ID bit is
- * on and the group execution bit is off)
- * s the set-user-ID or set-group-ID bit is on, and the corresponding
- * user or group execution bit is also on
- * S undefined bit-state (the set-user-ID bit is on and the user
- * execution bit is off)
- * t the 1000 (octal) bit, or sticky bit, is on [see chmod(1)], and
- * execution is on
- * T the 1000 bit is turned on, and execution is off (undefined bit-
- * state)
- * e z/OS external link bit
- */
- private static final String REGEX =
- "([bcdelfmpSs-])"
- +"(((r|-)(w|-)([xsStTL-]))((r|-)(w|-)([xsStTL-]))((r|-)(w|-)([xsStTL-])))\\+?\\s+"
- + "(\\d+)\\s+"
- + "(?:(\\S+(?:\\s\\S+)*?)\\s+)?" // owner name (optional spaces)
- + "(?:(\\S+(?:\\s\\S+)*)\\s+)?" // group name (optional spaces)
- + "(\\d+(?:,\\s*\\d+)?)\\s+"
-
- /*
- numeric or standard format date
- */
- + "((?:\\d+[-/]\\d+[-/]\\d+)|(?:\\S+\\s+\\S+))\\s+"
-
- /*
- year (for non-recent standard format)
- or time (for numeric or recent standard format
- */
- + "(\\d+(?::\\d+)?)\\s+"
-
- + "(\\S*)(\\s*.*)";
-
-
- /**
- * The default constructor for a UnixFTPEntryParser object.
- *
- * @exception IllegalArgumentException
- * Thrown if the regular expression is unparseable. Should not be seen
- * under normal conditions. It it is seen, this is a sign that
- * <code>REGEX</code> is not a valid regular expression.
- */
- public UnixFTPEntryParser()
- {
- this(null);
- }
-
- /**
- * This constructor allows the creation of a UnixFTPEntryParser object with
- * something other than the default configuration.
- *
- * @param config The {@link FTPClientConfig configuration} object used to
- * configure this parser.
- * @exception IllegalArgumentException
- * Thrown if the regular expression is unparseable. Should not be seen
- * under normal conditions. It it is seen, this is a sign that
- * <code>REGEX</code> is not a valid regular expression.
- * @since 1.4
- */
- public UnixFTPEntryParser(FTPClientConfig config)
- {
- super(REGEX);
- configure(config);
- }
-
-
- /**
- * Parses a line of a unix (standard) FTP server file listing and converts
- * it into a usable format in the form of an <code> FTPFile </code>
- * instance. If the file listing line doesn't describe a file,
- * <code> null </code> is returned, otherwise a <code> FTPFile </code>
- * instance representing the files in the directory is returned.
- * <p>
- * @param entry A line of text from the file listing
- * @return An FTPFile instance corresponding to the supplied entry
- */
- public FTPFile parseFTPEntry(String entry) {
- FTPFile file = new FTPFile();
- file.setRawListing(entry);
- int type;
- boolean isDevice = false;
-
- if (matches(entry))
- {
- String typeStr = group(1);
- String hardLinkCount = group(15);
- String usr = group(16);
- String grp = group(17);
- String filesize = group(18);
- String datestr = group(19) + " " + group(20);
- String name = group(21);
- String endtoken = group(22);
-
- try
- {
- file.setTimestamp(super.parseTimestamp(datestr));
- }
- catch (ParseException e)
- {
- // intentionally do nothing
- }
-
-
- // bcdlfmpSs-
- switch (typeStr.charAt(0))
- {
- case 'd':
- type = FTPFile.DIRECTORY_TYPE;
- break;
- case 'e':
- type = FTPFile.SYMBOLIC_LINK_TYPE;
- break;
- case 'l':
- type = FTPFile.SYMBOLIC_LINK_TYPE;
- break;
- case 'b':
- case 'c':
- isDevice = true;
- // break; - fall through
- case 'f':
- case '-':
- type = FTPFile.FILE_TYPE;
- break;
- default:
- type = FTPFile.UNKNOWN_TYPE;
- }
-
- file.setType(type);
-
- int g = 4;
- for (int access = 0; access < 3; access++, g += 4)
- {
- // Use != '-' to avoid having to check for suid and sticky bits
- file.setPermission(access, FTPFile.READ_PERMISSION,
- (!group(g).equals("-")));
- file.setPermission(access, FTPFile.WRITE_PERMISSION,
- (!group(g + 1).equals("-")));
-
- String execPerm = group(g + 2);
- if (!execPerm.equals("-") && !Character.isUpperCase(execPerm.charAt(0)))
- {
- file.setPermission(access, FTPFile.EXECUTE_PERMISSION, true);
- }
- else
- {
- file.setPermission(access, FTPFile.EXECUTE_PERMISSION, false);
- }
- }
-
- if (!isDevice)
- {
- try
- {
- file.setHardLinkCount(Integer.parseInt(hardLinkCount));
- }
- catch (NumberFormatException e)
- {
- // intentionally do nothing
- }
- }
-
- file.setUser(usr);
- file.setGroup(grp);
-
- try
- {
- file.setSize(Long.parseLong(filesize));
- }
- catch (NumberFormatException e)
- {
- // intentionally do nothing
- }
-
- if (null == endtoken)
- {
- file.setName(name);
- }
- else
- {
- // oddball cases like symbolic links, file names
- // with spaces in them.
- name += endtoken;
- if (type == FTPFile.SYMBOLIC_LINK_TYPE)
- {
-
- int end = name.indexOf(" -> ");
- // Give up if no link indicator is present
- if (end == -1)
- {
- file.setName(name);
- }
- else
- {
- file.setName(name.substring(0, end));
- file.setLink(name.substring(end + 4));
- }
-
- }
- else
- {
- file.setName(name);
- }
- }
- return file;
- }
- return null;
- }
-
- /**
- * Defines a default configuration to be used when this class is
- * instantiated without a {@link FTPClientConfig FTPClientConfig}
- * parameter being specified.
- * @return the default configuration for this parser.
- */
- @Override
- protected FTPClientConfig getDefaultConfiguration() {
- return new FTPClientConfig(
- FTPClientConfig.SYST_UNIX,
- DEFAULT_DATE_FORMAT,
- DEFAULT_RECENT_DATE_FORMAT,
- null, null, null);
- }
-
-}
diff --git a/org/apache/commons/net/ftp/parser/VMSFTPEntryParser.class b/org/apache/commons/net/ftp/parser/VMSFTPEntryParser.class
deleted file mode 100644
index ee8d5f3..0000000
--- a/org/apache/commons/net/ftp/parser/VMSFTPEntryParser.class
+++ /dev/null
Binary files differ
diff --git a/org/apache/commons/net/ftp/parser/VMSFTPEntryParser.java b/org/apache/commons/net/ftp/parser/VMSFTPEntryParser.java
deleted file mode 100644
index 1e55ede..0000000
--- a/org/apache/commons/net/ftp/parser/VMSFTPEntryParser.java
+++ /dev/null
@@ -1,288 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.net.ftp.parser;
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.text.ParseException;
-import java.util.StringTokenizer;
-
-import org.apache.commons.net.ftp.FTPClientConfig;
-import org.apache.commons.net.ftp.FTPFile;
-import org.apache.commons.net.ftp.FTPListParseEngine;
-
-/**
- * Implementation FTPFileEntryParser and FTPFileListParser for VMS Systems.
- * This is a sample of VMS LIST output
- *
- * "1-JUN.LIS;1 9/9 2-JUN-1998 07:32:04 [GROUP,OWNER] (RWED,RWED,RWED,RE)",
- * "1-JUN.LIS;2 9/9 2-JUN-1998 07:32:04 [GROUP,OWNER] (RWED,RWED,RWED,RE)",
- * "DATA.DIR;1 1/9 2-JUN-1998 07:32:04 [GROUP,OWNER] (RWED,RWED,RWED,RE)",
- * <P><B>
- * Note: VMSFTPEntryParser can only be instantiated through the
- * DefaultFTPParserFactory by classname. It will not be chosen
- * by the autodetection scheme.
- * </B>
- * <P>
- *
- * @author <a href="Winston.Ojeda@qg.com">Winston Ojeda</a>
- * @author <a href="mailto:scohen@apache.org">Steve Cohen</a>
- * @author <a href="sestegra@free.fr">Stephane ESTE-GRACIAS</a>
- * @version $Id: VMSFTPEntryParser.java 658518 2008-05-21 01:04:30Z sebb $
- *
- * @see org.apache.commons.net.ftp.FTPFileEntryParser FTPFileEntryParser (for usage instructions)
- * @see org.apache.commons.net.ftp.parser.DefaultFTPFileEntryParserFactory
- */
-public class VMSFTPEntryParser extends ConfigurableFTPFileEntryParserImpl
-{
-
- private static final String DEFAULT_DATE_FORMAT
- = "d-MMM-yyyy HH:mm:ss"; //9-NOV-2001 12:30:24
-
- /**
- * this is the regular expression used by this parser.
- */
- private static final String REGEX =
- "(.*;[0-9]+)\\s*" //1 file and version
- + "(\\d+)/\\d+\\s*" //2 size/allocated
- +"(\\S+)\\s+(\\S+)\\s+" //3+4 date and time
- + "\\[(([0-9$A-Za-z_]+)|([0-9$A-Za-z_]+),([0-9$a-zA-Z_]+))\\]?\\s*" //5(6,7,8) owner
- + "\\([a-zA-Z]*,([a-zA-Z]*),([a-zA-Z]*),([a-zA-Z]*)\\)"; //9,10,11 Permissions (O,G,W)
- // TODO - perhaps restrict permissions to [RWED]* ?
-
-
-
- /**
- * Constructor for a VMSFTPEntryParser object.
- *
- * @exception IllegalArgumentException
- * Thrown if the regular expression is unparseable. Should not be seen
- * under normal conditions. It it is seen, this is a sign that
- * <code>REGEX</code> is not a valid regular expression.
- */
- public VMSFTPEntryParser()
- {
- this(null);
- }
-
- /**
- * This constructor allows the creation of a VMSFTPEntryParser object with
- * something other than the default configuration.
- *
- * @param config The {@link FTPClientConfig configuration} object used to
- * configure this parser.
- * @exception IllegalArgumentException
- * Thrown if the regular expression is unparseable. Should not be seen
- * under normal conditions. It it is seen, this is a sign that
- * <code>REGEX</code> is not a valid regular expression.
- * @since 1.4
- */
- public VMSFTPEntryParser(FTPClientConfig config)
- {
- super(REGEX);
- configure(config);
- }
-
-
-
- /***
- * Parses an FTP server file listing and converts it into a usable format
- * in the form of an array of <code> FTPFile </code> instances. If the
- * file list contains no files, <code> null </code> should be
- * returned, otherwise an array of <code> FTPFile </code> instances
- * representing the files in the directory is returned.
- * <p>
- * @param listStream The InputStream from which the file list should be
- * read.
- * @return The list of file information contained in the given path. null
- * if the list could not be obtained or if there are no files in
- * the directory.
- * @exception IOException If an I/O error occurs reading the listStream.
- ***/
- public FTPFile[] parseFileList(InputStream listStream) throws IOException {
- FTPListParseEngine engine = new FTPListParseEngine(this);
- engine.readServerList(listStream);
- return engine.getFiles();
- }
-
-
-
- /**
- * Parses a line of a VMS FTP server file listing and converts it into a
- * usable format in the form of an <code> FTPFile </code> instance. If the
- * file listing line doesn't describe a file, <code> null </code> is
- * returned, otherwise a <code> FTPFile </code> instance representing the
- * files in the directory is returned.
- * <p>
- * @param entry A line of text from the file listing
- * @return An FTPFile instance corresponding to the supplied entry
- */
- public FTPFile parseFTPEntry(String entry)
- {
- //one block in VMS equals 512 bytes
- long longBlock = 512;
-
- if (matches(entry))
- {
- FTPFile f = new FTPFile();
- f.setRawListing(entry);
- String name = group(1);
- String size = group(2);
- String datestr = group(3)+" "+group(4);
- String owner = group(5);
- String permissions[] = new String[3];
- permissions[0]= group(9);
- permissions[1]= group(10);
- permissions[2]= group(11);
- try
- {
- f.setTimestamp(super.parseTimestamp(datestr));
- }
- catch (ParseException e)
- {
- // intentionally do nothing
- }
-
-
- String grp;
- String user;
- StringTokenizer t = new StringTokenizer(owner, ",");
- switch (t.countTokens()) {
- case 1:
- grp = null;
- user = t.nextToken();
- break;
- case 2:
- grp = t.nextToken();
- user = t.nextToken();
- break;
- default:
- grp = null;
- user = null;
- }
-
- if (name.lastIndexOf(".DIR") != -1)
- {
- f.setType(FTPFile.DIRECTORY_TYPE);
- }
- else
- {
- f.setType(FTPFile.FILE_TYPE);
- }
- //set FTPFile name
- //Check also for versions to be returned or not
- if (isVersioning())
- {
- f.setName(name);
- }
- else
- {
- name = name.substring(0, name.lastIndexOf(";"));
- f.setName(name);
- }
- //size is retreived in blocks and needs to be put in bytes
- //for us humans and added to the FTPFile array
- long sizeInBytes = Long.parseLong(size) * longBlock;
- f.setSize(sizeInBytes);
-
- f.setGroup(grp);
- f.setUser(user);
- //set group and owner
-
- //Set file permission.
- //VMS has (SYSTEM,OWNER,GROUP,WORLD) users that can contain
- //R (read) W (write) E (execute) D (delete)
-
- //iterate for OWNER GROUP WORLD permissions
- for (int access = 0; access < 3; access++)
- {
- String permission = permissions[access];
-
- f.setPermission(access, FTPFile.READ_PERMISSION, permission.indexOf('R')>=0);
- f.setPermission(access, FTPFile.WRITE_PERMISSION, permission.indexOf('W')>=0);
- f.setPermission(access, FTPFile.EXECUTE_PERMISSION, permission.indexOf('E')>=0);
- }
-
- return f;
- }
- return null;
- }
-
-
- /**
- * Reads the next entry using the supplied BufferedReader object up to
- * whatever delemits one entry from the next. This parser cannot use
- * the default implementation of simply calling BufferedReader.readLine(),
- * because one entry may span multiple lines.
- *
- * @param reader The BufferedReader object from which entries are to be
- * read.
- *
- * @return A string representing the next ftp entry or null if none found.
- * @exception IOException thrown on any IO Error reading from the reader.
- */
- @Override
- public String readNextEntry(BufferedReader reader) throws IOException
- {
- String line = reader.readLine();
- StringBuffer entry = new StringBuffer();
- while (line != null)
- {
- if (line.startsWith("Directory") || line.startsWith("Total")) {
- line = reader.readLine();
- continue;
- }
-
- entry.append(line);
- if (line.trim().endsWith(")"))
- {
- break;
- }
- line = reader.readLine();
- }
- return (entry.length() == 0 ? null : entry.toString());
- }
-
- protected boolean isVersioning() {
- return false;
- }
-
- /**
- * Defines a default configuration to be used when this class is
- * instantiated without a {@link FTPClientConfig FTPClientConfig}
- * parameter being specified.
- * @return the default configuration for this parser.
- */
- @Override
- protected FTPClientConfig getDefaultConfiguration() {
- return new FTPClientConfig(
- FTPClientConfig.SYST_VMS,
- DEFAULT_DATE_FORMAT,
- null, null, null, null);
- }
-
-
-}
-
-/* Emacs configuration
- * Local variables: **
- * mode: java **
- * c-basic-offset: 4 **
- * indent-tabs-mode: nil **
- * End: **
- */
diff --git a/org/apache/commons/net/ftp/parser/VMSVersioningFTPEntryParser$NameVersion.class b/org/apache/commons/net/ftp/parser/VMSVersioningFTPEntryParser$NameVersion.class
deleted file mode 100644
index fd27f2a..0000000
--- a/org/apache/commons/net/ftp/parser/VMSVersioningFTPEntryParser$NameVersion.class
+++ /dev/null
Binary files differ
diff --git a/org/apache/commons/net/ftp/parser/VMSVersioningFTPEntryParser.class b/org/apache/commons/net/ftp/parser/VMSVersioningFTPEntryParser.class
deleted file mode 100644
index c0e20b6..0000000
--- a/org/apache/commons/net/ftp/parser/VMSVersioningFTPEntryParser.class
+++ /dev/null
Binary files differ
diff --git a/org/apache/commons/net/ftp/parser/VMSVersioningFTPEntryParser.java b/org/apache/commons/net/ftp/parser/VMSVersioningFTPEntryParser.java
deleted file mode 100644
index cb25709..0000000
--- a/org/apache/commons/net/ftp/parser/VMSVersioningFTPEntryParser.java
+++ /dev/null
@@ -1,183 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.net.ftp.parser;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.ListIterator;
-import java.util.regex.MatchResult;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-import java.util.regex.PatternSyntaxException;
-
-import org.apache.commons.net.ftp.FTPClientConfig;
-
-/**
- * Special implementation VMSFTPEntryParser with versioning turned on.
- * This parser removes all duplicates and only leaves the version with the highest
- * version number for each filename.
- *
- * This is a sample of VMS LIST output
- *
- * "1-JUN.LIS;1 9/9 2-JUN-1998 07:32:04 [GROUP,OWNER] (RWED,RWED,RWED,RE)",
- * "1-JUN.LIS;2 9/9 2-JUN-1998 07:32:04 [GROUP,OWNER] (RWED,RWED,RWED,RE)",
- * "DATA.DIR;1 1/9 2-JUN-1998 07:32:04 [GROUP,OWNER] (RWED,RWED,RWED,RE)",
- * <P>
- *
- * @author <a href="Winston.Ojeda@qg.com">Winston Ojeda</a>
- * @author <a href="sestegra@free.fr">Stephane ESTE-GRACIAS</a>
- * @version $Id: VMSVersioningFTPEntryParser.java 636854 2008-03-13 19:55:01Z sebb $
- *
- * @see org.apache.commons.net.ftp.FTPFileEntryParser FTPFileEntryParser (for usage instructions)
- */
-public class VMSVersioningFTPEntryParser extends VMSFTPEntryParser
-{
-
- private Matcher _preparse_matcher_;
- private Pattern _preparse_pattern_;
- private static final String PRE_PARSE_REGEX =
- "(.*);([0-9]+)\\s*.*";
-
- /**
- * Constructor for a VMSFTPEntryParser object. Sets the versioning member
- * to the supplied value.
- *
- * @exception IllegalArgumentException
- * Thrown if the regular expression is unparseable. Should not be seen
- * under normal conditions. It it is seen, this is a sign that
- * <code>REGEX</code> is not a valid regular expression.
- */
- public VMSVersioningFTPEntryParser()
- {
- this(null);
- }
-
- /**
- * This constructor allows the creation of a VMSVersioningFTPEntryParser
- * object with something other than the default configuration.
- *
- * @param config The {@link FTPClientConfig configuration} object used to
- * configure this parser.
- * @exception IllegalArgumentException
- * Thrown if the regular expression is unparseable. Should not be seen
- * under normal conditions. It it is seen, this is a sign that
- * <code>REGEX</code> is not a valid regular expression.
- * @since 1.4
- */
- public VMSVersioningFTPEntryParser(FTPClientConfig config)
- {
- super();
- configure(config);
- try
- {
- //_preparse_matcher_ = new Perl5Matcher();
- _preparse_pattern_ = Pattern.compile(PRE_PARSE_REGEX);
- }
- catch (PatternSyntaxException pse)
- {
- throw new IllegalArgumentException (
- "Unparseable regex supplied: " + PRE_PARSE_REGEX);
- }
-
- }
-
-
-
- private static class NameVersion {
- String name;
- int versionNumber;
- NameVersion(String name, String vers) {
- this.name = name;
- this.versionNumber = Integer.parseInt(vers);
- }
- }
-
- /**
- * Implement hook provided for those implementers (such as
- * VMSVersioningFTPEntryParser, and possibly others) which return
- * multiple files with the same name to remove the duplicates ..
- *
- * @param original Original list
- *
- * @return Original list purged of duplicates
- */
- @Override
- public List<String> preParse(List<String> original) {
- original = super.preParse(original);
- HashMap<String, NameVersion> existingEntries = new HashMap<String, NameVersion>();
- ListIterator<String> iter = original.listIterator();
- while (iter.hasNext()) {
- String entry = iter.next().trim();
- MatchResult result = null;
- _preparse_matcher_ = _preparse_pattern_.matcher(entry);
- if (_preparse_matcher_.matches()) {
- result = _preparse_matcher_.toMatchResult();
- String name = result.group(1);
- String version = result.group(2);
- NameVersion nv = new NameVersion(name, version);
- NameVersion existing = existingEntries.get(name);
- if (null != existing) {
- if (nv.versionNumber < existing.versionNumber) {
- iter.remove(); // removal removes from original list.
- continue;
- }
- }
- existingEntries.put(name, nv);
- }
-
- }
- // we've now removed all entries less than with less than the largest
- // version number for each name that were listed after the largest.
- // we now must remove those with smaller than the largest version number
- // for each name that were found before the largest
- while (iter.hasPrevious()) {
- String entry = iter.previous().trim();
- MatchResult result = null;
- _preparse_matcher_ = _preparse_pattern_.matcher(entry);
- if (_preparse_matcher_.matches()) {
- result = _preparse_matcher_.toMatchResult();
- String name = result.group(1);
- String version = result.group(2);
- NameVersion nv = new NameVersion(name, version);
- NameVersion existing = existingEntries.get(name);
- if (null != existing) {
- if (nv.versionNumber < existing.versionNumber) {
- iter.remove(); // removal removes from original list.
- }
- }
- }
-
- }
- return original;
- }
-
-
- @Override
- protected boolean isVersioning() {
- return true;
- }
-
-}
-
-/* Emacs configuration
- * Local variables: **
- * mode: java **
- * c-basic-offset: 4 **
- * indent-tabs-mode: nil **
- * End: **
- */