diff --git a/rse/plugins/org.eclipse.rse.files.ui/src/org/eclipse/rse/files/ui/resources/UniversalFileTransferUtility.java b/rse/plugins/org.eclipse.rse.files.ui/src/org/eclipse/rse/files/ui/resources/UniversalFileTransferUtility.java index 12092cc227e..2aaed81235f 100644 --- a/rse/plugins/org.eclipse.rse.files.ui/src/org/eclipse/rse/files/ui/resources/UniversalFileTransferUtility.java +++ b/rse/plugins/org.eclipse.rse.files.ui/src/org/eclipse/rse/files/ui/resources/UniversalFileTransferUtility.java @@ -40,6 +40,7 @@ import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.Path; import org.eclipse.core.runtime.Status; import org.eclipse.jface.preference.IPreferenceStore; @@ -341,7 +342,7 @@ public class UniversalFileTransferUtility { IFile tempFile = copyRemoteFileToWorkspace(srcFileOrFolder, monitor); - resultSet.addResource(tempFile); + resultSet.addResource(tempFile); } else // folder transfer { @@ -385,7 +386,7 @@ public class UniversalFileTransferUtility { e.printStackTrace(); } - } + } } } } @@ -436,9 +437,44 @@ public class UniversalFileTransferUtility */ } + return resultSet; } + public static void discardReplicasOfDeletedFiles(IRemoteFileSubSystem ss, IContainer folder) + { + try + { + IResource[] members = folder.members(); + for (int i = 0; i < members.length; i++) + { + IResource member = members[i]; + if (member instanceof IFile) + { + // is this a valid replica? + SystemIFileProperties properties = new SystemIFileProperties(member); + String path = properties.getRemoteFilePath(); + if (path != null) + { + IRemoteFile remoteFile = ss.getRemoteFileObject(path); + if (remoteFile != null && !remoteFile.exists()) + { + // this must be old so we should delete this + member.delete(false, new NullProgressMonitor()); + } + } + } + else if (member instanceof IContainer) + { + discardReplicasOfDeletedFiles(ss, (IContainer)member); + } + } + } + catch (Exception e) + { + } + } + public static Object copyRemoteResourceToWorkspace(File srcFileOrFolder, IProgressMonitor monitor) { if (!srcFileOrFolder.exists()) { diff --git a/rse/plugins/org.eclipse.rse.files.ui/src/org/eclipse/rse/internal/files/ui/view/SystemViewRemoteFileAdapter.java b/rse/plugins/org.eclipse.rse.files.ui/src/org/eclipse/rse/internal/files/ui/view/SystemViewRemoteFileAdapter.java index 31ba8cba2bb..2a3ceb14da4 100644 --- a/rse/plugins/org.eclipse.rse.files.ui/src/org/eclipse/rse/internal/files/ui/view/SystemViewRemoteFileAdapter.java +++ b/rse/plugins/org.eclipse.rse.files.ui/src/org/eclipse/rse/internal/files/ui/view/SystemViewRemoteFileAdapter.java @@ -1500,7 +1500,12 @@ public class SystemViewRemoteFileAdapter for (int i = 0; i < set.size(); i++) { IRemoteFile remoteFile = (IRemoteFile)set.get(i); - hierarchicalResult.addResource(UniversalFileTransferUtility.getTempFileFor(remoteFile)); + IResource tempResource = UniversalFileTransferUtility.getTempFileFor(remoteFile); + if (tempResource instanceof IContainer) + { + UniversalFileTransferUtility.discardReplicasOfDeletedFiles((IRemoteFileSubSystem)set.getSubSystem(), (IContainer)tempResource); + } + hierarchicalResult.addResource(tempResource); } return hierarchicalResult; } diff --git a/rse/plugins/org.eclipse.rse.services.dstore/src/org/eclipse/rse/internal/services/dstore/files/DStoreHostFile.java b/rse/plugins/org.eclipse.rse.services.dstore/src/org/eclipse/rse/internal/services/dstore/files/DStoreHostFile.java index e10fb57587c..a77ff2e5e94 100644 --- a/rse/plugins/org.eclipse.rse.services.dstore/src/org/eclipse/rse/internal/services/dstore/files/DStoreHostFile.java +++ b/rse/plugins/org.eclipse.rse.services.dstore/src/org/eclipse/rse/internal/services/dstore/files/DStoreHostFile.java @@ -361,7 +361,7 @@ public class DStoreHostFile implements IHostFile String str = getAttribute(_element.getSource(), ATTRIBUTE_CAN_READ); if (str == null) { - System.out.println("HELP:"+_element.toString()); //$NON-NLS-1$ + //System.out.println("HELP:"+_element.toString()); //$NON-NLS-1$ return false; } else diff --git a/rse/plugins/org.eclipse.rse.subsystems.files.dstore/src/org/eclipse/rse/internal/subsystems/files/dstore/DStoreFile.java b/rse/plugins/org.eclipse.rse.subsystems.files.dstore/src/org/eclipse/rse/internal/subsystems/files/dstore/DStoreFile.java index ba341be5889..e9de9d5d97f 100644 --- a/rse/plugins/org.eclipse.rse.subsystems.files.dstore/src/org/eclipse/rse/internal/subsystems/files/dstore/DStoreFile.java +++ b/rse/plugins/org.eclipse.rse.subsystems.files.dstore/src/org/eclipse/rse/internal/subsystems/files/dstore/DStoreFile.java @@ -76,12 +76,12 @@ public class DStoreFile extends AbstractRemoteFile implements IRemoteFile String parentPath = pathOnly; if (nameSep > 0) { - parentName = pathOnly.substring(nameSep); + parentName = pathOnly.substring(nameSep + 1); parentPath = pathOnly.substring(0, nameSep); } else { - parentName = pathOnly.substring(nameSep); + parentName = pathOnly.substring(nameSep + 1); parentPath = "" + sep; }