package org.revisionfilter.utils.rcs.svn; import java.io.InputStream; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.NullProgressMonitor; import org.revisionfilter.utils.console.RevisionFilterConsoleFactory; import org.revisionfilter.utils.rcs.CachedLineChangeSystem; import org.revisionfilter.utils.rcs.IRevisionSystem; import org.tigris.subversion.subclipse.core.ISVNLocalResource; import org.tigris.subversion.subclipse.core.SVNException; import org.tigris.subversion.subclipse.core.resources.SVNWorkspaceRoot; public class SVNRevisionSystem implements IRevisionSystem { public static final int DIRTY_ADDED = 0x1; public static final int DIRTY_UNVERSIONED = 0x2; @Override public boolean isDirty(IResource resource, int flags) { ISVNLocalResource svnResource = SVNWorkspaceRoot .getSVNResourceFor(resource); boolean isDirty = false; try { isDirty = svnResource.isDirty() || (isSet(flags, DIRTY_ADDED) && svnResource.isAdded()) || (isSet(flags, DIRTY_UNVERSIONED) && !svnResource.isManaged()); } catch (SVNException e) { e.printStackTrace(); } return isDirty; } private boolean isSet(int flags, int flag) { return ((flags & flag) > 0); } @Override public String getBaseFileContents(IFile file) { String baseFileContents = ""; if (file != null) { ISVNLocalResource svnResource = SVNWorkspaceRoot.getSVNFileFor(file); try { if ((svnResource != null) && (svnResource.getBaseResource() != null)) { // Get InputStreams of the file data InputStream baseFileStream = svnResource.getBaseResource() .getStorage(new NullProgressMonitor()).getContents(); // Extract string contents baseFileContents = CachedLineChangeSystem .getFileContents(baseFileStream); } } catch (Exception ex) { // Throw away RevisionFilterConsoleFactory.outputLine(ex.toString()); ex.printStackTrace(); } } return baseFileContents; } }