diff --git a/rse/plugins/org.eclipse.rse.services.files.ftp/src/org/eclipse/rse/internal/services/files/ftp/FTPHostFile.java b/rse/plugins/org.eclipse.rse.services.files.ftp/src/org/eclipse/rse/internal/services/files/ftp/FTPHostFile.java index a4b94245311..72f59687471 100644 --- a/rse/plugins/org.eclipse.rse.services.files.ftp/src/org/eclipse/rse/internal/services/files/ftp/FTPHostFile.java +++ b/rse/plugins/org.eclipse.rse.services.files.ftp/src/org/eclipse/rse/internal/services/files/ftp/FTPHostFile.java @@ -18,6 +18,7 @@ * Javier Montalvo Orus (Symbian) - Fixing 161238 - [ftp] connections to VMS servers are not usable * Javier Montalvo Orus (Symbian) - Fixing 176216 - [api] FTP sould provide API to allow clients register their own FTPListingParser * Javier Montalvo Orus (Symbian) - [197758] Unix symbolic links are not classified as file vs. folder + * Javier Montalvo Orus (Symbian) - [198272] FTP should return classification for symbolic links so they show a link overlay ********************************************************************************/ package org.eclipse.rse.internal.services.files.ftp; @@ -95,7 +96,7 @@ public class FTPHostFile implements IHostFile return !(_isDirectory || _isRoot); } - public boolean isSymbolicLink() + public boolean isLink() { return _isLink; } @@ -247,4 +248,33 @@ public class FTPHostFile implements IHostFile _isDirectory = isDirectory; } + public String getClassification() { + String result; + String linkTarget; + + if (isLink()) { + result = "symbolic link"; //$NON-NLS-1$ + if ((linkTarget = _ftpFile.getLink()) !=null) { + if(isDirectory()) { + result += "(directory):" + linkTarget; //$NON-NLS-1$ + } else if((getUserPermissions() & 0x01) == 0x01) { + result += "(executable):" + linkTarget; //$NON-NLS-1$ + } else { + result += "(file):" + linkTarget; //$NON-NLS-1$ + } + } + } else if (isFile()) { + if ((getUserPermissions() & 0x01) == 0x01) { + result = "executable"; //$NON-NLS-1$ + } else { + result = "file"; //$NON-NLS-1$ + } + } else if (isDirectory()) { + result = "directory"; //$NON-NLS-1$ + } else { + result = "unknown"; //default-fallback //$NON-NLS-1$ + } + return result; + } + } \ No newline at end of file diff --git a/rse/plugins/org.eclipse.rse.services.files.ftp/src/org/eclipse/rse/internal/services/files/ftp/FTPService.java b/rse/plugins/org.eclipse.rse.services.files.ftp/src/org/eclipse/rse/internal/services/files/ftp/FTPService.java index 35662337031..57a944270ae 100644 --- a/rse/plugins/org.eclipse.rse.services.files.ftp/src/org/eclipse/rse/internal/services/files/ftp/FTPService.java +++ b/rse/plugins/org.eclipse.rse.services.files.ftp/src/org/eclipse/rse/internal/services/files/ftp/FTPService.java @@ -516,7 +516,7 @@ public class FTPService extends AbstractFileService implements IFileService, IFT FTPHostFile f = new FTPHostFile(parentPath, _ftpFiles[i]); String name = f.getName(); - if(f.isSymbolicLink()) { + if(f.isLink()) { if(name.indexOf('.')==-1) { //modify FTPHostFile to be shown as a folder f.setIsDirectory(true); diff --git a/rse/plugins/org.eclipse.rse.subsystems.files.ftp/src/org/eclipse/rse/internal/subsystems/files/ftp/model/FTPRemoteFile.java b/rse/plugins/org.eclipse.rse.subsystems.files.ftp/src/org/eclipse/rse/internal/subsystems/files/ftp/model/FTPRemoteFile.java index 560c05dc76b..dac6fd0239d 100644 --- a/rse/plugins/org.eclipse.rse.subsystems.files.ftp/src/org/eclipse/rse/internal/subsystems/files/ftp/model/FTPRemoteFile.java +++ b/rse/plugins/org.eclipse.rse.subsystems.files.ftp/src/org/eclipse/rse/internal/subsystems/files/ftp/model/FTPRemoteFile.java @@ -12,7 +12,7 @@ * Emily Bruner, Mazen Faraj, Adrian Storisteanu, Li Ding, and Kent Hawley. * * Contributors: - * {Name} (company) - description of contribution. + * Javier Montalvo Orus (Symbian) - [198272] FTP should return classification for symbolic links so they show a link overlay *******************************************************************************/ package org.eclipse.rse.internal.subsystems.files.ftp.model; @@ -48,14 +48,7 @@ public class FTPRemoteFile extends AbstractRemoteFile public String getClassification() { - if (isFile()) - { - return "file"; //$NON-NLS-1$ - } - else - { - return "directory"; //$NON-NLS-1$ - } + return _ftpHostFile.getClassification(); }