### Eclipse Workspace Patch 1.0 #P org.eclipse.rse.files.ui Index: src/org/eclipse/rse/files/ui/resources/UniversalFileTransferUtility.java =================================================================== RCS file: /cvsroot/dsdp/org.eclipse.tm.rse/plugins/org.eclipse.rse.files.ui/src/org/eclipse/rse/files/ui/resources/UniversalFileTransferUtility.java,v retrieving revision 1.55 diff -u -r1.55 UniversalFileTransferUtility.java --- src/org/eclipse/rse/files/ui/resources/UniversalFileTransferUtility.java 6 Sep 2007 19:21:25 -0000 1.55 +++ src/org/eclipse/rse/files/ui/resources/UniversalFileTransferUtility.java 12 Sep 2007 00:52:00 -0000 @@ -24,6 +24,8 @@ * David McKnight (IBM) - [191472] should not use super transfer with SSH/FTP Folder Copy and Paste * Xuan Chen (IBM) - [191367] with supertransfer on, Drag & Drop Folder from DStore to DStore doesn't work * Xuan Chen (IBM) - [201790] [dnd] Copy and Paste across connections to a Drive doesn't work + * Xuan Chen (IBM) - [202668] [Supertransfer] Subfolders not copied when doing first copy from dstore to Local + * Xuan Chen (IBM) - [202670] [Supertransfer] After doing a copy to a directory that contains folders some folders name's display "deleted" ********************************************************************************/ package org.eclipse.rse.files.ui.resources; @@ -1175,6 +1177,9 @@ } else { + //sometimes, IContainer#members does not return the right members under + //this folder. We need to call refreshLocal() first to overcome this problem + directory.refreshLocal(IResource.DEPTH_ONE, monitor); IResource[] children = directory.members(); SystemWorkspaceResourceSet childSet = new SystemWorkspaceResourceSet(children); SystemRemoteResourceSet childResults = copyWorkspaceResourcesToRemote(childSet, newTargetFolder, monitor, checkForCollisions); @@ -1493,7 +1498,7 @@ //element, the delete command query will not be sent to dstore server. //To overcome this problem, we need to do query on it first to cache //its information so that it could be deleted properly. - targetFS.resolveFilterString(newPath + RemoteFileFilterString.SWITCH_NOSUBDIRS, monitor); + targetFS.resolveFilterString(newTargetParent, null, monitor); targetFS.delete(remoteArchive, monitor); monitor.done(); @@ -1748,15 +1753,27 @@ catch (SystemMessageException e) { SystemMessageDialog.displayMessage(e); + cpdest.getParentRemoteFileSubSystem().resolveFilterString(cpdest.getParentRemoteFile(), null, monitor); cleanup(cpdest, dest); + monitor.done(); + return targetResource; } catch (Exception e) { e.printStackTrace(); + cpdest.getParentRemoteFileSubSystem().resolveFilterString(cpdest.getParentRemoteFile(), null, monitor); cleanup(cpdest, dest); throw e; } + // delete the temp remote archive + //Since this archive file has never been cache before, a default filter DStore Element + //will be created before we send down "delete" commad to dstore server. Since "delete" + //command is not a registered command for a filter + //element, the delete command query will not be sent to dstore server. + //To overcome this problem, we need to do query on it first to cache + //its information so that it could be deleted properly. + cpdest.getParentRemoteFileSubSystem().resolveFilterString(cpdest.getParentRemoteFile(), null, monitor); cleanup(cpdest, dest); monitor.done(); return targetResource;