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 03e8b57b8d1..ffe1ec46052 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 @@ -26,6 +26,7 @@ * 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" + * Xuan Chen (IBM) - [202949] [archives] copy a folder from one connection to an archive file in a different connection does not work ********************************************************************************/ package org.eclipse.rse.files.ui.resources; @@ -1013,12 +1014,19 @@ public class UniversalFileTransferUtility return null; } boolean isTargetArchive = targetFolder.isArchive(); + boolean isTargetVirtual = ArchiveHandlerManager.isVirtual(targetFolder.getAbsolutePath()); if (isTargetArchive && !targetFolder.getParentRemoteFileSubSystem().getParentRemoteFileSubSystemConfiguration().supportsArchiveManagement()) return null; StringBuffer newPathBuf = new StringBuffer(targetFolder.getAbsolutePath()); if (isTargetArchive) { newPathBuf.append(ArchiveHandlerManager.VIRTUAL_SEPARATOR); } + else if (isTargetVirtual) + { + //if the target is a virtual folder, we need to append ArchiveHandlerManager.VIRTUAL_FOLDER_SEPARATOR + //instead of the file separator of the file subsystem. + newPathBuf.append(ArchiveHandlerManager.VIRTUAL_FOLDER_SEPARATOR); + } else { int newPathBufLenth = newPathBuf.length(); @@ -1162,7 +1170,7 @@ public class UniversalFileTransferUtility if (existingFiles != null) { IRemoteFile newTargetFolder = (IRemoteFile)existingFiles.get(newPath); - if (!newTargetFolder.exists()) + if (null != newTargetFolder && !newTargetFolder.exists()) { newTargetFolder = targetFS.createFolder(newTargetFolder, monitor); } 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 250cba26854..91b201d9f04 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 @@ -30,6 +30,7 @@ * Kevin Doyle (IBM) - [198576] Renaming a folder directly under a Filter doesn't update children * David McKnight (IBM) - [199568] Removing synchronized from internalGetChildren * Kevin Doyle (IBM) - [197855] Can't Delete/Rename/Move a Read-Only File + * Xuan Chen (IBM) - [202949] [archives] copy a folder from one connection to an archive file in a different connection does not work ********************************************************************************/ package org.eclipse.rse.internal.files.ui.view; @@ -1535,15 +1536,25 @@ public class SystemViewRemoteFileAdapter { FileServiceSubSystem ss = (FileServiceSubSystem)subsys; - SystemSearchString searchString = new SystemSearchString("*", false, false, "*", false, false, true); //$NON-NLS-1$ //$NON-NLS-2$ - for (int i = 0; i < initialResources.size(); i++) { IRemoteFile remoteFile = (IRemoteFile)initialResources.get(i); // get all files within directory if (remoteFile.isDirectory()) - { + { + SystemSearchString searchString = null; + if (ArchiveHandlerManager.isVirtual(remoteFile.getAbsolutePath())) + { + //If this file to create flatset with is a virtual directory, we want to make sure the includeArchives flag + //for the searchString is set to true. This way, we could search inside the archive file + searchString = new SystemSearchString("*", false, false, "*", false, true, true); //$NON-NLS-1$ //$NON-NLS-2$ + } + else + { + searchString = new SystemSearchString("*", false, false, "*", false, false, true); //$NON-NLS-1$ //$NON-NLS-2$ + } + // create the configuration for this folder IHostSearchResultConfiguration config = ss.createSearchConfiguration(searchSet, remoteFile, searchString); diff --git a/rse/plugins/org.eclipse.rse.services.dstore/miners/org/eclipse/rse/dstore/universal/miners/UniversalFileSystemMiner.java b/rse/plugins/org.eclipse.rse.services.dstore/miners/org/eclipse/rse/dstore/universal/miners/UniversalFileSystemMiner.java index 8e8e47d05a9..c32c5afd783 100644 --- a/rse/plugins/org.eclipse.rse.services.dstore/miners/org/eclipse/rse/dstore/universal/miners/UniversalFileSystemMiner.java +++ b/rse/plugins/org.eclipse.rse.services.dstore/miners/org/eclipse/rse/dstore/universal/miners/UniversalFileSystemMiner.java @@ -23,6 +23,7 @@ * Xuan Chen (IBM) - [191367] with supertransfer on, Drag & Drop Folder from DStore to DStore doesn't work * Martin Oberhuber (Wind River) - [199548] Avoid touching files on setReadOnly() if unnecessary * Kevin Doyle (IBM) - [191548] Deleting Read-Only directory removes it from view and displays no error + * Xuan Chen (IBM) - [202949] [archives] copy a folder from one connection to an archive file in a different connection does not work *******************************************************************************/ package org.eclipse.rse.dstore.universal.miners; @@ -600,8 +601,14 @@ public class UniversalFileSystemMiner extends Miner { UniversalServerUtilities.logError(CLASSNAME, "Invalid query type to handleSearch", null); //$NON-NLS-1$ return statusDone(status); } - - if (fileobj.exists()) { + //If the subject is a virtual folder, we could not just use check file.exists() to determine if we need + //to continue process this request or not. + boolean continueSearch = true; + if (!queryType.equals(IUniversalDataStoreConstants.UNIVERSAL_VIRTUAL_FOLDER_DESCRIPTOR) && !fileobj.exists()) + { + continueSearch = false; + } + if (continueSearch) { DataElement arg1 = getCommandArgument(theElement, 1); DataElement arg2 = getCommandArgument(theElement, 2); DataElement arg3 = getCommandArgument(theElement, 3); @@ -631,7 +638,7 @@ public class UniversalFileSystemMiner extends Miner { searchThread.start(); updateCancellableThreads(status.getParent(), searchThread); - return status; + //return status; } return statusDone(status); diff --git a/rse/plugins/org.eclipse.rse.services/clientserver/org/eclipse/rse/services/clientserver/archiveutils/ArchiveHandlerManager.java b/rse/plugins/org.eclipse.rse.services/clientserver/org/eclipse/rse/services/clientserver/archiveutils/ArchiveHandlerManager.java index 4d99daa1978..87a168c62fb 100644 --- a/rse/plugins/org.eclipse.rse.services/clientserver/org/eclipse/rse/services/clientserver/archiveutils/ArchiveHandlerManager.java +++ b/rse/plugins/org.eclipse.rse.services/clientserver/org/eclipse/rse/services/clientserver/archiveutils/ArchiveHandlerManager.java @@ -14,6 +14,7 @@ * Contributors: * {Name} (company) - description of contribution. * Xuan Chen (IBM) - [194293] [Local][Archives] Saving file second time in an Archive Errors + * Xuan Chen (IBM) - [202949] [archives] copy a folder from one connection to an archive file in a different connection does not work *******************************************************************************/ package org.eclipse.rse.services.clientserver.archiveutils; @@ -36,6 +37,7 @@ public class ArchiveHandlerManager // The string that separates the virtual part of an absolute path from the real part public static final String VIRTUAL_SEPARATOR = "#virtual#/"; //$NON-NLS-1$ public static final String VIRTUAL_CANONICAL_SEPARATOR = "#virtual#"; //$NON-NLS-1$ + public static final String VIRTUAL_FOLDER_SEPARATOR = "/"; //$NON-NLS-1$ // the singleton instance protected static ArchiveHandlerManager _instance = new ArchiveHandlerManager(); diff --git a/rse/tests/org.eclipse.rse.tests/src/org/eclipse/rse/tests/subsystems/files/FileServiceArchiveTest.java b/rse/tests/org.eclipse.rse.tests/src/org/eclipse/rse/tests/subsystems/files/FileServiceArchiveTest.java index b1e9da45a95..e04d9661e8a 100644 --- a/rse/tests/org.eclipse.rse.tests/src/org/eclipse/rse/tests/subsystems/files/FileServiceArchiveTest.java +++ b/rse/tests/org.eclipse.rse.tests/src/org/eclipse/rse/tests/subsystems/files/FileServiceArchiveTest.java @@ -28,6 +28,7 @@ import org.eclipse.rse.core.subsystems.ISubSystem; import org.eclipse.rse.core.subsystems.ISystemDragDropAdapter; import org.eclipse.rse.files.ui.resources.UniversalFileTransferUtility; import org.eclipse.rse.internal.subsystems.files.core.ISystemFilePreferencesConstants; +import org.eclipse.rse.services.clientserver.messages.SystemMessageException; import org.eclipse.rse.services.files.IFileService; import org.eclipse.rse.subsystems.files.core.servicesubsystem.IFileServiceSubSystem; import org.eclipse.rse.subsystems.files.core.subsystems.IRemoteFile; @@ -128,6 +129,10 @@ public class FileServiceArchiveTest extends FileServiceBaseTest { } public void createSourceZipFiles() throws Exception + { + createSourceZipFiles(fss); + } + public IRemoteFile createSourceZipFiles(IFileServiceSubSystem inputFss) throws Exception { /* build scenario */ String tempPath = getWorkspace().getRoot().getLocation().append("temp").toString(); @@ -318,36 +323,59 @@ public class FileServiceArchiveTest extends FileServiceBaseTest { content = getRandomString(); createFile(epdcdump01_hex12ab, content); + IRemoteFile targetDir = null; + if (inputFss != fss) + { + //Create the tempDir inside the inputFss + try + { + IRemoteFile homeDirectory = inputFss.getRemoteFileObject(".", mon); + String baseFolderName = "rsetest"; + String homeFolderName = homeDirectory.getAbsolutePath(); + String testFolderName = FileServiceHelper.getRandomLocation(localFss, homeFolderName, baseFolderName, mon); + targetDir = createFileOrFolder(localFss, homeFolderName, testFolderName, true); + } + catch (Exception e) + { + fail("Problem encountered: " + e.getStackTrace().toString()); + } + } + else + { + targetDir = tempDir; + } //now, copy folderToCopy into the folder in the remote system IRemoteFile sourceFolderToCopy1 = localFss.getRemoteFileObject(tempPath + '\\' + folderToCopyName1, mon); ISystemDragDropAdapter srcAdapter1 = (ISystemDragDropAdapter) ((IAdaptable) sourceFolderToCopy1).getAdapter(ISystemDragDropAdapter.class); SystemRemoteResourceSet fromSet = new SystemRemoteResourceSet(localFss, srcAdapter1); fromSet.addResource(sourceFolderToCopy1); ISystemResourceSet tempObjects1 = srcAdapter1.doDrag(fromSet, mon); - UniversalFileTransferUtility.copyWorkspaceResourcesToRemote((SystemWorkspaceResourceSet)tempObjects1, tempDir, mon, true); + UniversalFileTransferUtility.copyWorkspaceResourcesToRemote((SystemWorkspaceResourceSet)tempObjects1, targetDir, mon, true); IRemoteFile sourceFolderToCopy2 = localFss.getRemoteFileObject(tempPath + '\\' + folderToCopyName2, mon); ISystemDragDropAdapter srcAdapter2 = (ISystemDragDropAdapter) ((IAdaptable) sourceFolderToCopy2).getAdapter(ISystemDragDropAdapter.class); SystemRemoteResourceSet fromSet2 = new SystemRemoteResourceSet(localFss, srcAdapter2); fromSet2.addResource(sourceFolderToCopy2); ISystemResourceSet tempObjects2 = srcAdapter2.doDrag(fromSet2, mon); - UniversalFileTransferUtility.copyWorkspaceResourcesToRemote((SystemWorkspaceResourceSet)tempObjects2, tempDir, mon, true); + UniversalFileTransferUtility.copyWorkspaceResourcesToRemote((SystemWorkspaceResourceSet)tempObjects2, targetDir, mon, true); - IRemoteFile zipSource1 = createFileOrFolder(tempDir.getAbsolutePath(), zipSourceFileName1, false); + IRemoteFile zipSource1 = createFileOrFolder(inputFss, targetDir.getAbsolutePath(), zipSourceFileName1, false); assertNotNull(zipSource1); - IRemoteFile zipSourceFolder = (IRemoteFile)getChildFromFolder(tempDir, folderToCopyName1); - fss.copy(zipSourceFolder, zipSource1, folderToCopyName1, mon); + IRemoteFile zipSourceFolder = (IRemoteFile)getChildFromFolder(inputFss, targetDir, folderToCopyName1); + inputFss.copy(zipSourceFolder, zipSource1, folderToCopyName1, mon); - IRemoteFile zipSource2 = createFileOrFolder(tempDir.getAbsolutePath(), zipSourceFileName2, false); + IRemoteFile zipSource2 = createFileOrFolder(inputFss, targetDir.getAbsolutePath(), zipSourceFileName2, false); assertNotNull(zipSource2); - IRemoteFile zipSourceFolder2 = (IRemoteFile)getChildFromFolder(tempDir, folderToCopyName2); - fss.copy(zipSourceFolder2, zipSource2, folderToCopyName2, mon); + IRemoteFile zipSourceFolder2 = (IRemoteFile)getChildFromFolder(inputFss, targetDir, folderToCopyName2); + inputFss.copy(zipSourceFolder2, zipSource2, folderToCopyName2, mon); //Then, we need to retrieve children of the tempDir to cache their information. - fss.resolveFilterString(tempDir, null, mon); + inputFss.resolveFilterString(targetDir, null, mon); //Then, delete the temp folder in the junit workspace. temp.delete(EFS.NONE, mon); + + return targetDir; } protected void createSuperTransferFolder(IFileStore temp) throws Exception @@ -2260,45 +2288,6 @@ public class FileServiceArchiveTest extends FileServiceBaseTest { - public void testSuperTransferLocalToRemote() throws Exception { - String tempPath = getWorkspace().getRoot().getLocation().append("temp").toString(); - IFileStore temp = createDir(tempPath, true); - - createSuperTransferFolder(temp); - - //Set the superTransfer preference on - IPreferenceStore store = RSEUIPlugin.getDefault().getPreferenceStore(); - boolean preference_DOSUPERTRANSFER = store.getBoolean(ISystemFilePreferencesConstants.DOSUPERTRANSFER); - store.setValue(ISystemFilePreferencesConstants.DOSUPERTRANSFER, true); - - //now, copy folderToCopy into the folder in the remote system - IRemoteFile sourceFolderToCopy1 = localFss.getRemoteFileObject(tempPath + '\\' + folderToCopyName3, mon); - ISystemDragDropAdapter srcAdapter1 = (ISystemDragDropAdapter) ((IAdaptable) sourceFolderToCopy1).getAdapter(ISystemDragDropAdapter.class); - SystemRemoteResourceSet fromSet3 = new SystemRemoteResourceSet(localFss, srcAdapter1); - fromSet3.addResource(sourceFolderToCopy1); - ISystemResourceSet tempObjects3 = srcAdapter1.doDrag(fromSet3, mon); - UniversalFileTransferUtility.copyWorkspaceResourcesToRemote((SystemWorkspaceResourceSet)tempObjects3, tempDir, mon, true); - - //Then, we need to retrieve children of the tempDir to cache their information. - Object[] children = fss.resolveFilterString(tempDir, null, mon); - //Make sure there is no temp archive file left - assertTrue(children.length == 1); - - Object theCopiedFolder = getChildFromFolder(tempDir, folderToCopyName3); - assertNotNull(theCopiedFolder); - - //Also make sure the copied child has the right contents. - String[] childrenToCheck = {"aaaaaaaa", "aaaab", "epdcdump01.hex12a", "RSE-SDK-2.0RC1.zip"}; - - int[] typesToCheck = {TYPE_FOLDER, TYPE_FOLDER, TYPE_FILE, TYPE_FILE}; - checkFolderContents((IRemoteFile)theCopiedFolder, childrenToCheck, typesToCheck); - - //Then, set the preference back to its original value - store.setValue(ISystemFilePreferencesConstants.DOSUPERTRANSFER, preference_DOSUPERTRANSFER); - - //Then, delete the temp folder in the junit workspace. - temp.delete(EFS.NONE, mon); - } public void testOpenFileFromTarArchive() throws Exception { if (!RSETestsPlugin.isTestCaseEnabled("FileServiceTest.testCreateFile")) return; //$NON-NLS-1$ @@ -2356,5 +2345,8 @@ public class FileServiceArchiveTest extends FileServiceBaseTest { sameContent = compareContent(getContents(fileContentString1), localFile.openInputStream(EFS.NONE, null)); assertTrue(sameContent); } + + + } diff --git a/rse/tests/org.eclipse.rse.tests/src/org/eclipse/rse/tests/subsystems/files/FileServiceArchiveTestDStore.java b/rse/tests/org.eclipse.rse.tests/src/org/eclipse/rse/tests/subsystems/files/FileServiceArchiveTestDStore.java index 1320a81415f..95585ebdb6d 100644 --- a/rse/tests/org.eclipse.rse.tests/src/org/eclipse/rse/tests/subsystems/files/FileServiceArchiveTestDStore.java +++ b/rse/tests/org.eclipse.rse.tests/src/org/eclipse/rse/tests/subsystems/files/FileServiceArchiveTestDStore.java @@ -31,9 +31,11 @@ import org.eclipse.rse.core.subsystems.ISystemDragDropAdapter; import org.eclipse.rse.core.subsystems.ServerLaunchType; import org.eclipse.rse.files.ui.resources.UniversalFileTransferUtility; import org.eclipse.rse.internal.subsystems.files.core.ISystemFilePreferencesConstants; +import org.eclipse.rse.services.clientserver.messages.SystemMessageException; import org.eclipse.rse.services.files.IFileService; import org.eclipse.rse.subsystems.files.core.servicesubsystem.IFileServiceSubSystem; import org.eclipse.rse.subsystems.files.core.subsystems.IRemoteFile; +import org.eclipse.rse.tests.RSETestsPlugin; import org.eclipse.rse.ui.ISystemPreferencesConstants; import org.eclipse.rse.ui.RSEUIPlugin; @@ -90,9 +92,24 @@ public class FileServiceArchiveTestDStore extends FileServiceArchiveTest { //super transfer suite.addTest(TestSuite.createTest(FileServiceArchiveTestDStore.class, "testSuperTransferLocalToRemote")); suite.addTest(TestSuite.createTest(FileServiceArchiveTestDStore.class, "testSuperTransferDStoreWindowsAndDStore")); - + suite.addTest(TestSuite.createTest(FileServiceArchiveTestDStore.class, "testSuperTransferDStoreToLocal")); //open a virtual file in tar archive suite.addTest(TestSuite.createTest(FileServiceArchiveTestDStore.class, "testOpenFileFromTarArchive")); //$NON-NLS-1$ + + //copy the virtual folder across connections + suite.addTest(TestSuite.createTest(FileServiceArchiveTestDStore.class, "testCopyVirtualFileFromDStoreToLocal")); //$NON-NLS-1$ + suite.addTest(TestSuite.createTest(FileServiceArchiveTestDStore.class, "testCopyVirtualFileLevelTwoFromDStoreToLocal")); //$NON-NLS-1$ + suite.addTest(TestSuite.createTest(FileServiceArchiveTestDStore.class, "testCopyVirtualFileFromLocalToDStore")); //$NON-NLS-1$ + suite.addTest(TestSuite.createTest(FileServiceArchiveTestDStore.class, "testCopyVirtualFileLevelTwoFromLocalToDStore")); //$NON-NLS-1$ + suite.addTest(TestSuite.createTest(FileServiceArchiveTestDStore.class, "testCopyVFLevelTwoToArchiveFromDStoreToLocal")); //$NON-NLS-1$ + suite.addTest(TestSuite.createTest(FileServiceArchiveTestDStore.class, "testCopyVFLevelTwoToArchiveFromLocalToDStore")); //$NON-NLS-1$ + suite.addTest(TestSuite.createTest(FileServiceArchiveTestDStore.class, "testCopyVFToArchiveFromDStoreToLocal")); //$NON-NLS-1$ + suite.addTest(TestSuite.createTest(FileServiceArchiveTestDStore.class, "testCopyVFToArchiveFromLocalToDStore")); //$NON-NLS-1$ + suite.addTest(TestSuite.createTest(FileServiceArchiveTestDStore.class, "testCopyVFToVFFromDStoreToLocal")); //$NON-NLS-1$ + suite.addTest(TestSuite.createTest(FileServiceArchiveTestDStore.class, "testCopyVFToVFLevelTwoFromDStoreToLocal")); //$NON-NLS-1$ + suite.addTest(TestSuite.createTest(FileServiceArchiveTestDStore.class, "testCopyVFToVFFromLocalToDStore")); //$NON-NLS-1$ + suite.addTest(TestSuite.createTest(FileServiceArchiveTestDStore.class, "testCopyVFToVFLevelTwoFromLocalToDStore")); //$NON-NLS-1$ + return suite; } @@ -186,6 +203,47 @@ public class FileServiceArchiveTestDStore extends FileServiceArchiveTest { super.tearDown(); } + public void testSuperTransferLocalToRemote() throws Exception { + String tempPath = getWorkspace().getRoot().getLocation().append("temp").toString(); + IFileStore temp = createDir(tempPath, true); + + createSuperTransferFolder(temp); + + //Set the superTransfer preference on + IPreferenceStore store = RSEUIPlugin.getDefault().getPreferenceStore(); + boolean preference_DOSUPERTRANSFER = store.getBoolean(ISystemFilePreferencesConstants.DOSUPERTRANSFER); + store.setValue(ISystemFilePreferencesConstants.DOSUPERTRANSFER, true); + + + //now, copy folderToCopy into the folder in the remote system + IRemoteFile sourceFolderToCopy1 = localFss.getRemoteFileObject(tempPath + '\\' + folderToCopyName3, mon); + ISystemDragDropAdapter srcAdapter1 = (ISystemDragDropAdapter) ((IAdaptable) sourceFolderToCopy1).getAdapter(ISystemDragDropAdapter.class); + SystemRemoteResourceSet fromSet3 = new SystemRemoteResourceSet(localFss, srcAdapter1); + fromSet3.addResource(sourceFolderToCopy1); + ISystemResourceSet tempObjects3 = srcAdapter1.doDrag(fromSet3, mon); + UniversalFileTransferUtility.copyWorkspaceResourcesToRemote((SystemWorkspaceResourceSet)tempObjects3, tempDir, mon, true); + + //Then, we need to retrieve children of the tempDir to cache their information. + Object[] children = fss.resolveFilterString(tempDir, null, mon); + //Make sure there is no temp archive file left + assertTrue(children.length == 1); + + Object theCopiedFolder = getChildFromFolder(tempDir, folderToCopyName3); + assertNotNull(theCopiedFolder); + + //Also make sure the copied child has the right contents. + String[] childrenToCheck = {"aaaaaaaa", "aaaab", "epdcdump01.hex12a", "RSE-SDK-2.0RC1.zip"}; + + int[] typesToCheck = {TYPE_FOLDER, TYPE_FOLDER, TYPE_FILE, TYPE_FILE}; + checkFolderContents((IRemoteFile)theCopiedFolder, childrenToCheck, typesToCheck); + + //Then, set the preference back to its original value + store.setValue(ISystemFilePreferencesConstants.DOSUPERTRANSFER, preference_DOSUPERTRANSFER); + + //Then, delete the temp folder in the junit workspace. + temp.delete(EFS.NONE, mon); + } + public void testSuperTransferDStoreWindowsAndDStore() throws Exception { String tempPath = getWorkspace().getRoot().getLocation().append("temp").toString(); IFileStore temp = createDir(tempPath, true); @@ -271,8 +329,678 @@ public class FileServiceArchiveTestDStore extends FileServiceArchiveTest { //Then, set the preference back to its original value store.setValue(ISystemFilePreferencesConstants.DOSUPERTRANSFER, preference_DOSUPERTRANSFER); + //delete the windows dstore temp file just created + try { + dstoreWindowsFss.delete(dstoreWindowsTempDir, mon); + } catch(SystemMessageException msg) { + //ensure that super.tearDown() can run + System.err.println("Exception on deleting local temp dir: "+msg.getLocalizedMessage()); //$NON-NLS-1$ + } //Then, delete the temp folder in the junit workspace. temp.delete(EFS.NONE, mon); } + + public void testSuperTransferDStoreToLocal() throws Exception { + String tempPath = getWorkspace().getRoot().getLocation().append("temp").toString(); + IFileStore temp = createDir(tempPath, true); + + createSuperTransferFolder(temp); + + //Set the superTransfer preference on + IPreferenceStore store = RSEUIPlugin.getDefault().getPreferenceStore(); + boolean preference_DOSUPERTRANSFER = store.getBoolean(ISystemFilePreferencesConstants.DOSUPERTRANSFER); + store.setValue(ISystemFilePreferencesConstants.DOSUPERTRANSFER, true); + + //now, copy folderToCopy into the folder in the remote system + IRemoteFile sourceFolderToCopy1 = localFss.getRemoteFileObject(tempPath + '\\' + folderToCopyName3, mon); + ISystemDragDropAdapter srcAdapter1 = (ISystemDragDropAdapter) ((IAdaptable) sourceFolderToCopy1).getAdapter(ISystemDragDropAdapter.class); + SystemRemoteResourceSet fromSet1 = new SystemRemoteResourceSet(localFss, srcAdapter1); + fromSet1.addResource(sourceFolderToCopy1); + ISystemResourceSet tempObjects1 = srcAdapter1.doDrag(fromSet1, mon); + UniversalFileTransferUtility.copyWorkspaceResourcesToRemote((SystemWorkspaceResourceSet)tempObjects1, tempDir, mon, true); + + //Then, we need to retrieve children of the tempDir to cache their information. + fss.resolveFilterString(tempDir, null, mon); + + + //Then, create a temparory directory the My Home of the Local connection + //Create a temparory directory in My Home + IRemoteFile localTempDir = null; + try + { + IRemoteFile homeDirectory = localFss.getRemoteFileObject(".", mon); + String baseFolderName = "rsetest"; + String homeFolderName = homeDirectory.getAbsolutePath(); + String testFolderName = FileServiceHelper.getRandomLocation(localFss, homeFolderName, baseFolderName, mon); + localTempDir = createFileOrFolder(localFss, homeFolderName, testFolderName, true); + } + catch (Exception e) + { + fail("Problem encountered: " + e.getStackTrace().toString()); + } + + //now, copy that folder in the Dstore connection into the folder in local connection + IRemoteFile sourceFolderToCopy2 = (IRemoteFile)getChildFromFolder(tempDir, folderToCopyName3); + ISystemDragDropAdapter srcAdapter2 = (ISystemDragDropAdapter) ((IAdaptable) sourceFolderToCopy2).getAdapter(ISystemDragDropAdapter.class); + SystemRemoteResourceSet fromSet2 = new SystemRemoteResourceSet(fss, srcAdapter2); + fromSet2.addResource(sourceFolderToCopy2); + ISystemResourceSet tempObjects2 = srcAdapter2.doDrag(fromSet2, mon); + UniversalFileTransferUtility.copyWorkspaceResourcesToRemote((SystemWorkspaceResourceSet)tempObjects2, localTempDir, mon, true); + + Object[] localChildren = localFss.resolveFilterString(localTempDir, null, mon); + //Make sure there is no temp archive file left + assertTrue(localChildren.length == 1); + + //then verify the result of copy + Object theCopiedFolderLocal = getChildFromFolder(localFss, localTempDir, folderToCopyName3); + assertNotNull(theCopiedFolderLocal); + //Also make sure the copied child has the right contents. + String[] childrenToCheck = {"aaaaaaaa", "aaaab", "epdcdump01.hex12a", "RSE-SDK-2.0RC1.zip"}; + + int[] typesToCheck = {TYPE_FOLDER, TYPE_FOLDER, TYPE_FILE, TYPE_FILE}; + checkFolderContents(localFss, (IRemoteFile)theCopiedFolderLocal, childrenToCheck, typesToCheck); + + //Then, set the preference back to its original value + store.setValue(ISystemFilePreferencesConstants.DOSUPERTRANSFER, preference_DOSUPERTRANSFER); + + //delete the windows dstore temp file just created + try { + localFss.delete(localTempDir, mon); + } catch(SystemMessageException msg) { + //ensure that super.tearDown() can run + System.err.println("Exception on deleting local temp dir: "+msg.getLocalizedMessage()); //$NON-NLS-1$ + } + //Then, delete the temp folder in the junit workspace. + temp.delete(EFS.NONE, mon); + } + + public void testCopyVirtualFileFromDStoreToLocal() throws Exception { + if (!RSETestsPlugin.isTestCaseEnabled("FileServiceTest.testCreateFile")) return; //$NON-NLS-1$ + + createSourceZipFiles(); + + String sourceZipFileName = zipSourceFileName1; + IRemoteFile sourceZipFile = (IRemoteFile)getChildFromFolder(tempDir, sourceZipFileName); + assertNotNull(sourceZipFile); + + //Create the tempDir inside the Local connection first. + IRemoteFile localTempDir = null; + try + { + IRemoteFile homeDirectory = localFss.getRemoteFileObject(".", mon); + String baseFolderName = "rsetest"; + String homeFolderName = homeDirectory.getAbsolutePath(); + String testFolderName = FileServiceHelper.getRandomLocation(localFss, homeFolderName, baseFolderName, mon); + localTempDir = createFileOrFolder(localFss, homeFolderName, testFolderName, true); + } + catch (Exception e) + { + fail("Problem encountered: " + e.getStackTrace().toString()); + } + //then, create a folder inside the tempDir inside the Local connection + String folderName = "folder1"; + IRemoteFile folder1 = createFileOrFolder(localFss, localTempDir.getAbsolutePath(), folderName, true); + assertNotNull(folder1); + + + //Now, copy one of the folder from the zip file into folder1 + IRemoteFile firstLevelChild = (IRemoteFile)getChildFromFolder(sourceZipFile, folderToCopyName1); + ISystemDragDropAdapter srcAdapter1 = (ISystemDragDropAdapter) ((IAdaptable) firstLevelChild).getAdapter(ISystemDragDropAdapter.class); + SystemRemoteResourceSet fromSet3 = new SystemRemoteResourceSet(fss, srcAdapter1); + fromSet3.addResource(firstLevelChild); + ISystemResourceSet tempObjects3 = srcAdapter1.doDrag(fromSet3, mon); + UniversalFileTransferUtility.copyWorkspaceResourcesToRemote((SystemWorkspaceResourceSet)tempObjects3, folder1, mon, true); + + //make sure some delay before checking the result + Thread.sleep(50); + Object copiedVirtualFolder = getChildFromFolder(localFss, folder1, folderToCopyName1); + + assertNotNull(copiedVirtualFolder); + + String[] contents = {"Team", "TypeFilters", "xuanchentp", ".compatibility", ".project"}; + int[] typesToCheck = {TYPE_FOLDER, TYPE_FOLDER, TYPE_FOLDER, TYPE_FILE, TYPE_FILE}; + checkFolderContents(localFss, (IRemoteFile)copiedVirtualFolder, contents, typesToCheck); + + //Now, need to delete the temp dir in the Local connection + try { + localFss.delete(localTempDir, mon); + } catch(SystemMessageException msg) { + //ensure that super.tearDown() can run + System.err.println("Exception on deleting local temp dir: "+msg.getLocalizedMessage()); //$NON-NLS-1$ + } + } + + + public void testCopyVirtualFileLevelTwoFromDStoreToLocal() throws Exception { + if (!RSETestsPlugin.isTestCaseEnabled("FileServiceTest.testCreateFile")) return; //$NON-NLS-1$ + + createSourceZipFiles(); + + //copy the zip file first. + String sourceZipFileName = zipSourceFileName1; + IRemoteFile sourceZipFile = (IRemoteFile)getChildFromFolder(tempDir, sourceZipFileName); + assertNotNull(sourceZipFile); + + //Create the tempDir inside the Local connection first. + IRemoteFile localTempDir = null; + try + { + IRemoteFile homeDirectory = localFss.getRemoteFileObject(".", mon); + String baseFolderName = "rsetest"; + String homeFolderName = homeDirectory.getAbsolutePath(); + String testFolderName = FileServiceHelper.getRandomLocation(localFss, homeFolderName, baseFolderName, mon); + localTempDir = createFileOrFolder(localFss, homeFolderName, testFolderName, true); + } + catch (Exception e) + { + fail("Problem encountered: " + e.getStackTrace().toString()); + } + //then, create a folder inside the tempDir inside the Local connection + String folderName = "folder1"; + String secondLeveChildName = "Team"; + IRemoteFile folder1 = createFileOrFolder(localFss, localTempDir.getAbsolutePath(), folderName, true); + assertNotNull(folder1); + + //Now, copy one of the level two folder from the zip file into folder1 + IRemoteFile firstLevelChild = (IRemoteFile)getChildFromFolder(sourceZipFile, folderToCopyName1); + IRemoteFile secondLevelChild = (IRemoteFile)getChildFromFolder(firstLevelChild, "Team"); + + ISystemDragDropAdapter srcAdapter1 = (ISystemDragDropAdapter) ((IAdaptable) secondLevelChild).getAdapter(ISystemDragDropAdapter.class); + SystemRemoteResourceSet fromSet3 = new SystemRemoteResourceSet(fss, srcAdapter1); + fromSet3.addResource(secondLevelChild); + ISystemResourceSet tempObjects3 = srcAdapter1.doDrag(fromSet3, mon); + UniversalFileTransferUtility.copyWorkspaceResourcesToRemote((SystemWorkspaceResourceSet)tempObjects3, folder1, mon, true); + + Thread.sleep(50); + + Object copiedVirtualFolder = getChildFromFolder(localFss, folder1, secondLeveChildName); + + assertNotNull(copiedVirtualFolder); + + String[] contents = {"Connections", "Filters", "profile.xmi"}; + int[] typesToCheck = {TYPE_FOLDER, TYPE_FOLDER, TYPE_FILE}; + checkFolderContents(localFss, (IRemoteFile)copiedVirtualFolder, contents, typesToCheck); + + //Now, need to delete the temp dir in the Local connection + try { + localFss.delete(localTempDir, mon); + } catch(SystemMessageException msg) { + //ensure that super.tearDown() can run + System.err.println("Exception on deleting local temp dir: "+msg.getLocalizedMessage()); //$NON-NLS-1$ + } + } + + public void testCopyVirtualFileFromLocalToDStore() throws Exception { + if (!RSETestsPlugin.isTestCaseEnabled("FileServiceTest.testCreateFile")) return; //$NON-NLS-1$ + + IRemoteFile sourceZipLocation = createSourceZipFiles(localFss); + + String sourceZipFileName = zipSourceFileName1; + IRemoteFile sourceZipFile = (IRemoteFile)getChildFromFolder(localFss, sourceZipLocation, sourceZipFileName); + assertNotNull(sourceZipFile); + + //then, create a folder inside the tempDir inside the DStore connection + String folderName = "folder1"; + IRemoteFile folder1 = createFileOrFolder(fss, tempDir.getAbsolutePath(), folderName, true); + assertNotNull(folder1); + + + //Now, copy one of the folder from the zip file in Local connection into folder1 + IRemoteFile firstLevelChild = (IRemoteFile)getChildFromFolder(localFss, sourceZipFile, folderToCopyName1); + ISystemDragDropAdapter srcAdapter1 = (ISystemDragDropAdapter) ((IAdaptable) firstLevelChild).getAdapter(ISystemDragDropAdapter.class); + SystemRemoteResourceSet fromSet3 = new SystemRemoteResourceSet(localFss, srcAdapter1); + fromSet3.addResource(firstLevelChild); + ISystemResourceSet tempObjects3 = srcAdapter1.doDrag(fromSet3, mon); + UniversalFileTransferUtility.copyWorkspaceResourcesToRemote((SystemWorkspaceResourceSet)tempObjects3, folder1, mon, true); + + Object copiedVirtualFolder = getChildFromFolder(fss, folder1, folderToCopyName1); + + assertNotNull(copiedVirtualFolder); + + String[] contents = {"Team", "TypeFilters", "xuanchentp", ".compatibility", ".project"}; + int[] typesToCheck = {TYPE_FOLDER, TYPE_FOLDER, TYPE_FOLDER, TYPE_FILE, TYPE_FILE}; + checkFolderContents(fss, (IRemoteFile)copiedVirtualFolder, contents, typesToCheck); + + //Now, need to delete the temp dir in the Local connection + try { + localFss.delete(sourceZipLocation, mon); + } catch(SystemMessageException msg) { + //ensure that super.tearDown() can run + System.err.println("Exception on deleting local temp dir: "+msg.getLocalizedMessage()); //$NON-NLS-1$ + } + } + + public void testCopyVirtualFileLevelTwoFromLocalToDStore() throws Exception { + if (!RSETestsPlugin.isTestCaseEnabled("FileServiceTest.testCreateFile")) return; //$NON-NLS-1$ + + IRemoteFile sourceZipLocation = createSourceZipFiles(localFss); + + String sourceZipFileName = zipSourceFileName1; + IRemoteFile sourceZipFile = (IRemoteFile)getChildFromFolder(localFss, sourceZipLocation, sourceZipFileName); + assertNotNull(sourceZipFile); + + //then, create a folder inside the tempDir inside the DStore connection + String folderName = "folder1"; + IRemoteFile folder1 = createFileOrFolder(fss, tempDir.getAbsolutePath(), folderName, true); + assertNotNull(folder1); + + + //Now, copy one of the folder from the zip file in Local connection into folder1 + //Now, copy one of the level two folder from the zip file into folder1 + String secondLeveChildName = "Team"; + IRemoteFile firstLevelChild = (IRemoteFile)getChildFromFolder(localFss, sourceZipFile, folderToCopyName1); + IRemoteFile secondLevelChild = (IRemoteFile)getChildFromFolder(localFss, firstLevelChild, secondLeveChildName); + + ISystemDragDropAdapter srcAdapter1 = (ISystemDragDropAdapter) ((IAdaptable) secondLevelChild).getAdapter(ISystemDragDropAdapter.class); + SystemRemoteResourceSet fromSet3 = new SystemRemoteResourceSet(localFss, srcAdapter1); + fromSet3.addResource(secondLevelChild); + ISystemResourceSet tempObjects3 = srcAdapter1.doDrag(fromSet3, mon); + UniversalFileTransferUtility.copyWorkspaceResourcesToRemote((SystemWorkspaceResourceSet)tempObjects3, folder1, mon, true); + + Object copiedVirtualFolder = getChildFromFolder(fss, folder1, secondLeveChildName); + + assertNotNull(copiedVirtualFolder); + + String[] contents = {"Connections", "Filters", "profile.xmi"}; + int[] typesToCheck = {TYPE_FOLDER, TYPE_FOLDER, TYPE_FILE}; + checkFolderContents(fss, (IRemoteFile)copiedVirtualFolder, contents, typesToCheck); + + //Now, need to delete the temp dir in the Local connection + try { + localFss.delete(sourceZipLocation, mon); + } catch(SystemMessageException msg) { + //ensure that super.tearDown() can run + System.err.println("Exception on deleting local temp dir: "+msg.getLocalizedMessage()); //$NON-NLS-1$ + } + + } + + public void testCopyVFToArchiveFromDStoreToLocal() throws Exception { + if (!RSETestsPlugin.isTestCaseEnabled("FileServiceTest.testCreateFile")) return; //$NON-NLS-1$ + + //Create the zip files in dstore connection. + createSourceZipFiles(); + + //Create the zip files in local connection + IRemoteFile localTempDir = createSourceZipFiles(localFss); + + String sourceZipFileName = zipSourceFileName1; + IRemoteFile sourceZipFile = (IRemoteFile)getChildFromFolder(tempDir, sourceZipFileName); + assertNotNull(sourceZipFile); + + //The destination is the first level virtual child of a zip file + //in local temp dir + IRemoteFile destinationArchiveFile = (IRemoteFile)getChildFromFolder(localFss, localTempDir, zipSourceFileName2); + //IRemoteFile destinationVirtualFolder = (IRemoteFile)getChildFromFolder(localFss, destinationArchiveFile, folderToCopyName2); + + //Now, copy one of the folder from the zip file in dstore into destinationVirtualFolder + IRemoteFile firstLevelChild = (IRemoteFile)getChildFromFolder(sourceZipFile, folderToCopyName1); + ISystemDragDropAdapter srcAdapter1 = (ISystemDragDropAdapter) ((IAdaptable) firstLevelChild).getAdapter(ISystemDragDropAdapter.class); + SystemRemoteResourceSet fromSet3 = new SystemRemoteResourceSet(fss, srcAdapter1); + fromSet3.addResource(firstLevelChild); + ISystemResourceSet tempObjects3 = srcAdapter1.doDrag(fromSet3, mon); + UniversalFileTransferUtility.copyWorkspaceResourcesToRemote((SystemWorkspaceResourceSet)tempObjects3, destinationArchiveFile, mon, true); + + Thread.sleep(50); + Object copiedVirtualFolder = getChildFromFolder(localFss, destinationArchiveFile, folderToCopyName1); + + assertNotNull(copiedVirtualFolder); + + String[] contents = {"Team", "TypeFilters", "xuanchentp", ".compatibility", ".project"}; + int[] typesToCheck = {TYPE_FOLDER, TYPE_FOLDER, TYPE_FOLDER, TYPE_FILE, TYPE_FILE}; + checkFolderContents(localFss, (IRemoteFile)copiedVirtualFolder, contents, typesToCheck); + + //Now, need to delete the temp dir in the Local connection + try { + localFss.delete(localTempDir, mon); + } catch(SystemMessageException msg) { + //ensure that super.tearDown() can run + System.err.println("Exception on deleting local temp dir: "+msg.getLocalizedMessage()); //$NON-NLS-1$ + } + } + + public void testCopyVFLevelTwoToArchiveFromDStoreToLocal() throws Exception { + if (!RSETestsPlugin.isTestCaseEnabled("FileServiceTest.testCreateFile")) return; //$NON-NLS-1$ + + //Create the zip files in dstore connection. + createSourceZipFiles(); + + //Create the zip files in local connection + IRemoteFile localTempDir = createSourceZipFiles(localFss); + + String sourceZipFileName = zipSourceFileName1; + IRemoteFile sourceZipFile = (IRemoteFile)getChildFromFolder(tempDir, sourceZipFileName); + assertNotNull(sourceZipFile); + + //The destination is the second level virtual child of a zip file + //in local temp dir + IRemoteFile destinationArchiveFile = (IRemoteFile)getChildFromFolder(localFss, localTempDir, zipSourceFileName2); + //IRemoteFile firstChild = (IRemoteFile)getChildFromFolder(localFss, destinationArchiveFile, folderToCopyName2); + //IRemoteFile destinationVirtualFolder = (IRemoteFile)getChildFromFolder(localFss, firstChild, "20070319"); + + //the source is a second level child of a zip file in dstore connection temp dir + String secondLeveChildName = "Team"; + IRemoteFile firstLevelChild = (IRemoteFile)getChildFromFolder(fss, sourceZipFile, folderToCopyName1); + IRemoteFile secondLevelChild = (IRemoteFile)getChildFromFolder(fss, firstLevelChild, secondLeveChildName); + + + ISystemDragDropAdapter srcAdapter1 = (ISystemDragDropAdapter) ((IAdaptable) secondLevelChild).getAdapter(ISystemDragDropAdapter.class); + SystemRemoteResourceSet fromSet3 = new SystemRemoteResourceSet(fss, srcAdapter1); + fromSet3.addResource(secondLevelChild); + ISystemResourceSet tempObjects3 = srcAdapter1.doDrag(fromSet3, mon); + UniversalFileTransferUtility.copyWorkspaceResourcesToRemote((SystemWorkspaceResourceSet)tempObjects3, destinationArchiveFile, mon, true); + + Thread.sleep(50); + + Object copiedVirtualFolder = getChildFromFolder(localFss, destinationArchiveFile, secondLeveChildName); + + assertNotNull(copiedVirtualFolder); + + String[] contents = {"Connections", "Filters", "profile.xmi"}; + int[] typesToCheck = {TYPE_FOLDER, TYPE_FOLDER, TYPE_FILE}; + checkFolderContents(localFss, (IRemoteFile)copiedVirtualFolder, contents, typesToCheck); + + //Now, need to delete the temp dir in the Local connection + try { + localFss.delete(localTempDir, mon); + } catch(SystemMessageException msg) { + //ensure that super.tearDown() can run + System.err.println("Exception on deleting local temp dir: "+msg.getLocalizedMessage()); //$NON-NLS-1$ + } + } + + public void testCopyVFToArchiveFromLocalToDStore() throws Exception { + if (!RSETestsPlugin.isTestCaseEnabled("FileServiceTest.testCreateFile")) return; //$NON-NLS-1$ + + //Create the zip files in dstore connection. + createSourceZipFiles(); + + //Create the zip files in local connection + IRemoteFile localTempDir = createSourceZipFiles(localFss); + + String sourceZipFileName = zipSourceFileName1; + //Source zip file is from Local connection + IRemoteFile sourceZipFile = (IRemoteFile)getChildFromFolder(localFss, localTempDir, sourceZipFileName); + assertNotNull(sourceZipFile); + + //The destination is the first level virtual child of a zip file + //in dstore temp dir + IRemoteFile destinationArchiveFile = (IRemoteFile)getChildFromFolder(fss, tempDir, zipSourceFileName2); + //IRemoteFile destinationVirtualFolder = (IRemoteFile)getChildFromFolder(fss, destinationArchiveFile, folderToCopyName2); + + //Now, copy one of the folder from the zip file in local into destinationVirtualFolder + //First, drag the virtual folder from the local zip file + IRemoteFile firstLevelChild = (IRemoteFile)getChildFromFolder(localFss, sourceZipFile, folderToCopyName1); + ISystemDragDropAdapter srcAdapter1 = (ISystemDragDropAdapter) ((IAdaptable) firstLevelChild).getAdapter(ISystemDragDropAdapter.class); + SystemRemoteResourceSet fromSet3 = new SystemRemoteResourceSet(localFss, srcAdapter1); + fromSet3.addResource(firstLevelChild); + ISystemResourceSet tempObjects3 = srcAdapter1.doDrag(fromSet3, mon); + //The drop to the destination virtual folder in dstore connection. + UniversalFileTransferUtility.copyWorkspaceResourcesToRemote((SystemWorkspaceResourceSet)tempObjects3, destinationArchiveFile, mon, true); + + //The result is in the dstore connection + Thread.sleep(50); + Object copiedVirtualFolder = getChildFromFolder(fss, destinationArchiveFile, folderToCopyName1); + + assertNotNull(copiedVirtualFolder); + + String[] contents = {"Team", "TypeFilters", "xuanchentp", ".compatibility", ".project"}; + int[] typesToCheck = {TYPE_FOLDER, TYPE_FOLDER, TYPE_FOLDER, TYPE_FILE, TYPE_FILE}; + checkFolderContents(fss, (IRemoteFile)copiedVirtualFolder, contents, typesToCheck); + + //Now, need to delete the temp dir in the Local connection + try { + localFss.delete(localTempDir, mon); + } catch(SystemMessageException msg) { + //ensure that super.tearDown() can run + System.err.println("Exception on deleting local temp dir: "+msg.getLocalizedMessage()); //$NON-NLS-1$ + } + } + + public void testCopyVFLevelTwoToArchiveFromLocalToDStore() throws Exception { + if (!RSETestsPlugin.isTestCaseEnabled("FileServiceTest.testCreateFile")) return; //$NON-NLS-1$ + + //Create the zip files in dstore connection. + createSourceZipFiles(); + + //Create the zip files in local connection + IRemoteFile localTempDir = createSourceZipFiles(localFss); + + String sourceZipFileName = zipSourceFileName1; + //Source zip file is in local connection + IRemoteFile sourceZipFile = (IRemoteFile)getChildFromFolder(localFss, localTempDir, sourceZipFileName); + assertNotNull(sourceZipFile); + + //The destination is the second level virtual child of a zip file + //in dstore temp dir + IRemoteFile destinationArchiveFile = (IRemoteFile)getChildFromFolder(fss, tempDir, zipSourceFileName2); + //IRemoteFile firstChild = (IRemoteFile)getChildFromFolder(fss, destinationArchiveFile, folderToCopyName2); + //IRemoteFile destinationVirtualFolder = (IRemoteFile)getChildFromFolder(fss, firstChild, "20070319"); + + //the source is a second level child of a zip file in local connection temp dir + String secondLeveChildName = "Team"; + IRemoteFile firstLevelChild = (IRemoteFile)getChildFromFolder(localFss, sourceZipFile, folderToCopyName1); + IRemoteFile secondLevelChild = (IRemoteFile)getChildFromFolder(localFss, firstLevelChild, secondLeveChildName); + + //Now, copy one of the folder from the zip file in local into destinationVirtualFolder + //First, drag the virtual folder from the local zip file + ISystemDragDropAdapter srcAdapter1 = (ISystemDragDropAdapter) ((IAdaptable) secondLevelChild).getAdapter(ISystemDragDropAdapter.class); + SystemRemoteResourceSet fromSet3 = new SystemRemoteResourceSet(localFss, srcAdapter1); + fromSet3.addResource(secondLevelChild); + ISystemResourceSet tempObjects3 = srcAdapter1.doDrag(fromSet3, mon); + UniversalFileTransferUtility.copyWorkspaceResourcesToRemote((SystemWorkspaceResourceSet)tempObjects3, destinationArchiveFile, mon, true); + + //The result is in the dstore connection + Thread.sleep(50); + Object copiedVirtualFolder = getChildFromFolder(fss, destinationArchiveFile, secondLeveChildName); + + assertNotNull(copiedVirtualFolder); + + String[] contents = {"Connections", "Filters", "profile.xmi"}; + int[] typesToCheck = {TYPE_FOLDER, TYPE_FOLDER, TYPE_FILE}; + checkFolderContents(fss, (IRemoteFile)copiedVirtualFolder, contents, typesToCheck); + + //Now, need to delete the temp dir in the Local connection + try { + localFss.delete(localTempDir, mon); + } catch(SystemMessageException msg) { + //ensure that super.tearDown() can run + System.err.println("Exception on deleting local temp dir: "+msg.getLocalizedMessage()); //$NON-NLS-1$ + } + } + + public void testCopyVFToVFFromDStoreToLocal() throws Exception { + if (!RSETestsPlugin.isTestCaseEnabled("FileServiceTest.testCreateFile")) return; //$NON-NLS-1$ + + //Create the zip files in dstore connection. + createSourceZipFiles(); + + //Create the zip files in local connection + IRemoteFile localTempDir = createSourceZipFiles(localFss); + + String sourceZipFileName = zipSourceFileName1; + IRemoteFile sourceZipFile = (IRemoteFile)getChildFromFolder(tempDir, sourceZipFileName); + assertNotNull(sourceZipFile); + + //The destination is the first level virtual child of a zip file + //in local temp dir + IRemoteFile destinationArchiveFile = (IRemoteFile)getChildFromFolder(localFss, localTempDir, zipSourceFileName2); + IRemoteFile destinationVirtualFolder = (IRemoteFile)getChildFromFolder(localFss, destinationArchiveFile, folderToCopyName2); + + //Now, copy one of the folder from the zip file in dstore into destinationVirtualFolder + IRemoteFile firstLevelChild = (IRemoteFile)getChildFromFolder(sourceZipFile, folderToCopyName1); + ISystemDragDropAdapter srcAdapter1 = (ISystemDragDropAdapter) ((IAdaptable) firstLevelChild).getAdapter(ISystemDragDropAdapter.class); + SystemRemoteResourceSet fromSet3 = new SystemRemoteResourceSet(fss, srcAdapter1); + fromSet3.addResource(firstLevelChild); + ISystemResourceSet tempObjects3 = srcAdapter1.doDrag(fromSet3, mon); + UniversalFileTransferUtility.copyWorkspaceResourcesToRemote((SystemWorkspaceResourceSet)tempObjects3, destinationVirtualFolder, mon, true); + + Thread.sleep(50); + Object copiedVirtualFolder = getChildFromFolder(localFss, destinationVirtualFolder, folderToCopyName1); + + assertNotNull(copiedVirtualFolder); + + String[] contents = {"Team", "TypeFilters", "xuanchentp", ".compatibility", ".project"}; + int[] typesToCheck = {TYPE_FOLDER, TYPE_FOLDER, TYPE_FOLDER, TYPE_FILE, TYPE_FILE}; + checkFolderContents(localFss, (IRemoteFile)copiedVirtualFolder, contents, typesToCheck); + + //Now, need to delete the temp dir in the Local connection + try { + localFss.delete(localTempDir, mon); + } catch(SystemMessageException msg) { + //ensure that super.tearDown() can run + System.err.println("Exception on deleting local temp dir: "+msg.getLocalizedMessage()); //$NON-NLS-1$ + } + } + + public void testCopyVFToVFLevelTwoFromDStoreToLocal() throws Exception { + if (!RSETestsPlugin.isTestCaseEnabled("FileServiceTest.testCreateFile")) return; //$NON-NLS-1$ + + //Create the zip files in dstore connection. + createSourceZipFiles(); + + //Create the zip files in local connection + IRemoteFile localTempDir = createSourceZipFiles(localFss); + + String sourceZipFileName = zipSourceFileName1; + IRemoteFile sourceZipFile = (IRemoteFile)getChildFromFolder(tempDir, sourceZipFileName); + assertNotNull(sourceZipFile); + + //The destination is the second level virtual child of a zip file + //in local temp dir + IRemoteFile destinationArchiveFile = (IRemoteFile)getChildFromFolder(localFss, localTempDir, zipSourceFileName2); + IRemoteFile firstChild = (IRemoteFile)getChildFromFolder(localFss, destinationArchiveFile, folderToCopyName2); + IRemoteFile destinationVirtualFolder = (IRemoteFile)getChildFromFolder(localFss, firstChild, "20070319"); + + //the source is a second level child of a zip file in dstore connection temp dir + String secondLeveChildName = "Team"; + IRemoteFile firstLevelChild = (IRemoteFile)getChildFromFolder(fss, sourceZipFile, folderToCopyName1); + IRemoteFile secondLevelChild = (IRemoteFile)getChildFromFolder(fss, firstLevelChild, secondLeveChildName); + + + ISystemDragDropAdapter srcAdapter1 = (ISystemDragDropAdapter) ((IAdaptable) secondLevelChild).getAdapter(ISystemDragDropAdapter.class); + SystemRemoteResourceSet fromSet3 = new SystemRemoteResourceSet(fss, srcAdapter1); + fromSet3.addResource(secondLevelChild); + ISystemResourceSet tempObjects3 = srcAdapter1.doDrag(fromSet3, mon); + UniversalFileTransferUtility.copyWorkspaceResourcesToRemote((SystemWorkspaceResourceSet)tempObjects3, destinationVirtualFolder, mon, true); + + Thread.sleep(50); + Object copiedVirtualFolder = getChildFromFolder(localFss, destinationVirtualFolder, secondLeveChildName); + + assertNotNull(copiedVirtualFolder); + + String[] contents = {"Connections", "Filters", "profile.xmi"}; + int[] typesToCheck = {TYPE_FOLDER, TYPE_FOLDER, TYPE_FILE}; + checkFolderContents(localFss, (IRemoteFile)copiedVirtualFolder, contents, typesToCheck); + + //Now, need to delete the temp dir in the Local connection + try { + localFss.delete(localTempDir, mon); + } catch(SystemMessageException msg) { + //ensure that super.tearDown() can run + System.err.println("Exception on deleting local temp dir: "+msg.getLocalizedMessage()); //$NON-NLS-1$ + } + } + + public void testCopyVFToVFFromLocalToDStore() throws Exception { + if (!RSETestsPlugin.isTestCaseEnabled("FileServiceTest.testCreateFile")) return; //$NON-NLS-1$ + + //Create the zip files in dstore connection. + createSourceZipFiles(); + + //Create the zip files in local connection + IRemoteFile localTempDir = createSourceZipFiles(localFss); + + String sourceZipFileName = zipSourceFileName1; + //Source zip file is from Local connection + IRemoteFile sourceZipFile = (IRemoteFile)getChildFromFolder(localFss, localTempDir, sourceZipFileName); + assertNotNull(sourceZipFile); + + //The destination is the first level virtual child of a zip file + //in dstore temp dir + IRemoteFile destinationArchiveFile = (IRemoteFile)getChildFromFolder(fss, tempDir, zipSourceFileName2); + IRemoteFile destinationVirtualFolder = (IRemoteFile)getChildFromFolder(fss, destinationArchiveFile, folderToCopyName2); + + //Now, copy one of the folder from the zip file in local into destinationVirtualFolder + //First, drag the virtual folder from the local zip file + IRemoteFile firstLevelChild = (IRemoteFile)getChildFromFolder(localFss, sourceZipFile, folderToCopyName1); + ISystemDragDropAdapter srcAdapter1 = (ISystemDragDropAdapter) ((IAdaptable) firstLevelChild).getAdapter(ISystemDragDropAdapter.class); + SystemRemoteResourceSet fromSet3 = new SystemRemoteResourceSet(localFss, srcAdapter1); + fromSet3.addResource(firstLevelChild); + ISystemResourceSet tempObjects3 = srcAdapter1.doDrag(fromSet3, mon); + //The drop to the destination virtual folder in dstore connection. + UniversalFileTransferUtility.copyWorkspaceResourcesToRemote((SystemWorkspaceResourceSet)tempObjects3, destinationVirtualFolder, mon, true); + + //The result is in the dstore connection + Thread.sleep(50); + Object copiedVirtualFolder = getChildFromFolder(fss, destinationVirtualFolder, folderToCopyName1); + + assertNotNull(copiedVirtualFolder); + + String[] contents = {"Team", "TypeFilters", "xuanchentp", ".compatibility", ".project"}; + int[] typesToCheck = {TYPE_FOLDER, TYPE_FOLDER, TYPE_FOLDER, TYPE_FILE, TYPE_FILE}; + checkFolderContents(fss, (IRemoteFile)copiedVirtualFolder, contents, typesToCheck); + + //Now, need to delete the temp dir in the Local connection + try { + localFss.delete(localTempDir, mon); + } catch(SystemMessageException msg) { + //ensure that super.tearDown() can run + System.err.println("Exception on deleting local temp dir: "+msg.getLocalizedMessage()); //$NON-NLS-1$ + } + } + + public void testCopyVFToVFLevelTwoFromLocalToDStore() throws Exception { + if (!RSETestsPlugin.isTestCaseEnabled("FileServiceTest.testCreateFile")) return; //$NON-NLS-1$ + + //Create the zip files in dstore connection. + createSourceZipFiles(); + + //Create the zip files in local connection + IRemoteFile localTempDir = createSourceZipFiles(localFss); + + String sourceZipFileName = zipSourceFileName1; + //Source zip file is in local connection + IRemoteFile sourceZipFile = (IRemoteFile)getChildFromFolder(localFss, localTempDir, sourceZipFileName); + assertNotNull(sourceZipFile); + + //The destination is the second level virtual child of a zip file + //in dstore temp dir + IRemoteFile destinationArchiveFile = (IRemoteFile)getChildFromFolder(fss, tempDir, zipSourceFileName2); + IRemoteFile firstChild = (IRemoteFile)getChildFromFolder(fss, destinationArchiveFile, folderToCopyName2); + IRemoteFile destinationVirtualFolder = (IRemoteFile)getChildFromFolder(fss, firstChild, "20070319"); + + //the source is a second level child of a zip file in local connection temp dir + String secondLeveChildName = "Team"; + IRemoteFile firstLevelChild = (IRemoteFile)getChildFromFolder(localFss, sourceZipFile, folderToCopyName1); + IRemoteFile secondLevelChild = (IRemoteFile)getChildFromFolder(localFss, firstLevelChild, secondLeveChildName); + + //Now, copy one of the folder from the zip file in local into destinationVirtualFolder + //First, drag the virtual folder from the local zip file + ISystemDragDropAdapter srcAdapter1 = (ISystemDragDropAdapter) ((IAdaptable) secondLevelChild).getAdapter(ISystemDragDropAdapter.class); + SystemRemoteResourceSet fromSet3 = new SystemRemoteResourceSet(localFss, srcAdapter1); + fromSet3.addResource(secondLevelChild); + ISystemResourceSet tempObjects3 = srcAdapter1.doDrag(fromSet3, mon); + UniversalFileTransferUtility.copyWorkspaceResourcesToRemote((SystemWorkspaceResourceSet)tempObjects3, destinationVirtualFolder, mon, true); + + //The result is in the dstore connection + Thread.sleep(50); + Object copiedVirtualFolder = getChildFromFolder(fss, destinationVirtualFolder, secondLeveChildName); + + assertNotNull(copiedVirtualFolder); + + String[] contents = {"Connections", "Filters", "profile.xmi"}; + int[] typesToCheck = {TYPE_FOLDER, TYPE_FOLDER, TYPE_FILE}; + checkFolderContents(fss, (IRemoteFile)copiedVirtualFolder, contents, typesToCheck); + + //Now, need to delete the temp dir in the Local connection + try { + localFss.delete(localTempDir, mon); + } catch(SystemMessageException msg) { + //ensure that super.tearDown() can run + System.err.println("Exception on deleting local temp dir: "+msg.getLocalizedMessage()); //$NON-NLS-1$ + } + } + } diff --git a/rse/tests/org.eclipse.rse.tests/src/org/eclipse/rse/tests/subsystems/files/FileServiceArchiveTestDStoreWindows.java b/rse/tests/org.eclipse.rse.tests/src/org/eclipse/rse/tests/subsystems/files/FileServiceArchiveTestDStoreWindows.java index cde40b6e458..e451a28a187 100644 --- a/rse/tests/org.eclipse.rse.tests/src/org/eclipse/rse/tests/subsystems/files/FileServiceArchiveTestDStoreWindows.java +++ b/rse/tests/org.eclipse.rse.tests/src/org/eclipse/rse/tests/subsystems/files/FileServiceArchiveTestDStoreWindows.java @@ -12,16 +12,25 @@ package org.eclipse.rse.tests.subsystems.files; import junit.framework.TestSuite; +import org.eclipse.core.filesystem.EFS; +import org.eclipse.core.filesystem.IFileStore; +import org.eclipse.core.runtime.IAdaptable; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.rse.core.IRSESystemType; import org.eclipse.rse.core.model.IHost; import org.eclipse.rse.core.model.ISystemRegistry; +import org.eclipse.rse.core.model.ISystemResourceSet; +import org.eclipse.rse.core.model.SystemRemoteResourceSet; import org.eclipse.rse.core.model.SystemStartHere; +import org.eclipse.rse.core.model.SystemWorkspaceResourceSet; import org.eclipse.rse.core.subsystems.IConnectorService; import org.eclipse.rse.core.subsystems.IRemoteServerLauncher; import org.eclipse.rse.core.subsystems.IServerLauncherProperties; import org.eclipse.rse.core.subsystems.ISubSystem; +import org.eclipse.rse.core.subsystems.ISystemDragDropAdapter; import org.eclipse.rse.core.subsystems.ServerLaunchType; +import org.eclipse.rse.files.ui.resources.UniversalFileTransferUtility; +import org.eclipse.rse.internal.subsystems.files.core.ISystemFilePreferencesConstants; import org.eclipse.rse.services.files.IFileService; import org.eclipse.rse.subsystems.files.core.servicesubsystem.IFileServiceSubSystem; import org.eclipse.rse.subsystems.files.core.subsystems.IRemoteFile; @@ -61,7 +70,7 @@ public class FileServiceArchiveTestDStoreWindows extends FileServiceArchiveTest //suite.addTest(TestSuite.createTest(FileServiceArchiveTestDStoreWindows.class, "testRenameVirtualFileBigZip")); //$NON-NLS-1$ suite.addTest(TestSuite.createTest(FileServiceArchiveTestDStoreWindows.class, "testSuperTransferLocalToRemote")); - + suite.addTest(TestSuite.createTest(FileServiceArchiveTestDStore.class, "testSuperTransferDStoreToLocal")); return suite; } @@ -143,7 +152,5 @@ public class FileServiceArchiveTestDStoreWindows extends FileServiceArchiveTest store.setValue(ISystemPreferencesConstants.ALERT_NONSSL, fPreference_ALERT_NONSSL); super.tearDown(); } - - }