|
From: <ha...@us...> - 2007-10-01 19:14:41
|
Revision: 1767
http://cogkit.svn.sourceforge.net/cogkit/?rev=1767&view=rev
Author: hategan
Date: 2007-10-01 12:14:39 -0700 (Mon, 01 Oct 2007)
Log Message:
-----------
fixed file info
Modified Paths:
--------------
trunk/current/src/cog/modules/provider-gt2/src/org/globus/cog/abstraction/impl/file/gridftp/old/FileResourceImpl.java
Modified: trunk/current/src/cog/modules/provider-gt2/src/org/globus/cog/abstraction/impl/file/gridftp/old/FileResourceImpl.java
===================================================================
--- trunk/current/src/cog/modules/provider-gt2/src/org/globus/cog/abstraction/impl/file/gridftp/old/FileResourceImpl.java 2007-10-01 19:13:58 UTC (rev 1766)
+++ trunk/current/src/cog/modules/provider-gt2/src/org/globus/cog/abstraction/impl/file/gridftp/old/FileResourceImpl.java 2007-10-01 19:14:39 UTC (rev 1767)
@@ -47,6 +47,7 @@
import org.globus.ftp.GridFTPClient;
import org.globus.ftp.GridFTPSession;
import org.globus.ftp.MarkerListener;
+import org.globus.ftp.MlsxEntry;
import org.globus.ftp.Session;
import org.globus.ftp.exception.ServerException;
import org.ietf.jgss.GSSCredential;
@@ -473,27 +474,13 @@
/** get remote file information */
public GridFile getGridFile(String fileName) throws FileResourceException {
-
- String directory = null;
- int endIndex = fileName.lastIndexOf("/");
- if (endIndex < 0) {
- directory = getCurrentDirectory();
+ try {
+ MlsxEntry e = gridFTPClient.mlst(fileName);
+ return createGridFile(e);
}
- else {
- directory = fileName.substring(0, endIndex);
- fileName = fileName.substring(endIndex + 1, fileName.length());
+ catch (Exception e) {
+ throw translateException("Failed to retrieve file information about " + fileName, e);
}
-
- Iterator gridFiles = list(directory).iterator();
-
- while (gridFiles.hasNext()) {
- GridFile gridFile = (GridFile) gridFiles.next();
- if (gridFile.getName().equals(fileName)) {
- return gridFile;
- }
- }
-
- return null;
}
/** change permissions to a remote file */
@@ -557,7 +544,35 @@
return gridFile;
}
+
+ private GridFile createGridFile(MlsxEntry e) throws FileResourceException {
+ GridFile gridFile = new GridFileImpl();
+
+ String directory = getCurrentDirectory();
+ if (directory.endsWith("/")) {
+ gridFile.setAbsolutePathName(directory + e.getFileName());
+ }
+ else {
+ gridFile.setAbsolutePathName(directory + "/" + e.getFileName());
+ }
+
+ gridFile.setLastModified(e.get(MlsxEntry.MODIFY));
+
+ String type = e.get(MlsxEntry.TYPE);
+ if (MlsxEntry.TYPE_FILE.equals(type)) {
+ gridFile.setFileType(GridFile.FILE);
+ }
+ if (MlsxEntry.TYPE_DIR.equals(type) || MlsxEntry.TYPE_PDIR.equals(type) || MlsxEntry.TYPE_CDIR.equals(type)) {
+ gridFile.setFileType(GridFile.DIRECTORY);
+ }
+
+ gridFile.setName(e.getFileName());
+ gridFile.setSize(Long.parseLong(e.get(MlsxEntry.SIZE)));
+
+ return gridFile;
+ }
+
protected Permissions getPermissions(boolean r, boolean w, boolean x) {
Permissions perm = new PermissionsImpl();
perm.setRead(r);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|