Skip to main content

This CGIT instance is deprecated, and repositories have been moved to Gitlab or Github. See the repository descriptions for specific locations.

summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'rse/plugins/org.eclipse.rse.services.dstore/src/org/eclipse/rse/services/dstore/files/DStoreFileService.java')
-rw-r--r--rse/plugins/org.eclipse.rse.services.dstore/src/org/eclipse/rse/services/dstore/files/DStoreFileService.java1232
1 files changed, 0 insertions, 1232 deletions
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
deleted file mode 100644
index 183cd73d6..000000000
--- a/rse/plugins/org.eclipse.rse.services.dstore/src/org/eclipse/rse/services/dstore/files/DStoreFileService.java
+++ /dev/null
@@ -1,1232 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2006 IBM Corporation. All rights reserved.
- * This program and the accompanying materials are made available under the terms
- * of the Eclipse Public License v1.0 which accompanies this distribution, and is
- * available at http://www.eclipse.org/legal/epl-v10.html
- *
- * Initial Contributors:
- * The following IBM employees contributed to the Remote System Explorer
- * component that contains this file: David McKnight, Kushal Munir,
- * Michael Berger, David Dykstal, Phil Coulthard, Don Yantzi, Eric Simpson,
- * Emily Bruner, Mazen Faraj, Adrian Storisteanu, Li Ding, and Kent Hawley.
- *
- * Contributors:
- * {Name} (company) - description of contribution.
- ********************************************************************************/
-
-package org.eclipse.rse.services.dstore.files;
-
-import java.io.BufferedInputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStream;
-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;
-import org.eclipse.dstore.core.model.DE;
-import org.eclipse.dstore.core.model.DataElement;
-import org.eclipse.dstore.core.model.DataStore;
-import org.eclipse.dstore.core.model.DataStoreAttributes;
-import org.eclipse.dstore.core.model.DataStoreResources;
-import org.eclipse.dstore.core.model.IDataStoreProvider;
-import org.eclipse.rse.dstore.universal.miners.IUniversalDataStoreConstants;
-import org.eclipse.rse.dstore.universal.miners.filesystem.UniversalByteStreamHandler;
-import org.eclipse.rse.dstore.universal.miners.filesystem.UniversalFileSystemMiner;
-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;
-import org.eclipse.rse.services.dstore.ServiceResources;
-import org.eclipse.rse.services.dstore.util.DownloadListener;
-import org.eclipse.rse.services.dstore.util.FileSystemMessageUtil;
-import org.eclipse.rse.services.files.IFileService;
-import org.eclipse.rse.services.files.IHostFile;
-
-public class DStoreFileService extends AbstractDStoreService implements IFileService, IUniversalDataStoreConstants
-{
-
- protected org.eclipse.dstore.core.model.DataElement _uploadLogElement = null;
- protected Map _fileElementMap;
- private int _bufferUploadSize = IUniversalDataStoreConstants.BUFFER_SIZE;
- private int _bufferDownloadSize = IUniversalDataStoreConstants.BUFFER_SIZE;
- protected ISystemFileTypes _fileTypeRegistry;
-
- private static String _percentMsg = SystemMessage.sub(SystemMessage.sub(SystemMessage.sub(ServiceResources.DStore_Service_Percent_Complete_Message, "&0", "{0}"), "&1", "{1}"), "&2", "{2}"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$
-
- private static String[] _filterAttributes = {
- "attributes", //$NON-NLS-1$
- "filter", //$NON-NLS-1$
- "filter.id", //$NON-NLS-1$
- "doc", //$NON-NLS-1$
- "", //$NON-NLS-1$
- "", //$NON-NLS-1$
- DataStoreResources.FALSE,
- "2"}; //$NON-NLS-1$
-
- public DStoreFileService(IDataStoreProvider dataStoreProvider, ISystemFileTypes fileTypeRegistry, ISystemMessageProvider msgProvider)
- {
- super(dataStoreProvider, msgProvider);
- _fileElementMap = new HashMap();
- _fileTypeRegistry = fileTypeRegistry;
- }
-
- public void uninitService(IProgressMonitor monitor)
- {
- super.uninitService(monitor);
- _fileElementMap.clear();
- }
-
- public String getName()
- {
- return ServiceResources.DStore_File_Service_Label;
- }
-
- public String getDescription()
- {
- return ServiceResources.DStore_File_Service_Description;
- }
-
- public void setBufferUploadSize(int size)
- {
- _bufferUploadSize = size;
- }
-
- public void setBufferDownloadSize(int size)
- {
- _bufferDownloadSize = size;
- }
-
- protected int getBufferUploadSize()
- {
- return _bufferUploadSize;
- }
-
- protected int getBufferDownloadSize()
- {
- return _bufferDownloadSize;
- }
-
- protected String getMinerId()
- {
- return UniversalFileSystemMiner.MINER_ID;
- }
-
- protected String getByteStreamHandlerId()
- {
- return UniversalByteStreamHandler.class.getName();
- }
-
- protected String getDataStoreRoot()
- {
- return getDataStore().getAttribute(DataStoreAttributes.A_LOCAL_PATH);
- }
-
-
- protected String prepareForDownload(String localPath)
- {
- int index = localPath.lastIndexOf(File.separator);
- String parentDir = localPath.substring(0, index + 1);
-
- // change local root for datastore so that the file is downloaded
- // at the specified location
- setDataStoreRoot(parentDir);
-
- String dataStoreLocalPath = localPath.substring(index + 1);
-
- if (!dataStoreLocalPath.startsWith("/")) //$NON-NLS-1$
- dataStoreLocalPath = "/" + dataStoreLocalPath; //$NON-NLS-1$
-
- return dataStoreLocalPath;
- }
-
- protected void setDataStoreRoot(String root)
- {
- getDataStore().setAttribute(DataStoreAttributes.A_LOCAL_PATH, root);
- }
-
- protected DataElement findUploadLog()
- {
- DataElement minerInfo = getMinerElement();
- if (_uploadLogElement == null || _uploadLogElement.getDataStore() != getDataStore())
- {
- _uploadLogElement = getDataStore().find(minerInfo, DE.A_NAME, "universal.uploadlog", 2); //$NON-NLS-1$
- }
- return _uploadLogElement;
- }
-
- protected DataElement getAttributes(String fileNameFilter, boolean showHidden)
- {
- DataElement attributes = getDataStore().createTransientObject(_filterAttributes);
- String version = VERSION_1;
- StringBuffer buffer = new StringBuffer();
- String filter = ((fileNameFilter == null) ? "*" : fileNameFilter); //$NON-NLS-1$
- buffer.append(version).append(TOKEN_SEPARATOR).append(filter).append(TOKEN_SEPARATOR).append(showHidden);
- attributes.setAttribute(DE.A_SOURCE, buffer.toString());
- return attributes;
- }
-
-
-
- public boolean upload(IProgressMonitor monitor, InputStream inputStream, String remoteParent, String remoteFile,
- boolean isBinary, String hostEncoding)
- {
- BufferedInputStream bufInputStream = null;
-
-
- boolean isCancelled = false;
-
-
-
- try
- {
-
-// DataElement uploadLog = findUploadLog();
- findUploadLog();
-// listener = new FileTransferStatusListener(remotePath, shell, monitor, getConnectorService(), ds, uploadLog);
- // ds.getDomainNotifier().addDomainListener(listener);
-
- int buffer_size = getBufferUploadSize();
-
- // read in the file
- bufInputStream = new BufferedInputStream(inputStream, buffer_size);
-
- boolean first = true;
- byte[] buffer = new byte[buffer_size];
- byte[] convBytes;
- int numToRead = 0;
-
- int available = bufInputStream.available();
-
- long totalSent = 0;
-
- // upload bytes while available
- while (available > 0 && !isCancelled)
- {
-
-
- numToRead = (available < buffer_size) ? available : buffer_size;
-
- int bytesRead = bufInputStream.read(buffer, 0, numToRead);
-
- if (bytesRead == -1)
- break;
-
- totalSent += bytesRead;
-
- String byteStreamHandlerId = getByteStreamHandlerId();
- String remotePath = remoteParent + getSeparator(remoteParent) + remoteFile;
-
- if (!isBinary && hostEncoding != null)
- {
- String tempStr = new String(buffer, 0, bytesRead);
-
- // hack for zOS - \r causes problems for compilers
-// if (osName != null && (osName.startsWith("z") || osName.equalsIgnoreCase("aix")))
-// {
-// tempStr = tempStr.replace('\r', ' ');
-// }
-
- convBytes = tempStr.getBytes(hostEncoding);
-
- if (first)
- { // send first set of bytes
- first = false;
- getDataStore().replaceFile(remotePath, convBytes, convBytes.length, true, byteStreamHandlerId);
- }
- else
- { // append subsequent segments
- getDataStore().replaceAppendFile(remotePath, convBytes, convBytes.length, true, byteStreamHandlerId);
- }
- }
- else // binary
- {
- if (first)
- { // send first set of bytes
- first = false;
- getDataStore().replaceFile(remotePath, buffer, bytesRead, true, byteStreamHandlerId);
- }
- else
- { // append subsequent segments
- getDataStore().replaceAppendFile(remotePath, buffer, bytesRead, true, byteStreamHandlerId);
- }
- }
-
-
- if (monitor != null)
- {
-
- isCancelled = monitor.isCanceled();
-
- }
-
- available = bufInputStream.available();
- }
-// if (listener.uploadHasFailed())
-// {
-// showUploadFailedMessage(listener, source);
-// }
-// else
- {
- // transferSuccessful = true;
- }
- }
-
- catch (FileNotFoundException e)
- {
-// UniversalSystemPlugin.logError(CLASSNAME + "." + "copy: " + "error writing file " + remotePath, e);
-// throw new RemoteFileIOException(e);
- return false;
- }
- catch (UnsupportedEncodingException e)
- {
-// UniversalSystemPlugin.logError(CLASSNAME + "." + "copy: " + "error writing file " + remotePath, e);
-// throw new RemoteFileIOException(e);
- return false;
- }
- catch (IOException e)
- {
-// UniversalSystemPlugin.logError(CLASSNAME + "." + "copy: " + "error writing file " + remotePath, e);
-// throw new RemoteFileIOException(e);
- return false;
- }
- catch (Exception e)
- {
-// UniversalSystemPlugin.logError(CLASSNAME + "." + "copy: " + "error writing file " + remotePath, e);
-// throw new RemoteFileIOException(e);
- return false;
- }
- finally
- {
-
- try
- {
-
- if (bufInputStream != null)
- bufInputStream.close();
-
- if (isCancelled)
- {
- return false;
- //throw new RemoteFileCancelledException();
- }
- }
- catch (IOException e)
- {
-// UniversalSystemPlugin.logError(CLASSNAME + "." + "copy: " + "error writing file " + remotePath, e);
-// throw new RemoteFileIOException(e);
- return false;
- }
-
- }
-
- return true;
- }
-
- public boolean upload(IProgressMonitor monitor, File file, String remoteParent, String remoteFile,
- boolean isBinary, String srcEncoding, String hostEncoding)
- {
- FileInputStream inputStream = null;
- BufferedInputStream bufInputStream = null;
-
-
- boolean isCancelled = false;
- boolean transferSuccessful = false;
-
- long totalBytes = file.length();
-
- try
- {
- // if the file is empty, create new empty file on host
- if (totalBytes == 0)
- {
- IHostFile created = createFile(monitor, remoteParent, remoteFile);
- return created.exists();
- }
-
- if (monitor != null)
- {
- monitor.setTaskName(file.getName());
- //subMonitor = new SubProgressMonitor(monitor, (int)totalBytes);
- }
-
-
-// DataElement uploadLog = findUploadLog();
- findUploadLog();
-// listener = new FileTransferStatusListener(remotePath, shell, monitor, getConnectorService(), ds, uploadLog);
- // ds.getDomainNotifier().addDomainListener(listener);
-
- int buffer_size = getBufferUploadSize();
-
- // read in the file
- inputStream = new FileInputStream(file);
- bufInputStream = new BufferedInputStream(inputStream, buffer_size);
-
- boolean first = true;
- byte[] buffer = new byte[buffer_size];
- byte[] convBytes;
- int numToRead = 0;
-
- int available = bufInputStream.available();
-
- long totalSent = 0;
-
- // upload bytes while available
- while (available > 0 && !isCancelled)
- {
-
- numToRead = (available < buffer_size) ? available : buffer_size;
-
- int bytesRead = bufInputStream.read(buffer, 0, numToRead);
-
- if (bytesRead == -1)
- break;
-
- totalSent += bytesRead;
-
- String byteStreamHandlerId = getByteStreamHandlerId();
- String remotePath = remoteParent + getSeparator(remoteParent) + remoteFile;
-
- if (!isBinary && srcEncoding != null && hostEncoding != null)
- {
- String tempStr = new String(buffer, 0, bytesRead, srcEncoding);
-
- // hack for zOS - \r causes problems for compilers
-// if (osName != null && (osName.startsWith("z") || osName.equalsIgnoreCase("aix")))
-// {
-// tempStr = tempStr.replace('\r', ' ');
-// }
-
- convBytes = tempStr.getBytes(hostEncoding);
-
- if (first)
- { // send first set of bytes
- first = false;
- getDataStore().replaceFile(remotePath, convBytes, convBytes.length, true, byteStreamHandlerId);
- }
- else
- { // append subsequent segments
- getDataStore().replaceAppendFile(remotePath, convBytes, convBytes.length, true, byteStreamHandlerId);
- }
- }
- else // binary
- {
- if (first)
- { // send first set of bytes
- first = false;
- getDataStore().replaceFile(remotePath, buffer, bytesRead, true, byteStreamHandlerId);
- }
- else
- { // append subsequent segments
- getDataStore().replaceAppendFile(remotePath, buffer, bytesRead, true, byteStreamHandlerId);
- }
- }
-
-
- if (/*display != null &&*/ monitor != null)
- {
- long percent = (totalSent * 100) / totalBytes;
-
-
- StringBuffer totalSentBuf = new StringBuffer();
- totalSentBuf.append((totalSent / KB_IN_BYTES));
- totalSentBuf.append(" KB"); //$NON-NLS-1$
-
- StringBuffer totalBuf = new StringBuffer();
- totalBuf.append(totalBytes / KB_IN_BYTES);
- totalBuf.append(" KB"); //$NON-NLS-1$
-
- StringBuffer percentBuf = new StringBuffer();
- percentBuf.append(percent);
- percentBuf.append("%"); //$NON-NLS-1$
-
- monitor.worked(bytesRead);
-
- String str = MessageFormat.format(_percentMsg, new Object[] {totalSentBuf, totalBuf, percentBuf});
- monitor.subTask(str);
-
-
-
-
- isCancelled = monitor.isCanceled();
- }
-
- available = bufInputStream.available();
- }
- // if (listener.uploadHasFailed())
- // {
- // showUploadFailedMessage(listener, source);
- // }
- // else
- {
- transferSuccessful = true;
- }
- }
-
- catch (FileNotFoundException e)
- {
-// UniversalSystemPlugin.logError(CLASSNAME + "." + "copy: " + "error writing file " + remotePath, e);
-// throw new RemoteFileIOException(e);
- return false;
- }
- catch (UnsupportedEncodingException e)
- {
-// UniversalSystemPlugin.logError(CLASSNAME + "." + "copy: " + "error writing file " + remotePath, e);
-// throw new RemoteFileIOException(e);
- return false;
- }
- catch (IOException e)
- {
-// UniversalSystemPlugin.logError(CLASSNAME + "." + "copy: " + "error writing file " + remotePath, e);
-// throw new RemoteFileIOException(e);
- return false;
- }
- catch (Exception e)
- {
-// UniversalSystemPlugin.logError(CLASSNAME + "." + "copy: " + "error writing file " + remotePath, e);
-// throw new RemoteFileIOException(e);
- return false;
- }
- finally
- {
-
- try
- {
-
- if (bufInputStream != null)
- bufInputStream.close();
-
- if (isCancelled)
- {
- return false;
- //throw new RemoteFileCancelledException();
- }
- }
- catch (IOException e)
- {
-// UniversalSystemPlugin.logError(CLASSNAME + "." + "copy: " + "error writing file " + remotePath, e);
-// throw new RemoteFileIOException(e);
- return false;
- }
-
- if (totalBytes > 0)
- {
- if (transferSuccessful)
- {
-
-
-// try
-// {
-// listener.waitForUpdate(null, 2);
-//
-// }
-// catch (InterruptedException e)
-// {
-// UniversalSystemPlugin.logError(CLASSNAME + " InterruptedException while waiting for command", e);
-// }
-
- }
-
- //ds.getDomainNotifier().removeDomainListener(listener);
-
-// if (listener.uploadHasFailed())
-// {
-// showUploadFailedMessage(listener, source);
-// }
- }
- }
-
- return true;
- }
-
-
- public boolean download(IProgressMonitor monitor, String remoteParent, String remoteFile, File localFile,
- boolean isBinary, String encoding) throws SystemMessageException
- {
- DataElement universaltemp = getMinerElement();
-
- if (!localFile.exists())
- {
- File parentDir = localFile.getParentFile();
- parentDir.mkdirs();
- }
-
- try
- {
- if (localFile.exists())
- localFile.delete();
- localFile.createNewFile();
- }
- catch (IOException e)
- {
-// UniversalSystemPlugin.logError(CLASSNAME + "." + "copy: " + "error creating local file " + destination, e);
-// throw new RemoteFileIOException(e);
- return false;
- }
-
- int mode;
-
- if (isBinary)
- {
- mode = BINARY_MODE;
- }
- else
- {
- mode = TEXT_MODE;
- }
-
- DataStore ds = getDataStore();
- String remotePath = remoteParent + getSeparator(remoteParent) + remoteFile;
-
- DataElement de = getElementFor(remotePath);
- if (de.getType().equals(IUniversalDataStoreConstants.UNIVERSAL_FILTER_DESCRIPTOR))
- {
- // need to refetch
- DStoreHostFile hostFile = (DStoreHostFile)getFile(monitor, remoteParent, remoteFile);
- de = hostFile._element;
- }
- long fileLength = DStoreHostFile.getFileLength(de.getSource());
- if (monitor != null)
- {
- monitor.beginTask(remotePath, (int)fileLength);
- }
-
-
- DataElement remoteElement = ds.createObject(universaltemp, de.getType(), remotePath, String.valueOf(mode));
-
-// String tempRoot = getDataStoreRoot();
- getDataStoreRoot();
-
- DataElement localElement = ds.createObject(universaltemp, de.getType(), localFile.getAbsolutePath(), encoding);
-
- DataElement bufferSizeElement = ds.createObject(universaltemp, "buffer_size", "" + getBufferDownloadSize(), ""); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- DataElement queryCmd = getCommandDescriptor(de,C_DOWNLOAD_FILE);
-
- ArrayList argList = new ArrayList();
- argList.add(remoteElement);
- argList.add(localElement);
- argList.add(bufferSizeElement);
-
- DataElement subject = ds.createObject(universaltemp, de.getType(), remotePath, String.valueOf(mode));
-
- DataElement status = ds.command(queryCmd, argList, subject);
- if (status == null)
- {
- System.out.println("no download descriptor for "+remoteElement); //$NON-NLS-1$
- }
- try
- {
- DownloadListener dlistener = new DownloadListener(monitor, status, localFile, remotePath, fileLength);
- try
- {
- dlistener.waitForUpdate();
- }
- catch (InterruptedException e)
- {
- e.printStackTrace();
- }
-
- //getStatusMonitor(ds).waitForUpdate(status, monitor);
- }
- catch (Exception e)
- {
- return false;
- }
-
- // now wait till we have all the bytes local
- long localBytes = localFile.length();
- long lastLocalBytes = 0;
- while (localBytes < fileLength && (monitor == null || !monitor.isCanceled()) && lastLocalBytes != localBytes)
- {
- try
- {
- lastLocalBytes= localBytes;
- Thread.sleep(100);
- localBytes = localFile.length();
-
- }
- catch (Exception e)
- {
- }
- }
-
- 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); //$NON-NLS-1$
- 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); //$NON-NLS-1$
- 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
-// {
-// dlistener.waitForUpdate();
-// }
-// catch (InterruptedException e)
-// {
-// UniversalSystemPlugin.logError(CLASSNAME + " InterruptedException while waiting for command", e);
-// }
-
-// if (!dlistener.isCancelled())
-// {
-//
-// setDataStoreRoot(tempRoot);
-//
-// ArrayList 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;
-// }
-// else if (resultChild.getType().equals(DOWNLOAD_RESULT_FILE_NOT_FOUND_EXCEPTION))
-// {
-// FileNotFoundException e = new FileNotFoundException(resultChild.getName());
-// UniversalSystemPlugin.logError(CLASSNAME + "." + "copy: " + "error reading file " + remotePath, e);
-// throw new RemoteFileIOException(e);
-// }
-// else if (resultChild.getType().equals(DOWNLOAD_RESULT_UNSUPPORTED_ENCODING_EXCEPTION))
-// {
-// 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))
-// {
-// IOException e = new IOException(resultChild.getName());
-// UniversalSystemPlugin.logError(CLASSNAME + "." + "copy: " + "error reading file " + remotePath, e);
-// throw new RemoteFileIOException(e);
-// }
-// }
-// }
-// else
-// {
-// throw new RemoteFileCancelledException();
-// }
- if (monitor != null)
- {
- //monitor.done();
- }
- return true;
- }
-
- public IHostFile getFile(IProgressMonitor monitor, String remoteParent, String name)
- {
- DataElement de = null;
- if (name.equals(".") && name.equals(remoteParent)) //$NON-NLS-1$
- {
- de = getElementFor(name);
- }
- else
- {
- StringBuffer buf = new StringBuffer(remoteParent);
- buf.append(getSeparator(remoteParent));
- buf.append(name);
- de = getElementFor(buf.toString());
- }
- dsQueryCommand(monitor, de, C_QUERY_GET_REMOTE_OBJECT);
- return new DStoreHostFile(de);
- }
-
- /**
- * Returns what the next part of the path should be, given the current
- * path as parentPath. Returns different separators based on whether the path
- * appears to be a windows, linux, or virtual path.
- * Pass in null to just get the default separator.
- */
- protected String getSeparator(String parentPath)
- {
- if (parentPath == null || parentPath.length() < 2) return "/"; //$NON-NLS-1$
- if (parentPath.endsWith(ArchiveHandlerManager.VIRTUAL_SEPARATOR))
- return ""; //$NON-NLS-1$
- if (parentPath.endsWith(ArchiveHandlerManager.VIRTUAL_CANONICAL_SEPARATOR))
- return "/"; //$NON-NLS-1$
- if (parentPath.charAt(1) == ':') //Windows path
- if (parentPath.indexOf(ArchiveHandlerManager.VIRTUAL_CANONICAL_SEPARATOR) != -1)
- if (parentPath.endsWith("/")) //$NON-NLS-1$
- return ""; //already ends in separator //$NON-NLS-1$
- else return "/"; //$NON-NLS-1$
- else if (ArchiveHandlerManager.getInstance().isArchive(new File(parentPath)))
- return ArchiveHandlerManager.VIRTUAL_SEPARATOR;
- else
- if (parentPath.endsWith("\\")) //$NON-NLS-1$
- return ""; //already ends in separator //$NON-NLS-1$
- else return "\\"; //$NON-NLS-1$
- else if (parentPath.charAt(0) == '/') //UNIX path
- if (ArchiveHandlerManager.getInstance().isArchive(new File(parentPath)))
- return ArchiveHandlerManager.VIRTUAL_SEPARATOR;
- else
- if (parentPath.endsWith("/")) //$NON-NLS-1$
- return ""; //already ends in separator //$NON-NLS-1$
- else return "/"; //$NON-NLS-1$
- else return "/"; //unrecognized path //$NON-NLS-1$
- }
-
- protected IHostFile convertToHostFile(DataElement element)
- {
- String type = element.getType();
- IHostFile file = null;
- if (type.equals(IUniversalDataStoreConstants.UNIVERSAL_VIRTUAL_FILE_DESCRIPTOR) ||
- type.equals(IUniversalDataStoreConstants.UNIVERSAL_VIRTUAL_FOLDER_DESCRIPTOR))
- {
- file = new DStoreVirtualHostFile(element);
- }
- else
- {
- file = new DStoreHostFile(element);
- }
- String path = file.getAbsolutePath();
- _fileElementMap.put(path, element);
- return file;
- }
-
- protected IHostFile[] convertToHostFiles(DataElement[] elements)
- {
- ArrayList results = new ArrayList();
- for (int i = 0; i < elements.length; i++)
- {
- if (!elements[i].isDeleted())
- results.add(convertToHostFile(elements[i]));
- }
- return (IHostFile[]) results.toArray(new IHostFile[results.size()]);
- }
-
- public IHostFile getUserHome()
- {
- return getFile(null, ".","."); //$NON-NLS-1$ //$NON-NLS-2$
- }
-
- public IHostFile createFile(IProgressMonitor monitor, String remoteParent, String fileName) throws SystemMessageException
- {
- String remotePath = remoteParent + getSeparator(remoteParent) + fileName;
- DataElement de = getElementFor(remotePath);
-
-
- 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)); //$NON-NLS-1$
- }
- }
-
- public IHostFile createFolder(IProgressMonitor monitor, String remoteParent, String folderName) throws SystemMessageException
- {
- String remotePath = remoteParent + getSeparator(remoteParent) + folderName;
- DataElement de = getElementFor(remotePath);
-
- 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)); //$NON-NLS-1$
- }
-
- }
-
- public boolean delete(IProgressMonitor monitor, String remoteParent, String fileName) throws SystemMessageException
- {
- String remotePath = remoteParent + getSeparator(remoteParent) + fileName;
- DataElement de = getElementFor(remotePath);
- DataElement status = dsStatusCommand(monitor, de, C_DELETE);
- if (status == null) return false;
- if (de.getType().equals(IUniversalDataStoreConstants.UNIVERSAL_FILE_DESCRIPTOR))
- {
- if (FileSystemMessageUtil.getSourceMessage(status).equals(IServiceConstants.SUCCESS)) return true;
- else throw new SystemMessageException(getMessage("RSEF1300").makeSubstitution(FileSystemMessageUtil.getSourceLocation(status))); //$NON-NLS-1$
- }
- else
- {
- return true;
- }
-
- }
-
- public boolean deleteBatch(IProgressMonitor monitor, String[] remoteParents, String[] fileNames) throws SystemMessageException
- {
- if (remoteParents.length == 1) return delete(monitor, remoteParents[0], fileNames[0]);
-
- ArrayList dataElements = new ArrayList(remoteParents.length);
- for (int i = 0; i < remoteParents.length; i++)
- {
- String remotePath = remoteParents[i] + getSeparator(remoteParents[i]) + fileNames[i];
- DataElement de = getElementFor(remotePath);
- if (de != null) dataElements.add(de);
- }
- DataElement status = dsStatusCommand(monitor, (DataElement) dataElements.get(0), dataElements, C_DELETE_BATCH);
- if (status == null) return false;
- if (FileSystemMessageUtil.getSourceMessage(status).startsWith(IServiceConstants.FAILED))
- throw new SystemMessageException(getMessage("RSEF1300").makeSubstitution(FileSystemMessageUtil.getSourceLocation(status))); //$NON-NLS-1$
- else return true;
- }
-
- 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);
-
- 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))); //$NON-NLS-1$
- }
- }
-
- 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;
- oldFile.renameTo(newPath);
- return retVal;
- }
-
- 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;
-// boolean isVirtual = ArchiveHandlerManager.isVirtual(src) || ArchiveHandlerManager.isVirtual(tgt);
- //if (isVirtual || isArchive)
- {
- if (copy(monitor, srcParent, srcName, tgtParent, tgtName))
- {
- try
- {
- delete(monitor, srcParent, srcName);
- }
- catch (Exception e)
- {
- return false;
- }
- return true;
- }
- return false;
- }
-
-/*
- // handle special characters in source and target strings
- StringBuffer srcBuf = new StringBuffer(src);
- StringBuffer tgtBuf = new StringBuffer(tgt);
-
- for (int i = 0; i < srcBuf.length(); i++)
- {
- char c = srcBuf.charAt(i);
-
- boolean isSpecialChar = isSpecialChar(c);
-
- if (isSpecialChar)
- {
- srcBuf.insert(i, "\\");
- i++;
- }
- }
-
- for (int i = 0; i < tgtBuf.length(); i++)
- {
- char c = tgtBuf.charAt(i);
-
- boolean isSpecialChar = isSpecialChar(c);
-
- if (isSpecialChar)
- {
- tgtBuf.insert(i, "\\");
- i++;
- }
- }
-
- src = "\"" + srcBuf.toString() + "\"";
- tgt = "\"" + tgtBuf.toString() + "\"";
-
- if (systemType.equals(SYSTEMTYPE_WINDOWS))
- {
- if (sourceFolderOrFile.isDirectory() && sourceFolderOrFile.getAbsolutePath().charAt(0) != targetFolder.getAbsolutePath().charAt(0))
- {
- // special case - move across drives
- command = "xcopy " + src + " " + tgt + " /S /E /K /O /Q /H /I && rmdir /S /Q " + src;
- }
- else
- {
- command = "move " + src + " " + tgt;
- }
- }
- else
- {
- command = "mv " + src + " " + tgt;
- }
-
- UniversalCmdSubSystemImpl cmdSubSystem = getUniversalCmdSubSystem();
- IRemoteFile runFile = sourceFolderOrFile;
-
- if (cmdSubSystem != null)
- {
- try
- {
- done = cmdSubSystem.runRemoteCommand(runFile, command);
- runFile.getParentRemoteFile().markStale(true);
- runFile.markStale(true);
-
- }
- catch (InterruptedException e)
- {
- done = false;
- }
- }
- else
- SystemPlugin.logWarning(CLASSNAME + " cmdSubSystem is null in move");
-
- return done;
- */
-
- }
-
- /**
- * Checks whether the given character is a special character in the shell. A special character is
- * '$', '`', '"' and '\'.
- * @param c the character to check.
- * @return <code>true</code> if the character is a special character, <code>false</code> otherwise.
- */
- protected boolean isSpecialChar(char c) {
-
- if ((c == '$') || (c == '`') || (c == '"') || (c == '\\')) {
- return true;
- }
- else {
- return false;
- }
- }
-
- public boolean copy(IProgressMonitor monitor, String srcParent, String srcName, String tgtParent, String tgtName) throws SystemMessageException
- {
- DataStore ds = getDataStore();
- String srcRemotePath = srcParent + getSeparator(srcParent) + srcName;
- DataElement srcDE = getElementFor(srcRemotePath);
-
- DataElement tgtDE = getElementFor(tgtParent);
- if (tgtDE.getType().equals(IUniversalDataStoreConstants.UNIVERSAL_FILTER_DESCRIPTOR))
- {
- dsQueryCommand(monitor, tgtDE, C_QUERY_GET_REMOTE_OBJECT);
- }
-
- DataElement cpCmd = getCommandDescriptor(tgtDE, C_COPY);
-
- if (cpCmd != null)
- {
- ArrayList args = new ArrayList();
- args.add(srcDE);
- DataElement nameObj = ds.createObject(null, "name", tgtName); //$NON-NLS-1$
- args.add(nameObj);
- DataElement status = ds.command(cpCmd, args, tgtDE, true);
-
-
- try
- {
- getStatusMonitor(ds).waitForUpdate(status, monitor);
-
- if (status.getAttribute(DE.A_SOURCE).equals(FAILED)) {
-
- throw new SystemMessageException(getMessage("RSEF1306").makeSubstitution(srcName)); //$NON-NLS-1$
- /*
- // 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));
- /*/
-
- }
- }
- catch (InterruptedException e)
- {
-// UniversalSystemPlugin.logError(CLASSNAME + " InterruptedException while waiting for command", e);
- }
- return true;
- }
- return false;
- }
-
- public boolean copyBatch(IProgressMonitor monitor, String[] srcParents, String[] srcNames, String tgtParent) throws SystemMessageException
- {
- DataStore ds = getDataStore();
-
- DataElement tgtDE = getElementFor(tgtParent);
- DataElement cpCmd = getCommandDescriptor(tgtDE, C_COPY_BATCH);
-
- if (cpCmd != null)
- {
- ArrayList args = new ArrayList();
- for (int i = 0; i < srcParents.length; i++)
- {
- String srcRemotePath = srcParents[i] + getSeparator(srcParents[i]) + srcNames[i];
- DataElement srcDE = getElementFor(srcRemotePath);
- args.add(srcDE);
- }
- DataElement status = ds.command(cpCmd, args, tgtDE, true);
-
- try
- {
- getStatusMonitor(ds).waitForUpdate(status, monitor);
-
- if (status.getAttribute(DE.A_SOURCE).equals(FAILED)) {
- throw new SystemMessageException(getMessage("RSEF1306").makeSubstitution(srcNames[0])); //$NON-NLS-1$
- }
- }
- catch (InterruptedException e)
- {
-// UniversalSystemPlugin.logError(CLASSNAME + " InterruptedException while waiting for command", e);
- }
- return true;
- }
- return false;
- }
-
-
-
-
-
- public IHostFile[] getRoots(IProgressMonitor monitor)
- {
- if (!isInitialized())
- {
- waitForInitialize(null);
- }
- DataStore ds = getDataStore();
- DataElement universaltemp = getMinerElement();
-
- // create filter descriptor
- DataElement deObj = ds.createObject(universaltemp, UNIVERSAL_FILTER_DESCRIPTOR, "", "", "", false); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- DataElement[] results = dsQueryCommand(monitor, deObj, C_QUERY_ROOTS);
-
- return convertToHostFiles(results);
- }
-
-
-
-
- public IHostFile[] getFolders(IProgressMonitor monitor, String remoteParent, String fileFilter)
- {
- return fetch(monitor, remoteParent, fileFilter, C_QUERY_VIEW_FOLDERS);
- }
-
- public IHostFile[] getFiles(IProgressMonitor monitor, String remoteParent, String fileFilter)
- {
- return fetch(monitor, remoteParent, fileFilter, C_QUERY_VIEW_FILES);
- }
-
- public IHostFile[] getFilesAndFolders(IProgressMonitor monitor, String remoteParent, String fileFilter)
- {
- return fetch(monitor, remoteParent, fileFilter, C_QUERY_VIEW_ALL);
- }
-
- protected DataElement getElementFor(String path)
- {
- if (!isInitialized())
- {
- waitForInitialize(null);
- }
-
-
- String normalizedPath = PathUtility.normalizeUnknown(path);
- DataElement element = (DataElement)_fileElementMap.get(normalizedPath);
- if (element != null && element.isDeleted())
- {
- _fileElementMap.remove(normalizedPath);
- element = null;
- }
- if (element == null || element.isDeleted())
- {
- DataElement universaltemp = getMinerElement();
- element = getDataStore().createObject(universaltemp, UNIVERSAL_FILTER_DESCRIPTOR, normalizedPath, normalizedPath, "", false); //$NON-NLS-1$
- }
- return element;
- }
-
- protected IHostFile[] fetch(IProgressMonitor monitor, String remoteParent, String fileFilter, String queryType)
- {
- DataStore ds = getDataStore();
-
-
- // create filter descriptor
- DataElement deObj = getElementFor(remoteParent);
- if (deObj == null)
- {
- DataElement universaltemp = getMinerElement();
- ds.createObject(universaltemp, UNIVERSAL_FILTER_DESCRIPTOR, remoteParent, remoteParent, "", false); //$NON-NLS-1$
- }
-
- DataElement attributes = getAttributes(fileFilter, true);
- ArrayList args = new ArrayList(1);
- args.add(attributes);
-
- DataElement[] results = dsQueryCommand(monitor, deObj, args, queryType);
- return convertToHostFiles(results);
- }
-
- public boolean isCaseSensitive()
- {
- return true;
- }
-
-
-
-} \ No newline at end of file

Back to the top