Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 73857 Details for
Bug 196211
[Move][FTP][Local] Move a folder to a directory that contains a folder by that name errors
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
[patch]
Updates for Local and DStore move to use Java File.rename()
patch.txt (text/plain), 7.54 KB, created by
Kevin Doyle
on 2007-07-16 11:42:24 EDT
(
hide
)
Description:
Updates for Local and DStore move to use Java File.rename()
Filename:
MIME Type:
Creator:
Kevin Doyle
Created:
2007-07-16 11:42:24 EDT
Size:
7.54 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.rse.services.local >Index: src/org/eclipse/rse/internal/services/local/files/LocalFileService.java >=================================================================== >RCS file: /cvsroot/dsdp/org.eclipse.tm.rse/plugins/org.eclipse.rse.services.local/src/org/eclipse/rse/internal/services/local/files/LocalFileService.java,v >retrieving revision 1.11 >diff -u -r1.11 LocalFileService.java >--- src/org/eclipse/rse/internal/services/local/files/LocalFileService.java 4 Jul 2007 18:24:36 -0000 1.11 >+++ src/org/eclipse/rse/internal/services/local/files/LocalFileService.java 16 Jul 2007 13:34:26 -0000 >@@ -17,6 +17,7 @@ > * Kevin Doyle (IBM) - [182221] Throwing Proper Exceptions on create file/folder > * Xuan Chen (IBM) - Fix 189487 - copy and paste a folder did not work - workbench hang > * David McKnight (IBM) - [192705] Exception needs to be thrown when rename fails >+ * Kevin Doyle (IBM) - [196211] Move a folder to a directory that contains a folder by that name errors > ********************************************************************************/ > > package org.eclipse.rse.internal.services.local.files; >@@ -1047,28 +1048,30 @@ > { > File sourceFolderOrFile = new File(srcParent, srcName); > File targetFolder = new File(tgtParent, tgtName); >+ boolean movedOk = false; > boolean sourceIsVirtual = ArchiveHandlerManager.isVirtual(sourceFolderOrFile.getAbsolutePath()); > boolean targetIsVirtual = ArchiveHandlerManager.isVirtual(targetFolder.getAbsolutePath()); > boolean targetIsArchive = ArchiveHandlerManager.getInstance().isArchive(targetFolder); >- if (sourceIsVirtual || targetIsVirtual || targetIsArchive) >+ if (!sourceIsVirtual && !targetIsVirtual && !targetIsArchive) > /* DKM > * we shouldn't be moving archives like virtuals > *|| ArchiveHandlerManager.getInstance().isRegisteredArchive(newName) > * > */ > { >+ File fileToMove = new File(srcParent, srcName); >+ File newFile = new File(tgtParent, tgtName); >+ movedOk = fileToMove.renameTo(newFile); >+ } >+ >+ if (!movedOk) >+ { > if (copy(srcParent, srcName, tgtParent, tgtName, monitor)) > { >- return delete(srcParent, srcName, monitor); >+ movedOk = delete(srcParent, srcName, monitor); > } >- else return false; >- } >- else >- { >- File fileToMove = new File(srcParent, srcName); >- File newFile = new File(tgtParent, tgtName); >- return fileToMove.renameTo(newFile); > } >+ return movedOk; > } > > >#P org.eclipse.rse.services.dstore >Index: miners/org/eclipse/rse/dstore/universal/miners/UniversalFileSystemMiner.java >=================================================================== >RCS file: /cvsroot/dsdp/org.eclipse.tm.rse/plugins/org.eclipse.rse.services.dstore/miners/org/eclipse/rse/dstore/universal/miners/UniversalFileSystemMiner.java,v >retrieving revision 1.13 >diff -u -r1.13 UniversalFileSystemMiner.java >--- miners/org/eclipse/rse/dstore/universal/miners/UniversalFileSystemMiner.java 9 Jul 2007 18:36:56 -0000 1.13 >+++ miners/org/eclipse/rse/dstore/universal/miners/UniversalFileSystemMiner.java 16 Jul 2007 13:34:26 -0000 >@@ -18,6 +18,7 @@ > * Xuan Chen (IBM) - [189681] [dstore][linux] Refresh Folder in My Home messes up Refresh in Root > * Xuan Chen (IBM) - [191280] [dstore] Expand fails for folder "/folk" with 3361 children > * Kevin Doyle (IBM) - [195709] Windows Copying doesn't work when path contains space >+ * Kevin Doyle (IBM) - [196211] DStore Move tries rename if that fails copy/delete > *******************************************************************************/ > > package org.eclipse.rse.dstore.universal.miners; >@@ -962,8 +963,7 @@ > public DataElement handleRename(DataElement subject, DataElement status) { > File fileoldname = new File(subject.getAttribute(DE.A_VALUE) > + File.separatorChar + subject.getName()); >- File filerename = new File(subject.getAttribute(DE.A_VALUE) >- + File.separatorChar + subject.getAttribute(DE.A_SOURCE)); >+ File filerename = new File(subject.getAttribute(DE.A_SOURCE)); > > // System.out.println(ArchiveHandlerManager.isVirtual(fileoldname > // .getAbsolutePath())); >Index: src/org/eclipse/rse/internal/services/dstore/files/DStoreFileService.java >=================================================================== >RCS file: /cvsroot/dsdp/org.eclipse.tm.rse/plugins/org.eclipse.rse.services.dstore/src/org/eclipse/rse/internal/services/dstore/files/DStoreFileService.java,v >retrieving revision 1.13 >diff -u -r1.13 DStoreFileService.java >--- src/org/eclipse/rse/internal/services/dstore/files/DStoreFileService.java 11 Jul 2007 17:15:15 -0000 1.13 >+++ src/org/eclipse/rse/internal/services/dstore/files/DStoreFileService.java 16 Jul 2007 13:34:26 -0000 >@@ -960,9 +960,21 @@ > > public boolean rename(String remoteParent, String oldName, String newName, IProgressMonitor monitor) throws SystemMessageException > { >- String remotePath = remoteParent + getSeparator(remoteParent) + oldName; >- DataElement de = getElementFor(remotePath); >- de.setAttribute(DE.A_SOURCE, newName); >+ String oldPath, newPath = null; >+ // if remoteParent is null or empty then we are doing a move >+ if (remoteParent == null || remoteParent == "") //$NON-NLS-1$ >+ { >+ oldPath = oldName; >+ newPath = newName; >+ } >+ else >+ { >+ oldPath = remoteParent + getSeparator(remoteParent) + oldName; >+ newPath = remoteParent + getSeparator(remoteParent) + newName; >+ } >+ >+ DataElement de = getElementFor(oldPath); >+ de.setAttribute(DE.A_SOURCE, newPath); > > DataElement status = dsStatusCommand(de, IUniversalDataStoreConstants.C_RENAME, monitor); > >@@ -983,26 +995,42 @@ > return retVal; > } > >+ protected boolean moveByCopy(String srcParent, String srcName, String tgtParent, String tgtName, IProgressMonitor monitor) throws SystemMessageException >+ { >+ if (copy(srcParent, srcName, tgtParent, tgtName, monitor)) >+ { >+ return delete(srcParent, srcName, monitor); >+ } >+ return false; >+ } >+ > public boolean move(String srcParent, String srcName, String tgtParent, String tgtName, IProgressMonitor monitor) throws SystemMessageException > { >-// String src = srcParent + getSeparator(srcParent) + srcName; >-// String tgt = tgtParent + getSeparator(tgtParent) + tgtName; >-// boolean isVirtual = ArchiveHandlerManager.isVirtual(src) || ArchiveHandlerManager.isVirtual(tgt); >- //if (isVirtual || isArchive) >- { >- if (copy(srcParent, srcName, tgtParent, tgtName, monitor)) >- { >- try >- { >- delete(srcParent, srcName, monitor); >- } >- catch (Exception e) >- { >- return false; >- } >- return true; >+ String src = srcParent + getSeparator(srcParent) + srcName; >+ String tgt = tgtParent + getSeparator(tgtParent) + tgtName; >+ boolean isVirtual = ArchiveHandlerManager.isVirtual(src) || ArchiveHandlerManager.isVirtual(tgt); >+ boolean isArchive = ArchiveHandlerManager.getInstance().isRegisteredArchive(tgt); >+ if (isVirtual || isArchive) >+ { >+ return moveByCopy(srcParent, srcName, tgtParent, tgtName, monitor); >+ } >+ else >+ { >+ boolean movedOk = false; >+ try >+ { >+ movedOk = rename("", src, tgt, monitor); //$NON-NLS-1$ > } >- return false; >+ catch (SystemMessageException e) >+ { >+ return moveByCopy(srcParent, srcName, tgtParent, tgtName, monitor); >+ } >+ // movedOk should never be false otherwise the last DataElement status was null >+ if (!movedOk) >+ { >+ movedOk = moveByCopy(srcParent, srcName, tgtParent, tgtName, monitor); >+ } >+ return movedOk; > } > > /*
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Flags:
mober.at+eclipse
:
iplog+
Actions:
View
|
Diff
Attachments on
bug 196211
:
73699
|
73745
| 73857