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.