blob: 6142d751148de3db773805a4e9d7847c4223b8f6 [file] [log] [blame]
/******************************************************************************
* Copyright (c) 2006, 2010 IBM Corporation and others.
* 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
*
* Contributors:
* IBM Corporation - Initial Implementation
* Roland Schulz, University of Tennessee
*
*****************************************************************************/
package org.eclipse.ptp.remotetools.core;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.ptp.remotetools.exception.CancelException;
import org.eclipse.ptp.remotetools.exception.RemoteConnectionException;
import org.eclipse.ptp.remotetools.exception.RemoteOperationException;
/**
* @author richardm
*
*/
public interface IRemoteItem {
/**
* Apply all the attributes to the item on remote host. For efficiency, only
* changed attributes may be written.
*
* @param monitor
* progress monitor used to report operation progress to the user
* @since 3.0
*/
public void commitAttributes(IProgressMonitor monitor) throws RemoteConnectionException, RemoteOperationException,
CancelException;
/**
* Test if this remote item actually exists on the remote system.
*
* @return true if the remote item exists
*/
public boolean exists();
/**
* Get the last accessed time of the item
*
* @return last access time
*/
public long getAccessTime();
/**
* Get the modification time of the item.
*
* @return last modified time
*/
public long getModificationTime();
/**
* Get the path represented by this item.
*
* @return path
*/
public String getPath();
/**
* Get the item size in bytes.
*
* @return item size in bytes
*/
public long getSize();
/**
* Tests if the remote item is a directory.
*
* @return true if the remote item is a directory
*/
public boolean isDirectory();
/**
* Test if the remote item is executable (accessible for a directory)
*
* @return true if the remote imtem is executable
*/
public boolean isExecutable();
/**
* Returns true if the remote item has a permission that allows to read this
* item. Several permissions are considered (user, group, others) to
* calculate the effective permission.
*
* @return true/false
*/
public boolean isReadable();
/**
* Returns true if the remote item has a permission that allows to write
* this item. Several permissions are considered (user, group, others) to
* calculate the effective permission.
*
* @return false
*/
public boolean isWritable();
/**
* Fetch all the attributes from the item on remote host.
*
* @param monitor
* progress monitor used to report operation progress to the user
* @throws RemoteOperationException
* @since 3.0
*/
public void refreshAttributes(IProgressMonitor monitor) throws RemoteConnectionException, RemoteOperationException,
CancelException;
/**
* Set the executable status of the remote item
*
* @param flag
* true if the remote item is executable
*/
public void setExecutable(boolean flag);
/**
* Set the modification time of the item
*
* @param time
* modification time
*/
public void setModificationTime(long time);
/**
* Set the permission on the remote item enable/disable read access.
*
* @param flag
*/
public void setReadable(boolean flag);
/**
* Set the permission on the remote item to enable/disable write access.
*
* @param flag
*/
public void setWriteable(boolean flag);
}