diff --git a/rse/plugins/org.eclipse.rse.services.dstore/src/org/eclipse/rse/services/dstore/AbstractDStoreService.java b/rse/plugins/org.eclipse.rse.services.dstore/src/org/eclipse/rse/services/dstore/AbstractDStoreService.java index a99d66d9ef0..c4f85ecef66 100644 --- a/rse/plugins/org.eclipse.rse.services.dstore/src/org/eclipse/rse/services/dstore/AbstractDStoreService.java +++ b/rse/plugins/org.eclipse.rse.services.dstore/src/org/eclipse/rse/services/dstore/AbstractDStoreService.java @@ -25,20 +25,23 @@ import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.dstore.core.model.DataElement; import org.eclipse.dstore.core.model.DataStore; import org.eclipse.dstore.core.model.IDataStoreProvider; +import org.eclipse.rse.services.clientserver.messages.ISystemMessageProvider; import org.eclipse.rse.services.clientserver.messages.SystemMessage; import org.eclipse.rse.services.dstore.util.DStoreStatusMonitor; public abstract class AbstractDStoreService implements IDStoreService { protected IDataStoreProvider _dataStoreProvider; + protected ISystemMessageProvider _msgProvider; protected DataElement _minerElement; protected DStoreStatusMonitor _statusMonitor; protected Map _cmdDescriptorMap; protected DataElement _initializeStatus; - public AbstractDStoreService(IDataStoreProvider dataStoreProvider) + public AbstractDStoreService(IDataStoreProvider dataStoreProvider, ISystemMessageProvider msgProvider) { _dataStoreProvider = dataStoreProvider; + _msgProvider = msgProvider; _cmdDescriptorMap = new HashMap(); } @@ -307,6 +310,6 @@ public abstract class AbstractDStoreService implements IDStoreService */ public SystemMessage getMessage(String messageID) { - return null; + return _msgProvider.getMessage(messageID); } } \ No newline at end of file diff --git a/rse/plugins/org.eclipse.rse.services.dstore/src/org/eclipse/rse/services/dstore/files/DStoreFileService.java b/rse/plugins/org.eclipse.rse.services.dstore/src/org/eclipse/rse/services/dstore/files/DStoreFileService.java index 5a4897366eb..a50c03bbdc9 100644 --- a/rse/plugins/org.eclipse.rse.services.dstore/src/org/eclipse/rse/services/dstore/files/DStoreFileService.java +++ b/rse/plugins/org.eclipse.rse.services.dstore/src/org/eclipse/rse/services/dstore/files/DStoreFileService.java @@ -26,6 +26,7 @@ import java.io.UnsupportedEncodingException; import java.text.MessageFormat; import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; import org.eclipse.core.runtime.IProgressMonitor; @@ -42,6 +43,7 @@ import org.eclipse.rse.services.clientserver.IServiceConstants; import org.eclipse.rse.services.clientserver.ISystemFileTypes; import org.eclipse.rse.services.clientserver.PathUtility; import org.eclipse.rse.services.clientserver.archiveutils.ArchiveHandlerManager; +import org.eclipse.rse.services.clientserver.messages.ISystemMessageProvider; import org.eclipse.rse.services.clientserver.messages.SystemMessage; import org.eclipse.rse.services.clientserver.messages.SystemMessageException; import org.eclipse.rse.services.dstore.AbstractDStoreService; @@ -72,9 +74,9 @@ public class DStoreFileService extends AbstractDStoreService implements IFileSer DataStoreResources.FALSE, "2"}; - public DStoreFileService(IDataStoreProvider dataStoreProvider, ISystemFileTypes fileTypeRegistry) + public DStoreFileService(IDataStoreProvider dataStoreProvider, ISystemFileTypes fileTypeRegistry, ISystemMessageProvider msgProvider) { - super(dataStoreProvider); + super(dataStoreProvider, msgProvider); _fileElementMap = new HashMap(); _fileTypeRegistry = fileTypeRegistry; } @@ -461,11 +463,11 @@ public class DStoreFileService extends AbstractDStoreService implements IFileSer available = bufInputStream.available(); } -// if (listener.uploadHasFailed()) -// { -// showUploadFailedMessage(listener, source); -// } -// else + // if (listener.uploadHasFailed()) + // { + // showUploadFailedMessage(listener, source); + // } + // else { transferSuccessful = true; } @@ -549,7 +551,7 @@ public class DStoreFileService extends AbstractDStoreService implements IFileSer public boolean download(IProgressMonitor monitor, String remoteParent, String remoteFile, File localFile, - boolean isBinary, String encoding) + boolean isBinary, String encoding) throws SystemMessageException { DataElement universaltemp = getMinerElement(); @@ -653,6 +655,44 @@ public class DStoreFileService extends AbstractDStoreService implements IFileSer { } } + + List resultList = remoteElement.getNestedData(); + DataElement resultChild = null; + + for (int i = 0; i < resultList.size(); i++) + { + + resultChild = (DataElement) resultList.get(i); + + if (resultChild.getType().equals(DOWNLOAD_RESULT_SUCCESS_TYPE)) + { + return true; + } + else if (resultChild.getType().equals(DOWNLOAD_RESULT_FILE_NOT_FOUND_EXCEPTION)) + { + localFile.delete(); + SystemMessage msg = getMessage("RSEF1001").makeSubstitution(DOWNLOAD_RESULT_FILE_NOT_FOUND_EXCEPTION); + throw new SystemMessageException(msg); + } + else if (resultChild.getType().equals(DOWNLOAD_RESULT_UNSUPPORTED_ENCODING_EXCEPTION)) + { + //SystemMessage msg = getMessage(); + //throw new SystemMessageException(msg); + //UnsupportedEncodingException e = new UnsupportedEncodingException(resultChild.getName()); + //UniversalSystemPlugin.logError(CLASSNAME + "." + "copy: " + "error reading file " + remotePath, e); + //throw new RemoteFileIOException(e); + } + + else if (resultChild.getType().equals(DOWNLOAD_RESULT_IO_EXCEPTION)) + { + localFile.delete(); + SystemMessage msg = getMessage("RSEF1001").makeSubstitution(DOWNLOAD_RESULT_IO_EXCEPTION); + throw new SystemMessageException(msg); + //IOException e = new IOException(resultChild.getName()); + //UniversalSystemPlugin.logError(CLASSNAME + "." + "copy: " + "error reading file " + remotePath, e); + //throw new RemoteFileIOException(e); + } + } // DownloadListener dlistener = new DownloadListener(shell, monitor, getConnectorService(), status, localFile, remotePath, (long) universalFile.getLength()); // try @@ -795,20 +835,38 @@ public class DStoreFileService extends AbstractDStoreService implements IFileSer return getFile(null, ".","."); } - public IHostFile createFile(IProgressMonitor monitor, String remoteParent, String fileName) + public IHostFile createFile(IProgressMonitor monitor, String remoteParent, String fileName) throws SystemMessageException { String remotePath = remoteParent + getSeparator(remoteParent) + fileName; DataElement de = getElementFor(remotePath); - dsQueryCommand(monitor, de, C_CREATE_FILE); - return new DStoreHostFile(de); + + + DataElement status = dsStatusCommand(monitor, de, C_CREATE_FILE); + + if (status == null) return null; + if (FileSystemMessageUtil.getSourceMessage(status).equals(IServiceConstants.SUCCESS)) + return new DStoreHostFile(de); + else + { + throw new SystemMessageException(getMessage("RSEF1302").makeSubstitution(remotePath)); + } } - public IHostFile createFolder(IProgressMonitor monitor, String remoteParent, String folderName) + public IHostFile createFolder(IProgressMonitor monitor, String remoteParent, String folderName) throws SystemMessageException { String remotePath = remoteParent + getSeparator(remoteParent) + folderName; DataElement de = getElementFor(remotePath); - dsQueryCommand(monitor, de, C_CREATE_FOLDER); - return new DStoreHostFile(de); + + DataElement status = dsStatusCommand(monitor, de, C_CREATE_FOLDER); + + if (status == null) return null; + if (FileSystemMessageUtil.getSourceMessage(status).equals(IServiceConstants.SUCCESS)) + return new DStoreHostFile(de); + else + { + throw new SystemMessageException(getMessage("RSEF1304").makeSubstitution(remotePath)); + } + } public boolean delete(IProgressMonitor monitor, String remoteParent, String fileName) throws SystemMessageException @@ -846,16 +904,24 @@ public class DStoreFileService extends AbstractDStoreService implements IFileSer else throw new SystemMessageException(getMessage("RSEF1300").makeSubstitution(FileSystemMessageUtil.getSourceLocation(status))); } - public boolean rename(IProgressMonitor monitor, String remoteParent, String oldName, String newName) + public boolean rename(IProgressMonitor monitor, String remoteParent, String oldName, String newName) throws SystemMessageException { String remotePath = remoteParent + getSeparator(remoteParent) + oldName; DataElement de = getElementFor(remotePath); de.setAttribute(DE.A_SOURCE, newName); - dsQueryCommand(monitor, de, C_RENAME); - return true; + + DataElement status = dsStatusCommand(monitor, de, C_RENAME); + + if (status == null) return false; + if (FileSystemMessageUtil.getSourceMessage(status).equals(IServiceConstants.SUCCESS)) + return true; + else + { + throw new SystemMessageException(getMessage("RSEF1301").makeSubstitution(FileSystemMessageUtil.getSourceLocation(status))); + } } - public boolean rename(IProgressMonitor monitor, String remoteParent, String oldName, String newName, IHostFile oldFile) + public boolean rename(IProgressMonitor monitor, String remoteParent, String oldName, String newName, IHostFile oldFile) throws SystemMessageException { boolean retVal = rename(monitor, remoteParent, oldName, newName); String newPath = remoteParent + getSeparator(remoteParent) + newName; @@ -863,7 +929,7 @@ public class DStoreFileService extends AbstractDStoreService implements IFileSer return retVal; } - public boolean move(IProgressMonitor monitor, String srcParent, String srcName, String tgtParent, String tgtName) + public boolean move(IProgressMonitor monitor, String srcParent, String srcName, String tgtParent, String tgtName) throws SystemMessageException { // String src = srcParent + getSeparator(srcParent) + srcName; // String tgt = tgtParent + getSeparator(tgtParent) + tgtName; @@ -977,7 +1043,7 @@ public class DStoreFileService extends AbstractDStoreService implements IFileSer } } - public boolean copy(IProgressMonitor monitor, String srcParent, String srcName, String tgtParent, String tgtName) + public boolean copy(IProgressMonitor monitor, String srcParent, String srcName, String tgtParent, String tgtName) throws SystemMessageException { DataStore ds = getDataStore(); String srcRemotePath = srcParent + getSeparator(srcParent) + srcName; @@ -1001,9 +1067,8 @@ public class DStoreFileService extends AbstractDStoreService implements IFileSer getStatusMonitor(ds).waitForUpdate(status, monitor); if (status.getAttribute(DE.A_SOURCE).equals(FAILED)) { - -// String errMsg = status.getAttribute(DE.A_VALUE); - + + throw new SystemMessageException(getMessage("RSEF1306").makeSubstitution(srcName)); /* // for an unexpected error, we don't have an error message from the server if (errMsg.equals(UNEXPECTED_ERROR)) { @@ -1015,8 +1080,8 @@ public class DStoreFileService extends AbstractDStoreService implements IFileSer throw new RemoteFileIOException(new Exception(msg)); - */ - return false; + /*/ + } } catch (InterruptedException e) @@ -1028,7 +1093,7 @@ public class DStoreFileService extends AbstractDStoreService implements IFileSer return false; } - public boolean copyBatch(IProgressMonitor monitor, String[] srcParents, String[] srcNames, String tgtParent) + public boolean copyBatch(IProgressMonitor monitor, String[] srcParents, String[] srcNames, String tgtParent) throws SystemMessageException { DataStore ds = getDataStore(); @@ -1051,22 +1116,7 @@ public class DStoreFileService extends AbstractDStoreService implements IFileSer getStatusMonitor(ds).waitForUpdate(status, monitor); if (status.getAttribute(DE.A_SOURCE).equals(FAILED)) { - -// String errMsg = status.getAttribute(DE.A_VALUE); - - /* - // for an unexpected error, we don't have an error message from the server - if (errMsg.equals(UNEXPECTED_ERROR)) { - msg = SystemPlugin.getPluginMessage(MSG_ERROR_UNEXPECTED).getLevelOneText(); - } - else { - msg = errMsg; - } - - - throw new RemoteFileIOException(new Exception(msg)); - */ - return false; + throw new SystemMessageException(getMessage("RSEF1306").makeSubstitution(srcNames[0])); } } catch (InterruptedException e) diff --git a/rse/plugins/org.eclipse.rse.services.dstore/src/org/eclipse/rse/services/dstore/files/DStoreHostFile.java b/rse/plugins/org.eclipse.rse.services.dstore/src/org/eclipse/rse/services/dstore/files/DStoreHostFile.java index 8d8aec02f85..ad71ac9ec42 100644 --- a/rse/plugins/org.eclipse.rse.services.dstore/src/org/eclipse/rse/services/dstore/files/DStoreHostFile.java +++ b/rse/plugins/org.eclipse.rse.services.dstore/src/org/eclipse/rse/services/dstore/files/DStoreHostFile.java @@ -31,6 +31,9 @@ public class DStoreHostFile implements IHostFile public static final int ATTRIBUTE_MODIFIED_DATE=1; public static final int ATTRIBUTE_SIZE = 2; public static final int ATTRIBUTE_CLASSIFICATION =11; + public static final int ATTRIBUTE_IS_HIDDEN=3; + public static final int ATTRIBUTE_CAN_WRITE=4; + public static final int ATTRIBUTE_CAN_READ=5; protected DataElement _element; @@ -114,7 +117,15 @@ public class DStoreHostFile implements IHostFile else { - return name.charAt(0) == '.'; + if (name.charAt(0) == '.') + { + return true; + } + else + { + String str = getAttribute(_element.getSource(), ATTRIBUTE_IS_HIDDEN); + return(str.equals("true")); + } } } @@ -273,4 +284,15 @@ public class DStoreHostFile implements IHostFile { return _isArchive; } + + public boolean canRead() { + String str = getAttribute(_element.getSource(), ATTRIBUTE_CAN_READ); + return(str.equals("true")); + } + + public boolean canWrite() { + String str = getAttribute(_element.getSource(), ATTRIBUTE_CAN_WRITE); + return(str.equals("true")); + } + } \ No newline at end of file diff --git a/rse/plugins/org.eclipse.rse.services.dstore/src/org/eclipse/rse/services/dstore/rmtservice/DStoreRemoteServiceService.java b/rse/plugins/org.eclipse.rse.services.dstore/src/org/eclipse/rse/services/dstore/rmtservice/DStoreRemoteServiceService.java index 8d55dcd7b48..868e0e1fe47 100644 --- a/rse/plugins/org.eclipse.rse.services.dstore/src/org/eclipse/rse/services/dstore/rmtservice/DStoreRemoteServiceService.java +++ b/rse/plugins/org.eclipse.rse.services.dstore/src/org/eclipse/rse/services/dstore/rmtservice/DStoreRemoteServiceService.java @@ -18,14 +18,15 @@ package org.eclipse.rse.services.dstore.rmtservice; import org.eclipse.dstore.core.java.IRemoteClassInstance; import org.eclipse.dstore.core.model.IDataStoreProvider; +import org.eclipse.rse.services.clientserver.messages.ISystemMessageProvider; import org.eclipse.rse.services.dstore.AbstractDStoreService; public class DStoreRemoteServiceService extends AbstractDStoreService { - public DStoreRemoteServiceService(IDataStoreProvider dataStoreProvider) + public DStoreRemoteServiceService(IDataStoreProvider dataStoreProvider, ISystemMessageProvider msgProvider) { - super(dataStoreProvider); + super(dataStoreProvider, msgProvider); } protected String getMinerId() diff --git a/rse/plugins/org.eclipse.rse.services.dstore/src/org/eclipse/rse/services/dstore/search/DStoreSearchService.java b/rse/plugins/org.eclipse.rse.services.dstore/src/org/eclipse/rse/services/dstore/search/DStoreSearchService.java index d6c57bdf33f..3d1ecf43ab7 100644 --- a/rse/plugins/org.eclipse.rse.services.dstore/src/org/eclipse/rse/services/dstore/search/DStoreSearchService.java +++ b/rse/plugins/org.eclipse.rse.services.dstore/src/org/eclipse/rse/services/dstore/search/DStoreSearchService.java @@ -24,6 +24,7 @@ import org.eclipse.dstore.core.model.DataStore; import org.eclipse.dstore.core.model.IDataStoreProvider; import org.eclipse.rse.dstore.universal.miners.filesystem.UniversalFileSystemMiner; import org.eclipse.rse.services.clientserver.SystemSearchString; +import org.eclipse.rse.services.clientserver.messages.ISystemMessageProvider; import org.eclipse.rse.services.dstore.AbstractDStoreService; import org.eclipse.rse.services.dstore.ServiceResources; import org.eclipse.rse.services.dstore.files.DStoreHostFile; @@ -36,9 +37,9 @@ import org.eclipse.rse.services.search.ISearchService; public class DStoreSearchService extends AbstractDStoreService implements ISearchService { - public DStoreSearchService(IDataStoreProvider provider) + public DStoreSearchService(IDataStoreProvider provider, ISystemMessageProvider msgProvider) { - super(provider); + super(provider, msgProvider); } public String getName() diff --git a/rse/plugins/org.eclipse.rse.services.dstore/src/org/eclipse/rse/services/dstore/shells/DStoreShellService.java b/rse/plugins/org.eclipse.rse.services.dstore/src/org/eclipse/rse/services/dstore/shells/DStoreShellService.java index 7ed9c0acec0..e3ecb43a4cd 100644 --- a/rse/plugins/org.eclipse.rse.services.dstore/src/org/eclipse/rse/services/dstore/shells/DStoreShellService.java +++ b/rse/plugins/org.eclipse.rse.services.dstore/src/org/eclipse/rse/services/dstore/shells/DStoreShellService.java @@ -26,6 +26,7 @@ import org.eclipse.dstore.core.model.DataStore; import org.eclipse.dstore.core.model.IDataStoreProvider; import org.eclipse.rse.dstore.universal.miners.command.CommandMiner; import org.eclipse.rse.dstore.universal.miners.environment.EnvironmentMiner; +import org.eclipse.rse.services.clientserver.messages.ISystemMessageProvider; import org.eclipse.rse.services.clientserver.messages.SystemMessage; import org.eclipse.rse.services.dstore.AbstractDStoreService; import org.eclipse.rse.services.dstore.ServiceResources; @@ -40,9 +41,9 @@ public class DStoreShellService extends AbstractDStoreService implements IShellS protected DataElement _envMinerElement; protected DataElement _envMinerStatus; - public DStoreShellService(IDataStoreProvider dataStoreProvider) + public DStoreShellService(IDataStoreProvider dataStoreProvider, ISystemMessageProvider msgProvider) { - super(dataStoreProvider); + super(dataStoreProvider, msgProvider); } diff --git a/rse/plugins/org.eclipse.rse.services.files.ftp/src/org/eclipse/rse/services/files/ftp/FTPHostFile.java b/rse/plugins/org.eclipse.rse.services.files.ftp/src/org/eclipse/rse/services/files/ftp/FTPHostFile.java index 28e2595fa30..45ab13300fe 100644 --- a/rse/plugins/org.eclipse.rse.services.files.ftp/src/org/eclipse/rse/services/files/ftp/FTPHostFile.java +++ b/rse/plugins/org.eclipse.rse.services.files.ftp/src/org/eclipse/rse/services/files/ftp/FTPHostFile.java @@ -134,5 +134,15 @@ public class FTPHostFile implements IHostFile { return _isArchive; } + + //TODO implement this + public boolean canRead() { + return true; + } + + //TODO implement this + public boolean canWrite() { + return true; + } } \ No newline at end of file diff --git a/rse/plugins/org.eclipse.rse.services.local/src/org/eclipse/rse/services/local/files/LocalHostFile.java b/rse/plugins/org.eclipse.rse.services.local/src/org/eclipse/rse/services/local/files/LocalHostFile.java index 17cb1232d42..c22f1c7bfef 100644 --- a/rse/plugins/org.eclipse.rse.services.local/src/org/eclipse/rse/services/local/files/LocalHostFile.java +++ b/rse/plugins/org.eclipse.rse.services.local/src/org/eclipse/rse/services/local/files/LocalHostFile.java @@ -117,4 +117,12 @@ public class LocalHostFile implements IHostFile return _isArchive; } + public boolean canRead() { + return _file.canRead(); + } + + public boolean canWrite() { + return _file.canWrite(); + } + } \ No newline at end of file diff --git a/rse/plugins/org.eclipse.rse.services.ssh/src/org/eclipse/rse/services/ssh/files/SftpHostFile.java b/rse/plugins/org.eclipse.rse.services.ssh/src/org/eclipse/rse/services/ssh/files/SftpHostFile.java index 4fb07c270e6..a4d4fce380d 100644 --- a/rse/plugins/org.eclipse.rse.services.ssh/src/org/eclipse/rse/services/ssh/files/SftpHostFile.java +++ b/rse/plugins/org.eclipse.rse.services.ssh/src/org/eclipse/rse/services/ssh/files/SftpHostFile.java @@ -180,4 +180,14 @@ public class SftpHostFile implements IHostFile { } return result; } + + //TODO implement this + public boolean canRead() { + return true; + } + + //TODO implement this + public boolean canWrite() { + return true; + } } diff --git a/rse/plugins/org.eclipse.rse.services/clientserver/org/eclipse/rse/services/clientserver/messages/ISystemMessageProvider.java b/rse/plugins/org.eclipse.rse.services/clientserver/org/eclipse/rse/services/clientserver/messages/ISystemMessageProvider.java new file mode 100644 index 00000000000..34df9341475 --- /dev/null +++ b/rse/plugins/org.eclipse.rse.services/clientserver/org/eclipse/rse/services/clientserver/messages/ISystemMessageProvider.java @@ -0,0 +1,5 @@ +package org.eclipse.rse.services.clientserver.messages; + +public interface ISystemMessageProvider { + public SystemMessage getMessage(String id); +} diff --git a/rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/services/files/IHostFile.java b/rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/services/files/IHostFile.java index a596ae3bd45..7ea8f35f094 100644 --- a/rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/services/files/IHostFile.java +++ b/rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/services/files/IHostFile.java @@ -26,6 +26,8 @@ public interface IHostFile public boolean isDirectory(); public boolean isRoot(); public boolean isFile(); + public boolean canWrite(); + public boolean canRead(); public boolean exists(); public boolean isArchive(); diff --git a/rse/plugins/org.eclipse.rse.subsystems.files.core/src/org/eclipse/rse/subsystems/files/core/servicesubsystem/AbstractRemoteFile.java b/rse/plugins/org.eclipse.rse.subsystems.files.core/src/org/eclipse/rse/subsystems/files/core/servicesubsystem/AbstractRemoteFile.java index 1d7aa3529a7..b7bfb8299df 100644 --- a/rse/plugins/org.eclipse.rse.subsystems.files.core/src/org/eclipse/rse/subsystems/files/core/servicesubsystem/AbstractRemoteFile.java +++ b/rse/plugins/org.eclipse.rse.subsystems.files.core/src/org/eclipse/rse/subsystems/files/core/servicesubsystem/AbstractRemoteFile.java @@ -167,8 +167,7 @@ public abstract class AbstractRemoteFile extends RemoteFile implements IRemoteFi public boolean isHidden() { - // TODO Auto-generated method stub - return false; + return _hostFile.isHidden(); } public boolean isVirtual() @@ -179,14 +178,12 @@ public abstract class AbstractRemoteFile extends RemoteFile implements IRemoteFi public boolean canRead() { - // TODO Auto-generated method stub - return true; + return _hostFile.canRead(); } public boolean canWrite() { - // TODO Auto-generated method stub - return true; + return _hostFile.canWrite(); } public boolean showReadOnlyProperty() diff --git a/rse/plugins/org.eclipse.rse.subsystems.files.core/src/org/eclipse/rse/subsystems/files/core/servicesubsystem/FileServiceSubSystem.java b/rse/plugins/org.eclipse.rse.subsystems.files.core/src/org/eclipse/rse/subsystems/files/core/servicesubsystem/FileServiceSubSystem.java index fd840740c11..fd4d3157b14 100644 --- a/rse/plugins/org.eclipse.rse.subsystems.files.core/src/org/eclipse/rse/subsystems/files/core/servicesubsystem/FileServiceSubSystem.java +++ b/rse/plugins/org.eclipse.rse.subsystems.files.core/src/org/eclipse/rse/subsystems/files/core/servicesubsystem/FileServiceSubSystem.java @@ -32,6 +32,7 @@ import org.eclipse.rse.services.clientserver.SystemEncodingUtil; import org.eclipse.rse.services.clientserver.SystemSearchString; import org.eclipse.rse.services.clientserver.archiveutils.AbsoluteVirtualPath; import org.eclipse.rse.services.clientserver.archiveutils.ArchiveHandlerManager; +import org.eclipse.rse.services.clientserver.messages.SystemMessage; import org.eclipse.rse.services.clientserver.messages.SystemMessageException; import org.eclipse.rse.services.files.IFileService; import org.eclipse.rse.services.files.IHostFile; @@ -46,6 +47,9 @@ import org.eclipse.rse.subsystems.files.core.subsystems.IHostFileToRemoteFileAda import org.eclipse.rse.subsystems.files.core.subsystems.IRemoteFile; import org.eclipse.rse.subsystems.files.core.subsystems.IRemoteFileContext; import org.eclipse.rse.subsystems.files.core.subsystems.RemoteFileSubSystem; +import org.eclipse.rse.ui.RSEUIPlugin; +import org.eclipse.rse.ui.messages.SystemMessageDialog; +import org.eclipse.swt.widgets.Display; @@ -58,6 +62,21 @@ public final class FileServiceSubSystem extends RemoteFileSubSystem implements I protected IHostFileToRemoteFileAdapter _hostFileToRemoteFileAdapter; protected IRemoteFile _userHome; + + public class SystemMessageDialogRunnable implements Runnable + { + private SystemMessageDialog _dlg; + public SystemMessageDialogRunnable(SystemMessageDialog dlg) + { + _dlg = dlg; + } + + public void run() + { + _dlg.open(); + } + } + public FileServiceSubSystem(IHost host, IConnectorService connectorService, IFileService hostFileService, IHostFileToRemoteFileAdapter fileAdapter, ISearchService searchService) { super(host, connectorService); @@ -417,7 +436,8 @@ public final class FileServiceSubSystem extends RemoteFileSubSystem implements I } catch (SystemMessageException e) { - // FIXME: Display message + SystemMessageDialog dlg = new SystemMessageDialog(getShell(), e.getSystemMessage()); + dlg.open(); } } @@ -468,7 +488,8 @@ public final class FileServiceSubSystem extends RemoteFileSubSystem implements I } catch (SystemMessageException e) { - + SystemMessageDialog dlg = new SystemMessageDialog(getShell(), e.getSystemMessage()); + dlg.open(); } } } @@ -487,13 +508,23 @@ public final class FileServiceSubSystem extends RemoteFileSubSystem implements I String remoteFileName = destination.getName(); String hostEncoding = getRemoteEncoding(); // default host encoding boolean isBinary = isBinary(encoding, hostEncoding, destination.getAbsolutePath()); + + if (!destination.canWrite()) + { + SystemMessage msg = RSEUIPlugin.getPluginMessage("RSEF5003").makeSubstitution(remoteFileName, getHostName()); + SystemMessageDialog dlg = new SystemMessageDialog(getShell(), msg); + dlg.open(); + return; + } + try { getFileService().upload(monitor, new File(source), remoteParentPath, remoteFileName, isBinary, encoding, hostEncoding); } catch (SystemMessageException e) { - + SystemMessageDialog dlg = new SystemMessageDialog(getShell(), e.getSystemMessage()); + dlg.open(); } } @@ -509,7 +540,8 @@ public final class FileServiceSubSystem extends RemoteFileSubSystem implements I } catch (SystemMessageException e) { - + SystemMessageDialog dlg = new SystemMessageDialog(getShell(), e.getSystemMessage()); + dlg.open(); } } @@ -524,7 +556,9 @@ public final class FileServiceSubSystem extends RemoteFileSubSystem implements I } catch (SystemMessageException e) { - + Display dis = Display.getDefault(); + SystemMessageDialog dlg = new SystemMessageDialog(getShell(), e.getSystemMessage()); + dis.syncExec(new SystemMessageDialogRunnable(dlg)); } return false; } @@ -546,7 +580,9 @@ public final class FileServiceSubSystem extends RemoteFileSubSystem implements I } catch (SystemMessageException e) { - + Display dis = Display.getDefault(); + SystemMessageDialog dlg = new SystemMessageDialog(getShell(), e.getSystemMessage()); + dis.syncExec(new SystemMessageDialogRunnable(dlg)); } return false; } @@ -576,7 +612,9 @@ public final class FileServiceSubSystem extends RemoteFileSubSystem implements I } catch (SystemMessageException e) { - + SystemMessageDialog dlg = new SystemMessageDialog(getShell(), e.getSystemMessage()); + dlg.open(); + return null; } return getHostFileToRemoteFileAdapter().convertToRemoteFile(this, getDefaultContext(), fileToCreate.getParentRemoteFile(), newFile); } @@ -593,7 +631,9 @@ public final class FileServiceSubSystem extends RemoteFileSubSystem implements I } catch (SystemMessageException e) { - + SystemMessageDialog dlg = new SystemMessageDialog(getShell(), e.getSystemMessage()); + dlg.open(); + return null; } return getHostFileToRemoteFileAdapter().convertToRemoteFile(this, getDefaultContext(), folderToCreate.getParentRemoteFile(), newFolder); } @@ -616,6 +656,8 @@ public final class FileServiceSubSystem extends RemoteFileSubSystem implements I } catch (SystemMessageException e) { + SystemMessageDialog dlg = new SystemMessageDialog(getShell(), e.getSystemMessage()); + dlg.open(); return false; } return result; @@ -639,6 +681,8 @@ public final class FileServiceSubSystem extends RemoteFileSubSystem implements I } catch (SystemMessageException e) { + SystemMessageDialog dlg = new SystemMessageDialog(getShell(), e.getSystemMessage()); + dlg.open(); return false; } return result; @@ -659,7 +703,9 @@ public final class FileServiceSubSystem extends RemoteFileSubSystem implements I } catch (SystemMessageException e) { - + SystemMessageDialog dlg = new SystemMessageDialog(getShell(), e.getSystemMessage()); + dlg.open(); + return false; } return result; } @@ -679,7 +725,9 @@ public final class FileServiceSubSystem extends RemoteFileSubSystem implements I } catch (SystemMessageException e) { - + SystemMessageDialog dlg = new SystemMessageDialog(getShell(), e.getSystemMessage()); + dlg.open(); + return false; } return result; } diff --git a/rse/plugins/org.eclipse.rse.subsystems.files.dstore/src/org/eclipse/rse/subsystems/files/dstore/subsystem/DStoreFileSubSystemConfiguration.java b/rse/plugins/org.eclipse.rse.subsystems.files.dstore/src/org/eclipse/rse/subsystems/files/dstore/subsystem/DStoreFileSubSystemConfiguration.java index 3b508df3dd9..538a2842ae8 100644 --- a/rse/plugins/org.eclipse.rse.subsystems.files.dstore/src/org/eclipse/rse/subsystems/files/dstore/subsystem/DStoreFileSubSystemConfiguration.java +++ b/rse/plugins/org.eclipse.rse.subsystems.files.dstore/src/org/eclipse/rse/subsystems/files/dstore/subsystem/DStoreFileSubSystemConfiguration.java @@ -36,6 +36,7 @@ import org.eclipse.rse.subsystems.files.core.servicesubsystem.FileServiceSubSyst import org.eclipse.rse.subsystems.files.core.subsystems.IHostFileToRemoteFileAdapter; import org.eclipse.rse.subsystems.files.core.subsystems.IRemoteFileSubSystem; import org.eclipse.rse.subsystems.files.dstore.model.DStoreFileAdapter; +import org.eclipse.rse.ui.RSEUIPlugin; /** @@ -127,13 +128,13 @@ public class DStoreFileSubSystemConfiguration extends FileServiceSubSystemConfig public IFileService createFileService(IHost host) { DStoreConnectorService connectorService = (DStoreConnectorService)getConnectorService(host); - return new DStoreFileService(connectorService, SystemFileTransferModeRegistry.getDefault()); + return new DStoreFileService(connectorService, SystemFileTransferModeRegistry.getDefault(), RSEUIPlugin.getDefault()); } public ISearchService createSearchService(IHost host) { DStoreConnectorService connectorService = (DStoreConnectorService)getConnectorService(host); - return new DStoreSearchService(connectorService); + return new DStoreSearchService(connectorService, RSEUIPlugin.getDefault()); } public IHostFileToRemoteFileAdapter getHostFileAdapter() diff --git a/rse/plugins/org.eclipse.rse.subsystems.shells.dstore/src/org/eclipse/rse/subsystems/shells/dstore/DStoreShellSubSystemConfiguration.java b/rse/plugins/org.eclipse.rse.subsystems.shells.dstore/src/org/eclipse/rse/subsystems/shells/dstore/DStoreShellSubSystemConfiguration.java index 00725a19085..37c55f542af 100644 --- a/rse/plugins/org.eclipse.rse.subsystems.shells.dstore/src/org/eclipse/rse/subsystems/shells/dstore/DStoreShellSubSystemConfiguration.java +++ b/rse/plugins/org.eclipse.rse.subsystems.shells.dstore/src/org/eclipse/rse/subsystems/shells/dstore/DStoreShellSubSystemConfiguration.java @@ -32,6 +32,7 @@ import org.eclipse.rse.subsystems.shells.core.subsystems.servicesubsystem.IServi import org.eclipse.rse.subsystems.shells.core.subsystems.servicesubsystem.ShellServiceSubSystem; import org.eclipse.rse.subsystems.shells.core.subsystems.servicesubsystem.ShellServiceSubSystemConfiguration; import org.eclipse.rse.subsystems.shells.dstore.model.DStoreServiceCommandShell; +import org.eclipse.rse.ui.RSEUIPlugin; /** * Provides a factory for generating instances of the class @@ -63,7 +64,7 @@ public class DStoreShellSubSystemConfiguration extends ShellServiceSubSystemConf public ISubSystem createSubSystemInternal(IHost host) { DStoreConnectorService connectorService = (DStoreConnectorService)getConnectorService(host); - ISubSystem subsys = new ShellServiceSubSystem(host, connectorService, new DStoreShellService(connectorService)); + ISubSystem subsys = new ShellServiceSubSystem(host, connectorService, new DStoreShellService(connectorService, RSEUIPlugin.getDefault())); return subsys; } @@ -87,7 +88,7 @@ public class DStoreShellSubSystemConfiguration extends ShellServiceSubSystemConf public IShellService createShellService(IHost host) { - return new DStoreShellService((IDataStoreProvider)getConnectorService(host)); + return new DStoreShellService((IDataStoreProvider)getConnectorService(host), RSEUIPlugin.getDefault()); } public boolean supportsCommands() diff --git a/rse/plugins/org.eclipse.rse.subsystems.shells.local/src/org/eclipse/rse/subsystems/shells/local/model/LocalServiceCommandShell.java b/rse/plugins/org.eclipse.rse.subsystems.shells.local/src/org/eclipse/rse/subsystems/shells/local/model/LocalServiceCommandShell.java index 560ce0ac375..403fd77f16e 100644 --- a/rse/plugins/org.eclipse.rse.subsystems.shells.local/src/org/eclipse/rse/subsystems/shells/local/model/LocalServiceCommandShell.java +++ b/rse/plugins/org.eclipse.rse.subsystems.shells.local/src/org/eclipse/rse/subsystems/shells/local/model/LocalServiceCommandShell.java @@ -82,7 +82,7 @@ public class LocalServiceCommandShell extends ServiceCommandShell } else { - System.out.println("parsedMsg = null"); + //System.out.println("parsedMsg = null"); } if (event.isError()) { @@ -131,4 +131,4 @@ public class LocalServiceCommandShell extends ServiceCommandShell } -} +} \ No newline at end of file diff --git a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/RSEUIPlugin.java b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/RSEUIPlugin.java index 04c254b6763..36b2303e636 100644 --- a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/RSEUIPlugin.java +++ b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/RSEUIPlugin.java @@ -49,6 +49,7 @@ import org.eclipse.rse.model.SystemResourceChangeEvent; import org.eclipse.rse.model.SystemStartHere; import org.eclipse.rse.persistence.IRSEPersistenceManager; import org.eclipse.rse.services.clientserver.archiveutils.ArchiveHandlerManager; +import org.eclipse.rse.services.clientserver.messages.ISystemMessageProvider; import org.eclipse.rse.services.clientserver.messages.SystemMessage; import org.eclipse.rse.services.clientserver.messages.SystemMessageFile; import org.eclipse.rse.ui.actions.ISystemDynamicPopupMenuExtension; @@ -68,7 +69,7 @@ import org.osgi.framework.BundleContext; /** * Plugin for the core remote systems support. */ -public class RSEUIPlugin extends SystemBasePlugin +public class RSEUIPlugin extends SystemBasePlugin implements ISystemMessageProvider { public static final String PLUGIN_ID = "org.eclipse.rse.ui"; public static final String HELPPREFIX = "org.eclipse.rse.ui."; @@ -1354,6 +1355,12 @@ public class RSEUIPlugin extends SystemBasePlugin { return messageFile; } + + public SystemMessage getMessage(String msgId) + { + return getPluginMessage(msgId); + } + /** * Retrieve a message from this plugin's message file * @param msgId - the ID of the message to retrieve. This is the concatenation of the diff --git a/rse/plugins/org.eclipse.rse.ui/systemmessages.xml b/rse/plugins/org.eclipse.rse.ui/systemmessages.xml index b0bb45ded7f..b7cc3300973 100644 --- a/rse/plugins/org.eclipse.rse.ui/systemmessages.xml +++ b/rse/plugins/org.eclipse.rse.ui/systemmessages.xml @@ -1020,8 +1020,8 @@ Contributors: You do not have write permission to the file %1 on %2. You can open the file in browse (read-only) mode. If you want to edit the file, change file permissions to allow write access to the file. - File %1 can not be saved on %2. You do not have read access to the file. - Change file permissions to ensure you have read access to the file. + File %1 can not be saved on %2. You do not have write access to the file. + Change file permissions to ensure you have write access to the file. File %1 can not be saved on %2. You do not have write access to the file.