Author: bfoster
Date: Thu Jun 9 21:16:22 2011
New Revision: 1134082
URL: http://svn.apache.org/viewvc?rev=1134082&view=rev
Log:
- updated to add new Protocol method: ls(ProtocolFileFilter)
----------------
OODT-194
Modified:
oodt/branches/protocol/protocol-ftp/src/main/java/org/apache/oodt/cas/protocol/ftp/CogJGlobusFtpProtocol.java
oodt/branches/protocol/protocol-ftp/src/main/java/org/apache/oodt/cas/protocol/ftp/CommonsNetFtpProtocol.java
Modified:
oodt/branches/protocol/protocol-ftp/src/main/java/org/apache/oodt/cas/protocol/ftp/CogJGlobusFtpProtocol.java
URL:
http://svn.apache.org/viewvc/oodt/branches/protocol/protocol-ftp/src/main/java/org/apache/oodt/cas/protocol/ftp/CogJGlobusFtpProtocol.java?rev=1134082&r1=1134081&r2=1134082&view=diff
==============================================================================
---
oodt/branches/protocol/protocol-ftp/src/main/java/org/apache/oodt/cas/protocol/ftp/CogJGlobusFtpProtocol.java
(original)
+++
oodt/branches/protocol/protocol-ftp/src/main/java/org/apache/oodt/cas/protocol/ftp/CogJGlobusFtpProtocol.java
Thu Jun 9 21:16:22 2011
@@ -26,6 +26,7 @@ import org.apache.oodt.cas.protocol.Prot
import org.apache.oodt.cas.protocol.ProtocolFile;
import org.apache.oodt.cas.protocol.auth.Authentication;
import org.apache.oodt.cas.protocol.exceptions.ProtocolException;
+import org.apache.oodt.cas.protocol.util.ProtocolFileFilter;
import org.globus.ftp.FTPClient;
import org.globus.ftp.FileInfo;
@@ -128,7 +129,25 @@ public class CogJGlobusFtpProtocol imple
+ e.getMessage());
}
}
-
+
+ public List<ProtocolFile> ls(ProtocolFileFilter filter) throws
ProtocolException {
+ try {
+ ftp.setActive(ftp.setLocalPassive());
+ Vector<FileInfo> fileList = (Vector<FileInfo>) ftp.list("*", null);
+ Vector<ProtocolFile> returnList = new Vector<ProtocolFile>();
+ for (FileInfo file : fileList) {
+ ProtocolFile pFile = new ProtocolFile(this.pwd(), file.getName(),
file.isDirectory());
+ if (filter.accept(pFile)) {
+ returnList.add(pFile);
+ }
+ }
+ return returnList;
+ } catch (Exception e) {
+ throw new ProtocolException("Failed to get list of files : "
+ + e.getMessage());
+ }
+ }
+
public ProtocolFile pwd() throws ProtocolException {
try {
return new ProtocolFile(ftp.getCurrentDir(), true);
@@ -143,11 +162,11 @@ public class CogJGlobusFtpProtocol imple
public void delete(ProtocolFile file) throws ProtocolException {
try {
- ftp.deleteFile(file.getPath());
- } catch (Exception e) {
- throw new ProtocolException("Failed to download file '"
- + file.getPath() + "' : " + e.getMessage(), e);
- }
+ ftp.deleteFile(file.getPath());
+ } catch (Exception e) {
+ throw new ProtocolException("Failed to download file '"
+ + file.getPath() + "' : " +
e.getMessage(), e);
+ }
}
}
Modified:
oodt/branches/protocol/protocol-ftp/src/main/java/org/apache/oodt/cas/protocol/ftp/CommonsNetFtpProtocol.java
URL:
http://svn.apache.org/viewvc/oodt/branches/protocol/protocol-ftp/src/main/java/org/apache/oodt/cas/protocol/ftp/CommonsNetFtpProtocol.java?rev=1134082&r1=1134081&r2=1134082&view=diff
==============================================================================
---
oodt/branches/protocol/protocol-ftp/src/main/java/org/apache/oodt/cas/protocol/ftp/CommonsNetFtpProtocol.java
(original)
+++
oodt/branches/protocol/protocol-ftp/src/main/java/org/apache/oodt/cas/protocol/ftp/CommonsNetFtpProtocol.java
Thu Jun 9 21:16:22 2011
@@ -31,6 +31,7 @@ import org.apache.oodt.cas.protocol.Prot
import org.apache.oodt.cas.protocol.ProtocolFile;
import org.apache.oodt.cas.protocol.auth.Authentication;
import org.apache.oodt.cas.protocol.exceptions.ProtocolException;
+import org.apache.oodt.cas.protocol.util.ProtocolFileFilter;
/**
* This class is responsible for FTP transfers. It is built as a wrapper around
@@ -42,177 +43,202 @@ import org.apache.oodt.cas.protocol.exce
*/
public class CommonsNetFtpProtocol implements Protocol {
- private FTPClient ftp;
- private String homeDir;
-
- /**
- * Creates a new FtpClient
- */
- public CommonsNetFtpProtocol() {
- ftp = new FTPClient();
- }
-
- /**
- * {@inheritDoc}
- */
- public void connect(String host, Authentication auth) throws
ProtocolException {
- // server cannot be null
- if (host == null) {
- throw new ProtocolException("Tried to connect to server == NULL");
- }
-
- try {
- ftp.connect(host);
- ftp.enterLocalPassiveMode();
- } catch (Exception e) {
- throw new ProtocolException("Failed to connect to server : "
- + e.getMessage());
- }
-
- try {
- // try logging in
- if (!ftp.login(auth.getUser(), auth.getPass())) {
- throw new ProtocolException("Failed logging into host " + host
- + " as user " + auth.getUser());
- }
-
- // set file type to binary
- ftp.setFileType(FTPClient.BINARY_FILE_TYPE);
-
- homeDir = ftp.printWorkingDirectory();
- } catch (Exception e) {
- // login failed
- throw new ProtocolException(
- "Exception thrown while logging into host " + host
- + " as user " + auth.getUser());
- }
- }
-
- /**
- * {@inheritDoc}
- */
- public ProtocolFile pwd() throws ProtocolException {
- try {
- return new ProtocolFile(ftp.printWorkingDirectory(), true);
- } catch (Exception e) {
- throw new ProtocolException("Failed to pwd : " + e.getMessage());
- }
- }
-
- public List<ProtocolFile> ls() throws ProtocolException {
- try {
- FTPFile[] files = ftp.listFiles();
- List<ProtocolFile> returnFiles = new LinkedList<ProtocolFile>();
- for (int i = 0; i < files.length; i++) {
- FTPFile file = files[i];
- if (file == null)
- continue;
- String path = this.pwd().getPath();
- returnFiles.add(new ProtocolFile(path + "/" + file.getName(),
file.isDirectory()));
- }
- // System.out.println("RETURN FILES: " + returnFiles);
- return returnFiles;
- } catch (Exception e) {
- throw new ProtocolException("Failed to get file list : "
- + e.getMessage());
- }
- }
-
- /**
- * {@inheritDoc}
- */
- public void get(ProtocolFile fromFile, File toFile)
- throws ProtocolException {
- // file or toLocalFile cannot be null
- if (fromFile == null || toFile == null) {
- throw new ProtocolException(
- "Can't download file -> ProtocolFile == null ||
toLocalFile == null");
- }
-
- // download file
- OutputStream os = null;
- try {
- os = new FileOutputStream(toFile);
- if (ftp.retrieveFile(fromFile.getName(), os))// {
- throw new ProtocolException("Failed to download file "
- + fromFile.getName());
- // }
- } catch (Exception e) {
- // download failed
- toFile.delete();
- throw new ProtocolException("FAILED to download: " +
fromFile.getName()
- + " : " + e.getMessage());
- } finally {
- // close output stream
- if (os != null)
- try {
- os.close();
- } catch (Exception e) {
- toFile.delete();
- throw new ProtocolException(
- "Failed to close outputstream : " +
e.getMessage());
- }
- }
- }
-
- /**
- * {@inheritDoc}
- */
- public void put(File fromFile, ProtocolFile toFile) throws
ProtocolException {
- try {
- ftp.storeFile(toFile.getPath(), new FileInputStream(fromFile));
- }catch (Exception e) {
- throw new ProtocolException("Failed to put file '" + fromFile +
"' : " + e.getMessage(), e);
- }
- }
-
- /**
- * {@inheritDoc}
- */
- public void cd(ProtocolFile file) throws ProtocolException {
- try {
- if (!ftp.changeWorkingDirectory(file.getPath()))
- throw new Exception("Directory change method returned false");
- } catch (Exception e) {
- throw new ProtocolException("Failed to cd to " + file.getPath() +
" : "
- + e.getMessage());
- }
- }
-
- public void cdRoot() throws ProtocolException {
- cd(new ProtocolFile(ProtocolFile.SEPARATOR, true));
- }
-
- public void cdHome() throws ProtocolException {
- cd(new ProtocolFile(homeDir, true));
- }
-
- /**
- * {@inheritDoc}
- */
- public void close() throws ProtocolException {
- try {
- ftp.disconnect();
- } catch (Exception e) {
- throw new ProtocolException("Failed to disconnect from server");
- }
- }
-
- /**
- * {@inheritDoc}
- */
- public boolean connected() {
- return ftp.isConnected();
- }
-
- /**
- * {@inheritDoc}
- */
- public void delete(ProtocolFile file) throws ProtocolException {
- try {
- ftp.deleteFile(file.getPath());
- } catch (Exception e) {
- throw new ProtocolException("Failed to delete file '" +
file.getPath() + "' : " + e.getMessage(), e);
- }
- }
+ private FTPClient ftp;
+ private String homeDir;
+
+ /**
+ * Creates a new FtpClient
+ */
+ public CommonsNetFtpProtocol() {
+ ftp = new FTPClient();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void connect(String host, Authentication auth)
+ throws ProtocolException {
+ // server cannot be null
+ if (host == null) {
+ throw new ProtocolException("Tried to connect to server
== NULL");
+ }
+
+ try {
+ ftp.connect(host);
+ ftp.enterLocalPassiveMode();
+ } catch (Exception e) {
+ throw new ProtocolException("Failed to connect to
server : "
+ + e.getMessage());
+ }
+
+ try {
+ // try logging in
+ if (!ftp.login(auth.getUser(), auth.getPass())) {
+ throw new ProtocolException("Failed logging
into host " + host
+ + " as user " + auth.getUser());
+ }
+
+ // set file type to binary
+ ftp.setFileType(FTPClient.BINARY_FILE_TYPE);
+
+ homeDir = ftp.printWorkingDirectory();
+ } catch (Exception e) {
+ // login failed
+ throw new ProtocolException("Exception thrown while
logging into host "
+ + host + " as user " + auth.getUser());
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public ProtocolFile pwd() throws ProtocolException {
+ try {
+ return new ProtocolFile(ftp.printWorkingDirectory(),
true);
+ } catch (Exception e) {
+ throw new ProtocolException("Failed to pwd : " +
e.getMessage());
+ }
+ }
+
+ public List<ProtocolFile> ls() throws ProtocolException {
+ try {
+ FTPFile[] files = ftp.listFiles();
+ List<ProtocolFile> returnFiles = new
LinkedList<ProtocolFile>();
+ for (int i = 0; i < files.length; i++) {
+ FTPFile file = files[i];
+ if (file == null)
+ continue;
+ String path = this.pwd().getPath();
+ returnFiles.add(new ProtocolFile(path + "/" +
file.getName(), file
+ .isDirectory()));
+ }
+ return returnFiles;
+ } catch (Exception e) {
+ throw new ProtocolException("Failed to get file list :
" + e.getMessage());
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public List<ProtocolFile> ls(ProtocolFileFilter filter)
+ throws ProtocolException {
+ try {
+ FTPFile[] files = ftp.listFiles();
+ List<ProtocolFile> returnFiles = new
LinkedList<ProtocolFile>();
+ for (int i = 0; i < files.length; i++) {
+ FTPFile file = files[i];
+ if (file == null)
+ continue;
+ String path = this.pwd().getPath();
+ ProtocolFile pFile = new ProtocolFile(path +
"/" + file.getName(), file
+ .isDirectory());
+ if (filter.accept(pFile)) {
+ returnFiles.add(pFile);
+ }
+ }
+ return returnFiles;
+ } catch (Exception e) {
+ throw new ProtocolException("Failed to get file list :
" + e.getMessage());
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void get(ProtocolFile fromFile, File toFile) throws
ProtocolException {
+ // file or toLocalFile cannot be null
+ if (fromFile == null || toFile == null) {
+ throw new ProtocolException(
+ "Can't download file -> ProtocolFile ==
null || toLocalFile == null");
+ }
+
+ // download file
+ OutputStream os = null;
+ try {
+ os = new FileOutputStream(toFile);
+ if (ftp.retrieveFile(fromFile.getName(), os))// {
+ throw new ProtocolException("Failed to download
file "
+ + fromFile.getName());
+ // }
+ } catch (Exception e) {
+ // download failed
+ toFile.delete();
+ throw new ProtocolException("FAILED to download: " +
fromFile.getName()
+ + " : " + e.getMessage());
+ } finally {
+ // close output stream
+ if (os != null)
+ try {
+ os.close();
+ } catch (Exception e) {
+ toFile.delete();
+ throw new ProtocolException("Failed to
close outputstream : "
+ + e.getMessage());
+ }
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void put(File fromFile, ProtocolFile toFile) throws
ProtocolException {
+ try {
+ ftp.storeFile(toFile.getPath(), new
FileInputStream(fromFile));
+ } catch (Exception e) {
+ throw new ProtocolException("Failed to put file '" +
fromFile + "' : "
+ + e.getMessage(), e);
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void cd(ProtocolFile file) throws ProtocolException {
+ try {
+ if (!ftp.changeWorkingDirectory(file.getPath()))
+ throw new Exception("Directory change method
returned false");
+ } catch (Exception e) {
+ throw new ProtocolException("Failed to cd to " +
file.getPath() + " : "
+ + e.getMessage());
+ }
+ }
+
+ public void cdRoot() throws ProtocolException {
+ cd(new ProtocolFile(ProtocolFile.SEPARATOR, true));
+ }
+
+ public void cdHome() throws ProtocolException {
+ cd(new ProtocolFile(homeDir, true));
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void close() throws ProtocolException {
+ try {
+ ftp.disconnect();
+ } catch (Exception e) {
+ throw new ProtocolException("Failed to disconnect from
server");
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public boolean connected() {
+ return ftp.isConnected();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void delete(ProtocolFile file) throws ProtocolException {
+ try {
+ ftp.deleteFile(file.getPath());
+ } catch (Exception e) {
+ throw new ProtocolException("Failed to delete file '" +
file.getPath()
+ + "' : " + e.getMessage(), e);
+ }
+ }
}