diff options
Diffstat (limited to 'bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/EclipseFile.java')
-rw-r--r-- | bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/EclipseFile.java | 97 |
1 files changed, 65 insertions, 32 deletions
diff --git a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/EclipseFile.java b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/EclipseFile.java index b32220b79..71a8f45d5 100644 --- a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/EclipseFile.java +++ b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/EclipseFile.java @@ -7,37 +7,20 @@ * * Contributors: * IBM Corporation - initial API and implementation + * Red Hat Incorporated - is/setExecutable() code *******************************************************************************/ package org.eclipse.team.internal.ccvs.core.resources; import java.io.File; import java.io.InputStream; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; +import java.util.*; -import org.eclipse.core.resources.IFile; -import org.eclipse.core.resources.IResource; -import org.eclipse.core.resources.IResourceStatus; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IPath; -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.core.runtime.Path; +import org.eclipse.core.resources.*; +import org.eclipse.core.runtime.*; import org.eclipse.team.core.TeamException; -import org.eclipse.team.internal.ccvs.core.CVSException; -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.ICVSRemoteResource; -import org.eclipse.team.internal.ccvs.core.ICVSResourceVisitor; -import org.eclipse.team.internal.ccvs.core.ICVSRunnable; -import org.eclipse.team.internal.ccvs.core.ILogEntry; -import org.eclipse.team.internal.ccvs.core.Policy; +import org.eclipse.team.internal.ccvs.core.*; import org.eclipse.team.internal.ccvs.core.client.Session; -import org.eclipse.team.internal.ccvs.core.syncinfo.BaserevInfo; -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.syncinfo.*; import org.eclipse.team.internal.ccvs.core.util.Assert; /** @@ -159,7 +142,7 @@ public class EclipseFile extends EclipseResource implements ICVSFile { */ public void copyTo(String filename) throws CVSException { try { - IPath targetPath = new Path(filename); + IPath targetPath = new Path(null, filename); IFile targetFile = getIFile().getParent().getFile(targetPath); if (targetFile.exists()) { // There is a file in the target location. @@ -199,13 +182,13 @@ public class EclipseFile extends EclipseResource implements ICVSFile { break; case MERGED: // merging contents into a file that exists locally // Ensure we don't leave the file in a partially written state - IFile tempFile = file.getParent().getFile(new Path(file.getName() + TEMP_FILE_EXTENSION)); + IFile tempFile = file.getParent().getFile(new Path(null, file.getName() + TEMP_FILE_EXTENSION)); monitor.beginTask(null, 100); if (tempFile.exists()) tempFile.delete(true /* force */, Policy.subMonitorFor(monitor, 25)); tempFile.create(stream, true /*force*/, Policy.subMonitorFor(monitor, 25)); file.delete(false /* force */, true /* keep history */, Policy.subMonitorFor(monitor, 25)); - tempFile.move(new Path(file.getName()), false /*force*/, true /*history*/, Policy.subMonitorFor(monitor, 25)); + tempFile.move(new Path(null, file.getName()), false /*force*/, true /*history*/, Policy.subMonitorFor(monitor, 25)); monitor.done(); break; case UPDATE_EXISTING: // creating a new file so it should exist locally @@ -229,7 +212,15 @@ public class EclipseFile extends EclipseResource implements ICVSFile { * @see ICVSFile#setReadOnly() */ public void setReadOnly(boolean readOnly) throws CVSException { - getIFile().setReadOnly(readOnly); + ResourceAttributes attributes = resource.getResourceAttributes(); + if (attributes != null) { + attributes.setReadOnly(readOnly); + try { + resource.setResourceAttributes(attributes); + } catch (CoreException e) { + throw CVSException.wrapException(e); + } + } } /* @@ -240,6 +231,33 @@ public class EclipseFile extends EclipseResource implements ICVSFile { } /* + * @see ICVSFile#setExecutable() + */ + public void setExecutable(boolean executable) throws CVSException { + ResourceAttributes attributes = resource.getResourceAttributes(); + if (attributes != null) { + attributes.setExecutable(executable); + try { + resource.setResourceAttributes(attributes); + } catch (CoreException e) { + throw CVSException.wrapException(e); + } + } + } + + /* + * @see ICVSFile#isExectuable() + */ + public boolean isExecutable() throws CVSException { + ResourceAttributes attributes = resource.getResourceAttributes(); + if (attributes != null) { + return attributes.isExecutable(); + } else { + return false; + } + } + + /* * Typecasting helper */ public IFile getIFile() { @@ -351,8 +369,13 @@ public class EclipseFile extends EclipseResource implements ICVSFile { setBaserevInfo(new BaserevInfo(getName(), ResourceSyncInfo.getRevision(syncBytes))); } - // allow editing - setReadOnly(false); + try { + // allow editing + setReadOnly(false); + } catch (CVSException e) { + // Just log and keep going + CVSProviderPlugin.log(e); + } } }, monitor); @@ -395,8 +418,13 @@ public class EclipseFile extends EclipseResource implements ICVSFile { } setBaserevInfo(null); - // prevent editing - setReadOnly(true); + try { + // prevent editing + setReadOnly(true); + } catch (CVSException e) { + // Just log and keep going + CVSProviderPlugin.log(e); + } } }, monitor); } @@ -471,7 +499,12 @@ public class EclipseFile extends EclipseResource implements ICVSFile { BaserevInfo base = getBaserevInfo(); if (base != null) { setBaserevInfo(null); - setReadOnly(true); + try { + setReadOnly(true); + } catch (CVSException e) { + // Just log and keep going + CVSProviderPlugin.log(e); + } } } |