/** * This file is licensed under the University of Illinois/NCSA Open Source License. See LICENSE.TXT for details. */ package edu.illinois.codingspectator.monitor.tests; import java.io.OutputStream; import java.io.PrintWriter; import org.eclipse.core.filesystem.EFS; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.equinox.p2.core.UIServices.AuthenticationInfo; import org.tmatesoft.svn.core.SVNException; import org.tmatesoft.svn.core.SVNURL; import org.tmatesoft.svn.core.wc.SVNClientManager; import org.tmatesoft.svn.core.wc.SVNCommitClient; import org.tmatesoft.svn.core.wc.SVNInfo; import org.tmatesoft.svn.core.wc.SVNRevision; import org.tmatesoft.svn.core.wc.SVNWCClient; import edu.illinois.codingspectator.efs.EFSFile; import edu.illinois.codingspectator.monitor.core.submission.SVNManager; import edu.illinois.codingspectator.monitor.core.submission.URLManager; import edu.illinois.codingspectator.monitor.ui.prefs.UUIDGenerator; import edu.illinois.codingspectator.monitor.ui.submission.Submitter; /** * * @author Mohsen Vakilian * */ public class MockSubmitterFactory { public static final String UUID= "00000000-0000-0000-0000-000000000000"; static final String FILENAME= "log.txt"; private String username; private String password; private Submitter submitter; private SVNWCClient workingCopyClient; private SVNCommitClient commitClient; private URLManager urlManager; private SVNManager svnManager; public MockSubmitterFactory(MockParticipant participant) { username= participant.getUsername(); password= participant.getPassword(); submitter= new Submitter(new MockAuthenticationProvider(getAuthenticationInfo())); urlManager= new URLManager(Messages.MockAuthenticationProvider_TestRepositoryURL, username, UUID); svnManager= new SVNManager(urlManager, Submitter.WATCHED_FOLDER, username, password); SVNClientManager clientManager= SVNClientManager.newInstance(null, username, password); workingCopyClient= clientManager.getWCClient(); commitClient= clientManager.getCommitClient(); } public MockSubmitterFactory() { this(MockParticipantFactory.getMockParticipant(0)); } public Submitter getSubmitter() { return submitter; } public SVNWCClient getWorkingCopyClient() { return workingCopyClient; } public SVNCommitClient getCommitClient() { return commitClient; } public URLManager getURLManager() { return urlManager; } public SVNManager getSVNManager() { return svnManager; } public String getUsername() { return username; } public String getPassword() { return password; } public void modifyFileInWatchedFolder() throws CoreException { PrintWriter printWriter= null; try { EFSFile watchedFolder= new EFSFile(Submitter.WATCHED_FOLDER); watchedFolder.mkdir(); EFSFile logFile= watchedFolder.append(FILENAME); OutputStream outputStream= logFile.getFileStore().openOutputStream(EFS.ATTRIBUTE_GROUP_READ | EFS.ATTRIBUTE_GROUP_WRITE, new NullProgressMonitor()); printWriter= new PrintWriter(outputStream); printWriter.write(UUIDGenerator.generateID()); printWriter.flush(); } finally { if (printWriter != null) { printWriter.close(); } } } public long getFileRevisionNumber() throws SVNException { SVNURL url= urlManager.getSVNURL(urlManager.joinByURLSeparator(urlManager.getPersonalWorkspaceURL(), FILENAME)); SVNInfo info= workingCopyClient.doInfo(url, SVNRevision.HEAD, SVNRevision.HEAD); return info.getRevision().getNumber(); } public AuthenticationInfo getAuthenticationInfo() { return new AuthenticationInfo(username, password, false); } }