1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-07-14 12:35:22 +02:00

[191472] now checking if the subsystem supports archive transfer

This commit is contained in:
David McKnight 2007-06-08 22:46:49 +00:00
parent 06cf5e1b87
commit 3e4d5cfffe

View file

@ -21,6 +21,7 @@
* Martin Oberhuber (Wind River) - [186773] split ISystemRegistryUI from ISystemRegistry * Martin Oberhuber (Wind River) - [186773] split ISystemRegistryUI from ISystemRegistry
* Martin Oberhuber (Wind River) - [189130] Move SystemIFileProperties from UI to Core * Martin Oberhuber (Wind River) - [189130] Move SystemIFileProperties from UI to Core
* Xuan Chen (IBM) - [187548] Editor shows incorrect file name after renaming file on Linux dstore * Xuan Chen (IBM) - [187548] Editor shows incorrect file name after renaming file on Linux dstore
* David McKnight (IBM) - [191472] should not use super transfer with SSH/FTP Folder Copy and Paste
********************************************************************************/ ********************************************************************************/
package org.eclipse.rse.files.ui.resources; package org.eclipse.rse.files.ui.resources;
@ -113,6 +114,19 @@ public class UniversalFileTransferUtility
} }
} }
/**
* Indicates whether super transfer should be used for a particular file transfer. This will return true if both
* the preference for super transfer is turned on and the subsystem configuration supports archives
* @param subsystem the subsystem used to transfer files and folders
* @return true if super transfer should be used
*/
private static boolean doSuperTransfer(IRemoteFileSubSystem subsystem)
{
boolean doSuperTransferProperty = RSEUIPlugin.getDefault().getPreferenceStore().getBoolean(ISystemFilePreferencesConstants.DOSUPERTRANSFER) &&
subsystem.getParentRemoteFileSubSystemConfiguration().supportsArchiveManagement();
return doSuperTransferProperty;
}
/** /**
* Transfer a remote file or folder from one remote location to another. * Transfer a remote file or folder from one remote location to another.
* @param srcFileOrFolder the file or folder to copy * @param srcFileOrFolder the file or folder to copy
@ -326,10 +340,9 @@ public class UniversalFileTransferUtility
{ {
return null; return null;
} }
boolean doSuperTransferProperty = RSEUIPlugin.getDefault().getPreferenceStore().getBoolean(ISystemFilePreferencesConstants.DOSUPERTRANSFER);
boolean doSuperTransferProperty = doSuperTransfer(srcFS);
List set = remoteSet.getResourceSet(); List set = remoteSet.getResourceSet();
for (int i = 0; i < set.size() && !resultSet.hasMessage(); i++) for (int i = 0; i < set.size() && !resultSet.hasMessage(); i++)
{ {
@ -408,7 +421,8 @@ public class UniversalFileTransferUtility
IResource tempResource = (IResource)resultSet.get(r); IResource tempResource = (IResource)resultSet.get(r);
IRemoteFile rmtFile = (IRemoteFile)remoteSet.get(r); IRemoteFile rmtFile = (IRemoteFile)remoteSet.get(r);
if (!tempResource.exists()) if (tempResource != null && !tempResource.exists()) // need to check for null resource
// because it's possible to be null when the download fails
{ {
// refresh temp file in project // refresh temp file in project
try try
@ -823,7 +837,7 @@ public class UniversalFileTransferUtility
{ {
IResource tempFolder = null; IResource tempFolder = null;
boolean doSuperTransferProperty = RSEUIPlugin.getDefault().getPreferenceStore().getBoolean(ISystemFilePreferencesConstants.DOSUPERTRANSFER); boolean doSuperTransferProperty = doSuperTransfer(srcFileOrFolder.getParentRemoteFileSubSystem());
if (doCompressedTransfer && doSuperTransferProperty && !srcFileOrFolder.isRoot() if (doCompressedTransfer && doSuperTransferProperty && !srcFileOrFolder.isRoot()
&& !(srcFileOrFolder.getParentRemoteFileSubSystem().getHost().getSystemType().isLocal())) && !(srcFileOrFolder.getParentRemoteFileSubSystem().getHost().getSystemType().isLocal()))
@ -963,10 +977,11 @@ public class UniversalFileTransferUtility
*/ */
public static SystemRemoteResourceSet copyWorkspaceResourcesToRemote(SystemWorkspaceResourceSet workspaceSet, IRemoteFile targetFolder, IProgressMonitor monitor, boolean checkForCollisions) public static SystemRemoteResourceSet copyWorkspaceResourcesToRemote(SystemWorkspaceResourceSet workspaceSet, IRemoteFile targetFolder, IProgressMonitor monitor, boolean checkForCollisions)
{ {
boolean doSuperTransferPreference = RSEUIPlugin.getDefault().getPreferenceStore().getBoolean(ISystemFilePreferencesConstants.DOSUPERTRANSFER)
&& targetFolder.getParentRemoteFileSubSystem().getParentRemoteFileSubSystemConfiguration().supportsArchiveManagement();
IRemoteFileSubSystem targetFS = targetFolder.getParentRemoteFileSubSystem(); IRemoteFileSubSystem targetFS = targetFolder.getParentRemoteFileSubSystem();
boolean doSuperTransferPreference = doSuperTransfer(targetFS);
SystemRemoteResourceSet resultSet = new SystemRemoteResourceSet(targetFS); SystemRemoteResourceSet resultSet = new SystemRemoteResourceSet(targetFS);
if (targetFolder.isStale()) if (targetFolder.isStale())
@ -1361,8 +1376,7 @@ public class UniversalFileTransferUtility
boolean isTargetLocal = newTargetFolder.getParentRemoteFileSubSystem().getHost().getSystemType().isLocal(); boolean isTargetLocal = newTargetFolder.getParentRemoteFileSubSystem().getHost().getSystemType().isLocal();
boolean destInArchive = (newTargetFolder instanceof IVirtualRemoteFile) || newTargetFolder.isArchive(); boolean destInArchive = (newTargetFolder instanceof IVirtualRemoteFile) || newTargetFolder.isArchive();
boolean doSuperTransferPreference = RSEUIPlugin.getDefault().getPreferenceStore().getBoolean(ISystemFilePreferencesConstants.DOSUPERTRANSFER); boolean doSuperTransferPreference = doSuperTransfer(targetFS);
if (doCompressedTransfer && doSuperTransferPreference && !destInArchive && !isTargetLocal) if (doCompressedTransfer && doSuperTransferPreference && !destInArchive && !isTargetLocal)
{ {
compressedCopyWorkspaceResourceToRemote(directory, newTargetFolder, monitor); compressedCopyWorkspaceResourceToRemote(directory, newTargetFolder, monitor);