Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/RemoteFile.java')
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/RemoteFile.java592
1 files changed, 0 insertions, 592 deletions
diff --git a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/RemoteFile.java b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/RemoteFile.java
deleted file mode 100644
index 46f671413..000000000
--- a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/RemoteFile.java
+++ /dev/null
@@ -1,592 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2003 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.core.resources;
-
-import java.io.ByteArrayInputStream;
-import java.io.File;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.core.sync.IRemoteResource;
-import org.eclipse.team.core.sync.RemoteContentsCache;
-import org.eclipse.team.internal.ccvs.core.CVSException;
-import org.eclipse.team.internal.ccvs.core.CVSProviderPlugin;
-import org.eclipse.team.internal.ccvs.core.CVSStatus;
-import org.eclipse.team.internal.ccvs.core.CVSTag;
-import org.eclipse.team.internal.ccvs.core.ICVSFile;
-import org.eclipse.team.internal.ccvs.core.ICVSFolder;
-import org.eclipse.team.internal.ccvs.core.ICVSRemoteFile;
-import org.eclipse.team.internal.ccvs.core.ICVSRemoteFolder;
-import org.eclipse.team.internal.ccvs.core.ICVSRemoteResource;
-import org.eclipse.team.internal.ccvs.core.ICVSRepositoryLocation;
-import org.eclipse.team.internal.ccvs.core.ICVSResource;
-import org.eclipse.team.internal.ccvs.core.ICVSResourceVisitor;
-import org.eclipse.team.internal.ccvs.core.ILogEntry;
-import org.eclipse.team.internal.ccvs.core.Policy;
-import org.eclipse.team.internal.ccvs.core.client.Command;
-import org.eclipse.team.internal.ccvs.core.client.Log;
-import org.eclipse.team.internal.ccvs.core.client.Session;
-import org.eclipse.team.internal.ccvs.core.client.Update;
-import org.eclipse.team.internal.ccvs.core.client.Command.LocalOption;
-import org.eclipse.team.internal.ccvs.core.client.Command.QuietOption;
-import org.eclipse.team.internal.ccvs.core.client.listeners.LogListener;
-import org.eclipse.team.internal.ccvs.core.connection.CVSServerException;
-import org.eclipse.team.internal.ccvs.core.syncinfo.MutableResourceSyncInfo;
-import org.eclipse.team.internal.ccvs.core.syncinfo.NotifyInfo;
-import org.eclipse.team.internal.ccvs.core.syncinfo.ResourceSyncInfo;
-import org.eclipse.team.internal.ccvs.core.util.Assert;
-
-/**
- * This class provides the implementation of ICVSRemoteFile and IManagedFile for
- * use by the repository and sync view.
- */
-public class RemoteFile extends RemoteResource implements ICVSRemoteFile {
-
- // Contents will be cached to disk when this thrshold is exceeded
- private static final int CACHING_THRESHOLD = -1; // don't create a byte array even for files size 0
-
- // sync info in byte form
- private byte[] syncBytes;
- // buffer for file contents received from the server
- private byte[] contents;
- // cache the log entry for the remote file
- private ILogEntry entry;
-
- /**
- * Static method which creates a file as a single child of its parent.
- * This should only be used when one is only interested in the file alone.
- *
- * The returned RemoteFile represents the base of the local resource.
- * If the local resource does not have a base, then null is returned
- * even if the resource does exists remotely (e.g. created by another party).
- */
- public static RemoteFile getBase(RemoteFolder parent, ICVSFile managed) throws CVSException {
- byte[] syncBytes = managed.getSyncBytes();
- if ((syncBytes == null) || ResourceSyncInfo.isAddition(syncBytes)) {
- // Either the file is unmanaged or has just been added (i.e. doesn't necessarily have a remote)
- return null;
- }
- RemoteFile file = new RemoteFile(parent, syncBytes);
- parent.setChildren(new ICVSRemoteResource[] {file});
- return file;
- }
-
- public static RemoteFile fromBytes(IResource local, byte[] bytes, byte[] parentBytes) throws CVSException {
- Assert.isNotNull(bytes);
- Assert.isTrue(local.getType() == IResource.FILE);
- RemoteFolder parent = RemoteFolder.fromBytes(local.getParent(), parentBytes);
- RemoteFile file = new RemoteFile(parent, bytes);
- parent.setChildren(new ICVSRemoteResource[] {file});
- return file;
- }
-
- public static RemoteFile getRemote(IFile local, byte[] bytes) throws CVSException {
- RemoteFolder parent = (RemoteFolder)CVSWorkspaceRoot.getRemoteResourceFor(local.getParent());
- RemoteFile file = new RemoteFile(parent, bytes);
- parent.setChildren(new ICVSRemoteResource[] {file});
- return file;
- }
-
- /**
- * Constructor for RemoteFile that should be used when nothing is know about the
- * file ahead of time.
- */
- public RemoteFile(RemoteFolder parent, int workspaceSyncState, String name, CVSTag tag) {
- this(parent, workspaceSyncState, name, ResourceSyncInfo.ADDED_REVISION, tag); //$NON-NLS-1$
- }
-
- public RemoteFile(RemoteFolder parent, int workspaceSyncState, String name, String revision, CVSTag tag) {
- super(parent, name);
- MutableResourceSyncInfo newInfo = new MutableResourceSyncInfo(name, revision);
- newInfo.setKeywordMode(Command.KSUBST_TEXT_EXPAND);
- newInfo.setTag(tag);
- syncBytes = newInfo.getBytes();
- setWorkspaceSyncState(workspaceSyncState);
- }
-
- public RemoteFile(RemoteFolder parent, byte[] syncBytes) throws CVSException {
- this(parent, Update.STATE_NONE, syncBytes);
- }
-
- public RemoteFile(RemoteFolder parent, int workspaceSyncState, byte[] syncBytes) throws CVSException {
- super(parent, ResourceSyncInfo.getName(syncBytes));
- this.syncBytes = syncBytes;
- setWorkspaceSyncState(workspaceSyncState);
- }
-
- /**
- * @see ICVSResource#accept(ICVSResourceVisitor)
- */
- public void accept(ICVSResourceVisitor visitor) throws CVSException {
- visitor.visitFile(this);
- }
-
- /**
- * @see ICVSResource#accept(ICVSResourceVisitor, boolean)
- */
- public void accept(ICVSResourceVisitor visitor, boolean recurse) throws CVSException {
- visitor.visitFile(this);
- }
-
- /**
- * @see ICVSRemoteFile#getContents()
- */
- public InputStream getContents(IProgressMonitor monitor) throws CVSException {
- if (contents == null) {
- // First, check to see if there's a cached contents for the file
- InputStream cached = getCachedContents();
- if (cached != null) {
- return cached;
- }
-
- // No contents cached so fetch contents from the server.
- fetchContents(monitor);
-
- // If the update succeeded but no contents were retreived from the server
- // than we can assume that the remote file has no contents.
- if (contents == null) {
- // The above is true unless there is a cache file
- cached = getCachedContents();
- if (cached != null) {
- return cached;
- } else {
- contents = new byte[0];
- }
- }
- }
- return new ByteArrayInputStream(contents);
- }
-
- /* package*/ void fetchContents(IProgressMonitor monitor) throws CVSException {
- monitor.beginTask(Policy.bind("RemoteFile.getContents"), 100);//$NON-NLS-1$
- Session session = new Session(getRepository(), parent, false /* create backups */);
- session.open(Policy.subMonitorFor(monitor, 10));
- try {
- IStatus status = Command.UPDATE.execute(
- session,
- Command.NO_GLOBAL_OPTIONS,
- new LocalOption[] {
- Update.makeTagOption(new CVSTag(getRevision(), CVSTag.VERSION)),
- Update.IGNORE_LOCAL_CHANGES },
- new ICVSResource[] { this },
- null,
- Policy.subMonitorFor(monitor, 90));
- if (status.getCode() == CVSStatus.SERVER_ERROR) {
- throw new CVSServerException(status);
- }
- } finally {
- session.close();
- monitor.done();
- }
- }
-
- /*
- * @see ICVSRemoteFile#getLogEntry(IProgressMonitor)
- */
- public ILogEntry getLogEntry(IProgressMonitor monitor) throws CVSException {
- if (entry == null) {
- monitor = Policy.monitorFor(monitor);
- monitor.beginTask(Policy.bind("RemoteFile.getLogEntries"), 100); //$NON-NLS-1$
- Session session = new Session(getRepository(), parent, false /* output to console */);
- session.open(Policy.subMonitorFor(monitor, 10));
- try {
- try {
- final List entries = new ArrayList();
- IStatus status = Command.LOG.execute(
- session,
- Command.NO_GLOBAL_OPTIONS,
- new LocalOption[] {
- Log.makeRevisionOption(getRevision())},
- new ICVSResource[] { RemoteFile.this },
- new LogListener(RemoteFile.this, entries),
- Policy.subMonitorFor(monitor, 90));
- if (entries.size() == 1) {
- entry = (ILogEntry)entries.get(0);
- }
- if (status.getCode() == CVSStatus.SERVER_ERROR) {
- throw new CVSServerException(status);
- }
- } finally {
- monitor.done();
- }
- } finally {
- session.close();
- }
- }
- return entry;
- }
-
- /**
- * @see ICVSRemoteFile#getLogEntries()
- */
- public ILogEntry[] getLogEntries(IProgressMonitor monitor) throws CVSException {
- monitor = Policy.monitorFor(monitor);
- monitor.beginTask(Policy.bind("RemoteFile.getLogEntries"), 100); //$NON-NLS-1$
- final List entries = new ArrayList();
- Session session = new Session(getRepository(), parent, false /* output to console */);
- session.open(Policy.subMonitorFor(monitor, 10));
- try {
- QuietOption quietness = CVSProviderPlugin.getPlugin().getQuietness();
- try {
- CVSProviderPlugin.getPlugin().setQuietness(Command.VERBOSE);
- IStatus status = Command.LOG.execute(
- session,
- Command.NO_GLOBAL_OPTIONS, Command.NO_LOCAL_OPTIONS,
- new ICVSResource[] { RemoteFile.this }, new LogListener(RemoteFile.this, entries),
- Policy.subMonitorFor(monitor, 90));
- if (status.getCode() == CVSStatus.SERVER_ERROR) {
- throw new CVSServerException(status);
- }
- } finally {
- CVSProviderPlugin.getPlugin().setQuietness(quietness);
- monitor.done();
- }
- } finally {
- session.close();
- }
- return (ILogEntry[])entries.toArray(new ILogEntry[entries.size()]);
- }
-
- /**
- * @see ICVSRemoteFile#getRevision()
- */
- public String getRevision() {
- try {
- return ResourceSyncInfo.getRevision(syncBytes);
- } catch (CVSException e) {
- CVSProviderPlugin.log(e);
- return ResourceSyncInfo.ADDED_REVISION;
- }
- }
-
- /*
- * Get a different revision of the remote file.
- *
- * We must also create a new parent since the child is accessed through the parent from within CVS commands.
- * Therefore, we need a new parent so that we can fecth the contents of the remote file revision
- */
- public RemoteFile toRevision(String revision) {
- RemoteFolder newParent = new RemoteFolder(null, parent.getRepository(), parent.getRepositoryRelativePath(), parent.getTag());
- RemoteFile file = new RemoteFile(newParent, getWorkspaceSyncState(), getName(), revision, CVSTag.DEFAULT);
- newParent.setChildren(new ICVSRemoteResource[] {file});
- return file;
- }
-
- /**
- * @see ICVSFile#getSize()
- */
- public long getSize() {
- if (contents == null) {
- File ioFile = getRemoteContentsCache().getFile(getCacheRelativePath());
- if (ioFile.exists()) {
- return ioFile.length();
- }
- }
- return contents == null ? 0 : contents.length;
- }
-
- /**
- * @see ICVSFile#getSyncInfo()
- */
- public ResourceSyncInfo getSyncInfo() {
- try {
- return new ResourceSyncInfo(syncBytes);
- } catch (CVSException e) {
- CVSProviderPlugin.log(e);
- return null;
- }
- }
-
- /**
- * @see ICVSResource#getRemoteLocation(ICVSFolder)
- */
- public String getRemoteLocation(ICVSFolder stopSearching) throws CVSException {
- return parent.getRemoteLocation(stopSearching) + Session.SERVER_SEPARATOR + getName();
- }
-
- /**
- * Get the remote path for the receiver relative to the repository location path
- */
- public String getRepositoryRelativePath() {
- String parentPath = parent.getRepositoryRelativePath();
- return parentPath + Session.SERVER_SEPARATOR + getName();
- }
-
- /**
- * Return the server root directory for the repository
- */
- public ICVSRepositoryLocation getRepository() {
- return parent.getRepository();
- }
-
- /**
- * @see IManagedFile#setFileInfo(FileProperties)
- */
- public void setSyncInfo(ResourceSyncInfo fileInfo, int modificationState) {
- syncBytes = fileInfo.getBytes();
- }
-
- /**
- * Set the revision for this remote file.
- *
- * @param revision to associated with this remote file
- */
- public void setRevision(String revision) throws CVSException {
- syncBytes = ResourceSyncInfo.setRevision(syncBytes, revision);
- }
-
- public InputStream getContents() throws CVSException {
- if (contents == null) {
- // Check for cached contents for the file
- InputStream cached = getCachedContents();
- if (cached != null) {
- return cached;
- }
- }
- return new ByteArrayInputStream(contents == null ? new byte[0] : contents);
- }
-
- private InputStream getCachedContents() throws CVSException {
- try {
- return getRemoteContentsCache().getContents(getCacheRelativePath());
- } catch (TeamException e) {
- throw CVSException.wrapException(e);
- }
- }
-
- public void setContents(InputStream stream, int responseType, boolean keepLocalHistory, IProgressMonitor monitor) throws CVSException {
- try {
- getRemoteContentsCache().setContents(getCacheRelativePath(), stream, monitor);
- } catch (TeamException e) {
- throw CVSException.wrapException(e);
- }
- }
-
- private RemoteContentsCache getRemoteContentsCache() {
- return RemoteContentsCache.getCache(CVSProviderPlugin.ID);
- }
-
- /*
- * Return the cache relative path for the receiver as
- * host/cvs/root/module/path/.#filename revision
- */
- private String getCacheRelativePath() {
- ICVSRepositoryLocation location = getRepository();
- IPath path = new Path(location.getHost());
- path = path.append(location.getRootDirectory());
- path = path.append(parent.getRepositoryRelativePath());
- path = path.append(getName() + ' ' + getRevision());
- return path.toString();
- }
-
- /*
- * Return whether there are already contents cached for the given handle
- */
- public boolean isContentsCached() {
- return getRemoteContentsCache().hasContents(getCacheRelativePath());
- }
-
- /*
- * @see ICVSFile#setReadOnly(boolean)
- */
- public void setReadOnly(boolean readOnly) throws CVSException {
- }
-
- /*
- * @see ICVSFile#isReadOnly()
- */
- public boolean isReadOnly() throws CVSException {
- return true;
- }
-
- /*
- * @see ICVSFile#getTimeStamp()
- */
- public Date getTimeStamp() {
- return getSyncInfo().getTimeStamp();
- }
-
- /*
- * @see ICVSFile#setTimeStamp(Date)
- */
- public void setTimeStamp(Date date) throws CVSException {
- }
-
- /**
- * @see ICVSFile#moveTo(String)
- */
- public void copyTo(String mFile) throws CVSException {
- // Do nothing
- }
-
- /*
- * @see IRemoteResource#members(IProgressMonitor)
- */
- public IRemoteResource[] members(IProgressMonitor progress) throws TeamException {
- return new IRemoteResource[0];
- }
-
- /*
- * @see IRemoteResource#isContainer()
- */
- public boolean isContainer() {
- return false;
- }
-
- /*
- * @see ICVSResource#isFolder()
- */
- public boolean isFolder() {
- return false;
- }
-
- /*
- * @see ICVSResource#tag(CVSTag, LocalOption[], IProgressMonitor)
- *
- * The revision of the remote file is used as the base for the tagging operation
- */
- public IStatus tag(final CVSTag tag, final LocalOption[] localOptions, IProgressMonitor monitor) throws CVSException {
- monitor = Policy.monitorFor(monitor);
- monitor.beginTask(null, 100);
- Session session = new Session(getRepository(), getParent(), true /* output to console */);
- session.open(Policy.subMonitorFor(monitor, 10));
- try {
- return Command.RTAG.execute(
- session,
- Command.NO_GLOBAL_OPTIONS,
- localOptions,
- new CVSTag(getRevision(), CVSTag.VERSION),
- tag,
- new ICVSRemoteResource[] { RemoteFile.this },
- Policy.subMonitorFor(monitor, 90));
- } finally {
- session.close();
- }
- }
-
- public boolean equals(Object target) {
- if (this == target)
- return true;
- if (!(target instanceof RemoteFile))
- return false;
- RemoteFile remote = (RemoteFile) target;
- return super.equals(target) && remote.getRevision().equals(getRevision());
- }
-
- /**
- * @see org.eclipse.team.internal.ccvs.core.ICVSFile#checkout(int)
- */
- public void edit(int notifications, IProgressMonitor monitor) throws CVSException {
- // do nothing
- }
-
- /**
- * @see org.eclipse.team.internal.ccvs.core.ICVSFile#uncheckout()
- */
- public void unedit(IProgressMonitor monitor) throws CVSException {
- // do nothing
- }
-
- /**
- * @see org.eclipse.team.internal.ccvs.core.ICVSFile#notificationCompleted()
- */
- public void notificationCompleted() {
- // do nothing
- }
-
- /**
- * @see org.eclipse.team.internal.ccvs.core.ICVSFile#getPendingNotification()
- */
- public NotifyInfo getPendingNotification() throws CVSException {
- return null;
- }
-
- /**
- * @see RemoteResource#forTag(ICVSRemoteFolder, CVSTag)
- */
- public ICVSRemoteResource forTag(ICVSRemoteFolder parent, CVSTag tagName) {
- return new RemoteFile((RemoteFolder)parent, getWorkspaceSyncState(), getName(), tagName);
- }
-
- /**
- * @see org.eclipse.team.internal.ccvs.core.ICVSRemoteResource#forTag(org.eclipse.team.internal.ccvs.core.CVSTag)
- */
- public ICVSRemoteResource forTag(CVSTag tag) {
- RemoteFolderTree remoteFolder = new RemoteFolderTree(null, getRepository(),
- ((ICVSRemoteFolder)getParent()).getRepositoryRelativePath(),
- tag);
- RemoteFile remoteFile = (RemoteFile)forTag(remoteFolder, tag);
- remoteFolder.setChildren(new ICVSRemoteResource[] { remoteFile });
- return remoteFile;
- }
- /**
- * @see org.eclipse.team.internal.ccvs.core.ICVSFile#committed(org.eclipse.team.internal.ccvs.core.syncinfo.ResourceSyncInfo)
- */
- public void checkedIn(String info) throws CVSException {
- // do nothing
- }
- /**
- * @see org.eclipse.team.internal.ccvs.core.ICVSFile#isEdited()
- */
- public boolean isEdited() throws CVSException {
- return false;
- }
- /**
- * @see org.eclipse.team.internal.ccvs.core.ICVSFile#getSyncBytes()
- */
- public byte[] getSyncBytes() {
- return syncBytes;
- }
- /**
- * @see org.eclipse.team.internal.ccvs.core.ICVSFile#setSyncBytes(byte[])
- */
- public void setSyncBytes(byte[] syncBytes, int modificationState) throws CVSException {
- setSyncInfo(new ResourceSyncInfo(syncBytes), ICVSFile.UNKNOWN);
- }
-
- public String toString() {
- return super.toString() + " " + getRevision();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.core.sync.IRemoteResource#getComment()
- */
- public String getComment() throws CVSException {
-// ILogEntry entry = getLogEntry(new NullProgressMonitor());
-// return entry.getComment();
- return "";
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.core.sync.IRemoteResource#getContentIdentifier()
- */
- public String getContentIdentifier() throws CVSException {
- return getRevision();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.core.sync.IRemoteResource#getCreatorDisplayName()
- */
- public String getCreatorDisplayName() throws CVSException {
-// ILogEntry entry = getLogEntry(new NullProgressMonitor());
-// return entry.getAuthor();
- return "";
- }
-}

Back to the top