RSE
Release 1.0

org.eclipse.rse.subsystems.files.core.subsystems
Class RemoteFile

java.lang.Object
  extended byorg.eclipse.rse.subsystems.files.core.subsystems.RemoteFile
All Implemented Interfaces:
Cloneable, Comparable, IAdaptable, IRemoteContainer, IRemoteFile, IRemotePropertyHolder, ISchedulingRule, ISystemContainer
Direct Known Subclasses:
AbstractRemoteFile, RemoteFileEmpty, RemoteFileRoot

public abstract class RemoteFile
extends Object
implements IRemoteFile, IAdaptable, Comparable, Cloneable

A remote file represents a named file on a remote file system. This class works with remote file names that do not include the preceding "" prefix. Such ultimately-qualified names are known as IRemoteFilePath names.

Base parent class that supplies all of the functionality required by the IRemoteFile interface.

This base functionality is possible because this is a read-only representation of a remote file ... all actions like delete and rename are handled by the subsystem.

For all this base functionality to work, the subsystem that creates this object must call the setter methods to prefill this object with the core required information:


Field Summary
protected  HashMap _contents
           
protected  IRemoteFileContext _context
           
protected  boolean _isStale
           
protected  String _label
           
protected  IRemoteFile _parentFile
           
protected  String fullyQualifiedName
           
protected  boolean isContainer
           
protected  HashMap properties
           
protected  HashMap propertyStates
           
protected  Object remoteObj
           
 
Fields inherited from interface org.eclipse.rse.subsystems.files.core.subsystems.IRemoteFile
CONNECTION_DELIMITER, ISROOT_NO, ISROOT_YES
 
Constructor Summary
RemoteFile(IRemoteFileContext context)
          Constructor that takes a context object containing important information.
 
Method Summary
 int compareTo(Object other)
          Compare one remote file to another.
 boolean contains(ISchedulingRule rule)
           
protected  boolean containsFilterKey(HashMap filters, String filter)
           
 void copyContentsTo(IRemoteContainer target)
          Copies the persistable contents from this one to another one
 boolean equals(Object otherObj)
           
 String getAbsolutePath()
          Get fully qualified name: root plus path plus name.
 String getAbsolutePathPlusConnection()
          Get fully qualified connection and file name: connection:\path\file Note the separator character between the profile name and the connection name is always '.'
 Object getAdapter(Class adapterType)
          This is the method required by the IAdaptable interface.
 RemoteFileFilterString[] getAllFilterStrings()
          If this is a folder, it is possible that it is listed as part of a multiple filter string filter.
 String getComment()
           
 Object[] getContents(ISystemContentsType contentsType)
          Returns all the contents of the object (combining results of all filters
 Object[] getContents(ISystemContentsType contentsType, String filter)
          Returns the contents of the object.
 IRemoteFileContext getContext()
          Return the context associated with this remote file
 String getExtension()
          Return the extension part of a file name.
 Object getFile()
          Get the object.
 RemoteFileFilterString getFilterString()
          Return the filter string resolved to get this object
 String getHostName()
           
 String getLabel()
          Get the display name for this file.
 Date getLastModifiedDate()
          Return the last modified time as a Date object.
 String getLineSeparator()
          Return as a string the line separator character values
 IRemoteFile getParentRemoteFile()
          Return the parent remote file object expanded to get this object, or null if no such parent
 IRemoteFileSubSystem getParentRemoteFileSubSystem()
          Return the parent subsystem
 IRemoteFileSubSystemConfiguration getParentRemoteFileSubSystemConfiguration()
          Return the parent subsystem factory
 Object[] getProperties(String[] keys)
          Returns the value of the properties with the given keys.
 Object getProperty(String key)
          Returns the value of the property with the given key.
 String getSeparator()
          Return the separator character for this file system, as a string: "\" or "/".
 char getSeparatorChar()
          Return the separator character for this file system: \ or /.
 IHost getSystemConnection()
          Return the connection this remote file is from.
 boolean hasContents(ISystemContentsType contentsType)
          Returns whether the object has contents of a particular type.
 boolean hasContents(ISystemContentsType contentsType, String filter)
          Returns whether the object has contents of a particular type associated with the specified filter string.
 boolean isAncestorOf(IRemoteFile file)
          Note: if this remoteFile is the same as the file passed as parameter, then this method returns true.
 boolean isArchive()
          Returns true if this represents an archive file, versues a non-archive file
 boolean isBinary()
          Returns true if this is a binary file
 boolean isConflicting(ISchedulingRule rule)
           
 boolean isDescendantOf(IRemoteFile file)
          Note: if this remoteFile is the same as the file passed as parameter, then this method returns true.
 boolean isExecutable()
          Returns whether the file is executable or not.
 boolean isLink()
          Returns whether the file is a symbolic link or not.
 boolean isPropertyStale(String key)
          Returns whether the property with the given key is stale.
 boolean isStale()
          Indicates whether the cached object is stale
 boolean isText()
          Returns true if this is a text file
 boolean isUnix()
          Return if this is a file on Unix, versus windows say Queries it from the subsystem factory.
 void markAllPropertiesStale()
          Marks all properties as stale.
 void markPropertyStale(String key)
          Marks the property with the given key as stale.
 void markStale(boolean isStale)
          Marks the object as stale or not
 void markStale(boolean isStale, boolean clearCache)
          Marks the object as stale or not
 void replaceContent(Object oldObject, Object newObject)
           
 void setContents(ISystemContentsType contentsType, String filter, Object[] con)
          Sets the contents of this object that match a particular filter
 void setFile(Object obj)
           
 void setFilterString(RemoteFileFilterString filterString)
          Set the filter string resolved to get this object
 void setIsContainer(boolean con)
           
 void setLabel(String newLabel)
           
 void setParentRemoteFile(IRemoteFile parentFile)
           
 void setProperties(String[] keys, Object[] values)
          Sets the values of the properties with the given keys.
 void setProperty(String key, Object value)
          Sets the value of the property with the given key.
 String toString()
          Return the cached copy of this remote file.
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.eclipse.rse.subsystems.files.core.subsystems.IRemoteFile
canRead, canWrite, exists, getCanonicalPath, getClassification, getHostFile, getLastModified, getLength, getName, getParentName, getParentNoRoot, getParentPath, getRoot, isDirectory, isFile, isHidden, isRoot, showBriefPropertySet, showReadOnlyProperty
 

Field Detail

_context

protected IRemoteFileContext _context

fullyQualifiedName

protected String fullyQualifiedName

_label

protected String _label

remoteObj

protected Object remoteObj

_parentFile

protected IRemoteFile _parentFile

isContainer

protected boolean isContainer

_contents

protected HashMap _contents

_isStale

protected boolean _isStale

properties

protected HashMap properties

propertyStates

protected HashMap propertyStates
Constructor Detail

RemoteFile

public RemoteFile(IRemoteFileContext context)
Constructor that takes a context object containing important information.

Parameters:
context - An object holding contextual information about this object
See Also:
IRemoteFileContext
Method Detail

setFilterString

public void setFilterString(RemoteFileFilterString filterString)
Set the filter string resolved to get this object


setLabel

public void setLabel(String newLabel)

getContext

public IRemoteFileContext getContext()
Return the context associated with this remote file


getParentRemoteFileSubSystem

public IRemoteFileSubSystem getParentRemoteFileSubSystem()
Return the parent subsystem

Specified by:
getParentRemoteFileSubSystem in interface IRemoteFile

getParentRemoteFileSubSystemConfiguration

public IRemoteFileSubSystemConfiguration getParentRemoteFileSubSystemConfiguration()
Return the parent subsystem factory


setParentRemoteFile

public void setParentRemoteFile(IRemoteFile parentFile)

getParentRemoteFile

public IRemoteFile getParentRemoteFile()
Return the parent remote file object expanded to get this object, or null if no such parent

Specified by:
getParentRemoteFile in interface IRemoteFile

getFilterString

public RemoteFileFilterString getFilterString()
Return the filter string resolved to get this object

Specified by:
getFilterString in interface IRemoteFile

getAllFilterStrings

public RemoteFileFilterString[] getAllFilterStrings()
If this is a folder, it is possible that it is listed as part of a multiple filter string filter. In this case, when the folder is expanded, we want to filter the file names to show all the files that match any of the filter strings that have the same parent path.

This method supports that by returning all the filter strings in the filter which have the same parent path as was used to produce this file.

Specified by:
getAllFilterStrings in interface IRemoteFile

getSeparatorChar

public char getSeparatorChar()
Return the separator character for this file system: \ or /. Queries it from the subsystem factory.

Specified by:
getSeparatorChar in interface IRemoteFile

getSeparator

public String getSeparator()
Return the separator character for this file system, as a string: "\" or "/". Queries it from the subsystem factory.

Specified by:
getSeparator in interface IRemoteFile

getLineSeparator

public String getLineSeparator()
Return as a string the line separator character values

Specified by:
getLineSeparator in interface IRemoteFile

isUnix

public boolean isUnix()
Return if this is a file on Unix, versus windows say Queries it from the subsystem factory.


isLink

public boolean isLink()
Description copied from interface: IRemoteFile
Returns whether the file is a symbolic link or not.

Specified by:
isLink in interface IRemoteFile
Returns:
true if the file is a symbolic link, false otherwise.

isExecutable

public boolean isExecutable()
Description copied from interface: IRemoteFile
Returns whether the file is executable or not.

Specified by:
isExecutable in interface IRemoteFile
Returns:
true if the file is executable, false otherwise.

isArchive

public boolean isArchive()
Description copied from interface: IRemoteFile
Returns true if this represents an archive file, versues a non-archive file

Specified by:
isArchive in interface IRemoteFile

getSystemConnection

public IHost getSystemConnection()
Return the connection this remote file is from.

Specified by:
getSystemConnection in interface IRemoteFile

getAbsolutePath

public String getAbsolutePath()
Description copied from interface: IRemoteFile
Get fully qualified name: root plus path plus name. No connection name.

Specified by:
getAbsolutePath in interface IRemoteFile
See Also:
IRemoteFile.getAbsolutePath()

getAbsolutePathPlusConnection

public String getAbsolutePathPlusConnection()
Get fully qualified connection and file name: connection:\path\file Note the separator character between the profile name and the connection name is always '.' Note the separator character between the connection and qualified-file is always ':'

Specified by:
getAbsolutePathPlusConnection in interface IRemoteFile

getLabel

public String getLabel()
Description copied from interface: IRemoteFile
Get the display name for this file. By default, this should be the same as the name If this object represents only a root drive, this is the same as getRoot().

Specified by:
getLabel in interface IRemoteFile
See Also:
IRemoteFile.getLabel()

isBinary

public boolean isBinary()
Description copied from interface: IRemoteFile
Returns true if this is a binary file

Specified by:
isBinary in interface IRemoteFile
See Also:
IRemoteFile.isBinary()

isText

public boolean isText()
Description copied from interface: IRemoteFile
Returns true if this is a text file

Specified by:
isText in interface IRemoteFile
See Also:
IRemoteFile.isText()

getLastModifiedDate

public Date getLastModifiedDate()
Description copied from interface: IRemoteFile
Return the last modified time as a Date object.

Specified by:
getLastModifiedDate in interface IRemoteFile
See Also:
IRemoteFile.getLastModifiedDate()

getExtension

public String getExtension()
Return the extension part of a file name. Eg, for abc.java, return "java"

Specified by:
getExtension in interface IRemoteFile

toString

public String toString()
Return the cached copy of this remote file. The returned IFile must be used for read-only purposes since no locks are acquired on the remote file.

Returns:
IFile The cached copy of this file if it exists AND it is upto date. null is returned if a local cached copy of this file is not available or the local cached copy is not upto date (last modified timestamp comparison.)

getAdapter

public Object getAdapter(Class adapterType)
This is the method required by the IAdaptable interface. Given an adapter class type, return an object castable to the type, or null if this is not possible.

By default this returns Platform.getAdapterManager().getAdapter(this, adapterType); This in turn results in the default subsystem adapter SystemViewSubSystemAdapter, in package org.eclipse.rse.ui.view.

Specified by:
getAdapter in interface IAdaptable

compareTo

public int compareTo(Object other)
              throws ClassCastException
Compare one remote file to another. This enables us to sort the files so they are shown folders-first, and in alphabetical order.

Specified by:
compareTo in interface IRemoteFile
Throws:
ClassCastException

setFile

public void setFile(Object obj)

getFile

public Object getFile()
Description copied from interface: IRemoteFile
Get the object.

Specified by:
getFile in interface IRemoteFile

isAncestorOf

public boolean isAncestorOf(IRemoteFile file)
Description copied from interface: IRemoteFile
Note: if this remoteFile is the same as the file passed as parameter, then this method returns true.

Specified by:
isAncestorOf in interface IRemoteFile

isDescendantOf

public boolean isDescendantOf(IRemoteFile file)
Description copied from interface: IRemoteFile
Note: if this remoteFile is the same as the file passed as parameter, then this method returns true.

Specified by:
isDescendantOf in interface IRemoteFile

hasContents

public boolean hasContents(ISystemContentsType contentsType)
Description copied from interface: ISystemContainer
Returns whether the object has contents of a particular type.

Specified by:
hasContents in interface ISystemContainer
Parameters:
contentsType - type of contents
Returns:
true if the object has contents, false otherwise.
See Also:
org.eclipse.rse.core.subsystems.IRemoteContainer#hasContents(java.lang.String)

hasContents

public boolean hasContents(ISystemContentsType contentsType,
                           String filter)
Description copied from interface: IRemoteContainer
Returns whether the object has contents of a particular type associated with the specified filter string.

Specified by:
hasContents in interface IRemoteContainer
Parameters:
contentsType - type of contents
filter - criteria for contained contents
Returns:
true if the object has contents, false otherwise.
See Also:
org.eclipse.rse.core.subsystems.IRemoteContainer#hasContents(java.lang.String, java.lang.String)

containsFilterKey

protected boolean containsFilterKey(HashMap filters,
                                    String filter)

getContents

public Object[] getContents(ISystemContentsType contentsType)
Description copied from interface: ISystemContainer
Returns all the contents of the object (combining results of all filters

Specified by:
getContents in interface ISystemContainer
Parameters:
contentsType - type of contents
Returns:
an array of contents.
See Also:
org.eclipse.rse.core.subsystems.IRemoteContainer#getContents(java.lang.String)

getContents

public Object[] getContents(ISystemContentsType contentsType,
                            String filter)
Description copied from interface: IRemoteContainer
Returns the contents of the object.

Specified by:
getContents in interface IRemoteContainer
Parameters:
contentsType - type of contents
filter - criteria for contained contents.
Returns:
an array of contents.
See Also:
org.eclipse.rse.core.subsystems.IRemoteContainer#getContents(java.lang.String, java.lang.String)

setIsContainer

public void setIsContainer(boolean con)

replaceContent

public void replaceContent(Object oldObject,
                           Object newObject)
Specified by:
replaceContent in interface IRemoteContainer

setContents

public void setContents(ISystemContentsType contentsType,
                        String filter,
                        Object[] con)
Description copied from interface: IRemoteContainer
Sets the contents of this object that match a particular filter

Specified by:
setContents in interface IRemoteContainer
Parameters:
contentsType - type of contents
filter - matching criteria for the contained objects
con - the contained objects that match the filter
See Also:
org.eclipse.rse.core.subsystems.IRemoteContainer#setContents(java.lang.String, java.lang.String, java.lang.Object[])

isStale

public boolean isStale()
Description copied from interface: ISystemContainer
Indicates whether the cached object is stale

Specified by:
isStale in interface ISystemContainer
Returns:
whether the container is stale
See Also:
ISystemContainer.isStale()

markStale

public void markStale(boolean isStale)
Description copied from interface: ISystemContainer
Marks the object as stale or not

Specified by:
markStale in interface ISystemContainer
Parameters:
isStale - whether the object is to be marked stale or not
See Also:
ISystemContainer.markStale(boolean)

markStale

public void markStale(boolean isStale,
                      boolean clearCache)
Description copied from interface: ISystemContainer
Marks the object as stale or not

Specified by:
markStale in interface ISystemContainer
Parameters:
isStale - whether the object is to be marked stale or not
See Also:
ISystemContainer.markStale(boolean)

copyContentsTo

public void copyContentsTo(IRemoteContainer target)
Description copied from interface: IRemoteContainer
Copies the persistable contents from this one to another one

Specified by:
copyContentsTo in interface IRemoteContainer
Parameters:
target - the container to copy contents to

getProperties

public Object[] getProperties(String[] keys)
Description copied from interface: IRemotePropertyHolder
Returns the value of the properties with the given keys.

Specified by:
getProperties in interface IRemotePropertyHolder
Parameters:
keys - the property keys.
Returns:
the correspoding values of the properties.
See Also:
IRemotePropertyHolder.getProperties(java.lang.String[])

getProperty

public Object getProperty(String key)
Description copied from interface: IRemotePropertyHolder
Returns the value of the property with the given key.

Specified by:
getProperty in interface IRemotePropertyHolder
Parameters:
key - the property key.
Returns:
the value of the property.
See Also:
IRemotePropertyHolder.getProperty(java.lang.String)

isPropertyStale

public boolean isPropertyStale(String key)
Description copied from interface: IRemotePropertyHolder
Returns whether the property with the given key is stale.

Specified by:
isPropertyStale in interface IRemotePropertyHolder
Parameters:
key - the property key.
Returns:
true if the property is stale, false otherwise.
See Also:
IRemotePropertyHolder.isPropertyStale(java.lang.String)

markAllPropertiesStale

public void markAllPropertiesStale()
Description copied from interface: IRemotePropertyHolder
Marks all properties as stale.

Specified by:
markAllPropertiesStale in interface IRemotePropertyHolder
See Also:
IRemotePropertyHolder.markAllPropertiesStale()

markPropertyStale

public void markPropertyStale(String key)
Description copied from interface: IRemotePropertyHolder
Marks the property with the given key as stale.

Specified by:
markPropertyStale in interface IRemotePropertyHolder
Parameters:
key - the property key.
See Also:
IRemotePropertyHolder.markPropertyStale(java.lang.String)

setProperties

public void setProperties(String[] keys,
                          Object[] values)
Description copied from interface: IRemotePropertyHolder
Sets the values of the properties with the given keys.

Specified by:
setProperties in interface IRemotePropertyHolder
Parameters:
keys - the property keys.
values - the corresponding values of the properties.
See Also:
IRemotePropertyHolder.setProperties(java.lang.String[], java.lang.Object[])

setProperty

public void setProperty(String key,
                        Object value)
Description copied from interface: IRemotePropertyHolder
Sets the value of the property with the given key.

Specified by:
setProperty in interface IRemotePropertyHolder
Parameters:
key - the property key.
value - the value of the property.
See Also:
IRemotePropertyHolder.setProperty(java.lang.String, java.lang.Object)

getComment

public String getComment()
Specified by:
getComment in interface IRemoteFile
Returns:
Any comments stored with the file in the file system or archive.

contains

public boolean contains(ISchedulingRule rule)
Specified by:
contains in interface ISchedulingRule

isConflicting

public boolean isConflicting(ISchedulingRule rule)
Specified by:
isConflicting in interface ISchedulingRule

equals

public boolean equals(Object otherObj)

getHostName

public String getHostName()

RSE
Release 1.0

Copyright (c) IBM Corporation and others 2000, 2006. All Rights Reserved.