/**
* This file is licensed under the University of Illinois/NCSA Open Source License. See LICENSE.TXT for details.
*/
package edu.illinois.codingspectator.monitor.core.submission;
import org.eclipse.core.runtime.CoreException;
import org.tmatesoft.svn.core.SVNException;
/**
* A facade over local and remote Subversion operations.
*
* @author Mohsen Vakilian
* @author nchen
*
*/
public class SVNManager {
LocalSVNManager localSVNManager;
RemoteSVNManager remoteSVNManager;
public SVNManager(URLManager urlManager, String svnWorkingCopyDirectory, String username, String password) {
localSVNManager= new LocalSVNManager(svnWorkingCopyDirectory);
remoteSVNManager= new RemoteSVNManager(urlManager, svnWorkingCopyDirectory, username, password);
}
public void doImportIfNecessary() throws SVNException {
if (!localSVNManager.isWorkingDirectoryValid()) {
remoteSVNManager.doImport();
}
}
public void doCleanupIfPossible() throws SVNException {
if (localSVNManager.isWorkingDirectoryValid()) {
localSVNManager.doCleanup();
}
}
public void doCheckout() throws SVNException {
remoteSVNManager.doCheckout();
}
public void doUpdate() throws SVNException {
remoteSVNManager.doUpdate();
}
public void doCommit() throws SVNException {
remoteSVNManager.doCommit();
}
public void doAdd() throws SVNException {
localSVNManager.doAdd();
}
public boolean isLocalWorkCopyOutdated() throws SVNException {
return remoteSVNManager.getCommittedRevisionNumber() > localSVNManager.getRevisionNumber();
}
public void doDelete(String commitMessage) throws SVNException {
remoteSVNManager.doDelete(commitMessage);
}
public void removeSVNMetaData() throws CoreException {
localSVNManager.removeSVNMetaData();
}
public boolean isWorkingDirectoryValid() {
return localSVNManager.isWorkingDirectoryValid();
}
public boolean isWatchedFolderInRepository() {
return remoteSVNManager.isWatchedFolderInRepository();
}
public boolean isAuthenticationInformationValid() {
return remoteSVNManager.isAuthenticationInformationValid();
}
}