|
|
@@ -1,49 +1,48 @@
|
|
|
-package uk.ac.ic.wlgitbridge.writelatex;
|
|
|
+package uk.ac.ic.wlgitbridge.bridge;
|
|
|
|
|
|
import org.eclipse.jgit.api.errors.GitAPIException;
|
|
|
import org.eclipse.jgit.lib.Repository;
|
|
|
import org.eclipse.jgit.transport.ServiceMayNotContinueException;
|
|
|
-import uk.ac.ic.wlgitbridge.bridge.RawDirectory;
|
|
|
-import uk.ac.ic.wlgitbridge.bridge.WriteLatexDataSource;
|
|
|
+import uk.ac.ic.wlgitbridge.data.CandidateSnapshot;
|
|
|
+import uk.ac.ic.wlgitbridge.data.ProjectLock;
|
|
|
+import uk.ac.ic.wlgitbridge.data.ShutdownHook;
|
|
|
+import uk.ac.ic.wlgitbridge.data.model.DataStore;
|
|
|
+import uk.ac.ic.wlgitbridge.data.filestore.RawDirectory;
|
|
|
+import uk.ac.ic.wlgitbridge.snapshot.exception.FailedConnectionException;
|
|
|
+import uk.ac.ic.wlgitbridge.snapshot.getdoc.SnapshotGetDocRequest;
|
|
|
+import uk.ac.ic.wlgitbridge.snapshot.getdoc.exception.InvalidProjectException;
|
|
|
+import uk.ac.ic.wlgitbridge.snapshot.push.PostbackManager;
|
|
|
+import uk.ac.ic.wlgitbridge.snapshot.push.SnapshotPushRequest;
|
|
|
+import uk.ac.ic.wlgitbridge.snapshot.push.SnapshotPushRequestResult;
|
|
|
+import uk.ac.ic.wlgitbridge.snapshot.push.exception.*;
|
|
|
import uk.ac.ic.wlgitbridge.util.Util;
|
|
|
-import uk.ac.ic.wlgitbridge.writelatex.api.request.exception.FailedConnectionException;
|
|
|
-import uk.ac.ic.wlgitbridge.writelatex.api.request.getdoc.SnapshotGetDocRequest;
|
|
|
-import uk.ac.ic.wlgitbridge.writelatex.api.request.getdoc.exception.InvalidProjectException;
|
|
|
-import uk.ac.ic.wlgitbridge.writelatex.api.request.push.PostbackManager;
|
|
|
-import uk.ac.ic.wlgitbridge.writelatex.api.request.push.SnapshotPushRequest;
|
|
|
-import uk.ac.ic.wlgitbridge.writelatex.api.request.push.SnapshotPushRequestResult;
|
|
|
-import uk.ac.ic.wlgitbridge.writelatex.api.request.push.exception.*;
|
|
|
-import uk.ac.ic.wlgitbridge.writelatex.model.DataStore;
|
|
|
|
|
|
import java.io.IOException;
|
|
|
|
|
|
/**
|
|
|
* Created by Winston on 16/11/14.
|
|
|
*/
|
|
|
-public class WriteLatexAPI implements WriteLatexDataSource {
|
|
|
+public class BridgeAPI {
|
|
|
|
|
|
private final DataStore dataModel;
|
|
|
private final PostbackManager postbackManager;
|
|
|
private final ProjectLock mainProjectLock;
|
|
|
|
|
|
- public WriteLatexAPI(DataStore dataModel) {
|
|
|
+ public BridgeAPI(DataStore dataModel) {
|
|
|
this.dataModel = dataModel;
|
|
|
postbackManager = new PostbackManager();
|
|
|
mainProjectLock = new ProjectLock();
|
|
|
Runtime.getRuntime().addShutdownHook(new ShutdownHook(mainProjectLock));
|
|
|
}
|
|
|
|
|
|
- @Override
|
|
|
public void lockForProject(String projectName) {
|
|
|
mainProjectLock.lockForProject(projectName);
|
|
|
}
|
|
|
|
|
|
- @Override
|
|
|
public void unlockForProject(String projectName) {
|
|
|
mainProjectLock.unlockForProject(projectName);
|
|
|
}
|
|
|
|
|
|
- @Override
|
|
|
public boolean repositoryExists(String projectName) throws ServiceMayNotContinueException {
|
|
|
lockForProject(projectName);
|
|
|
SnapshotGetDocRequest snapshotGetDocRequest = new SnapshotGetDocRequest(projectName);
|
|
|
@@ -62,13 +61,11 @@ public class WriteLatexAPI implements WriteLatexDataSource {
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
- @Override
|
|
|
public void getWritableRepositories(String projectName, Repository repository) throws IOException, SnapshotPostException, GitAPIException {
|
|
|
Util.sout("Fetching project: " + projectName);
|
|
|
dataModel.updateProjectWithName(projectName, repository);
|
|
|
}
|
|
|
|
|
|
- @Override
|
|
|
public void putDirectoryContentsToProjectWithName(String projectName, RawDirectory directoryContents, RawDirectory oldDirectoryContents, String hostname) throws SnapshotPostException, IOException {
|
|
|
mainProjectLock.lockForProject(projectName);
|
|
|
CandidateSnapshot candidate = null;
|
|
|
@@ -99,18 +96,15 @@ public class WriteLatexAPI implements WriteLatexDataSource {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- @Override
|
|
|
public void checkPostbackKey(String projectName, String postbackKey) throws InvalidPostbackKeyException {
|
|
|
postbackManager.checkPostbackKey(projectName, postbackKey);
|
|
|
}
|
|
|
|
|
|
/* Called by postback thread. */
|
|
|
- @Override
|
|
|
public void postbackReceivedSuccessfully(String projectName, String postbackKey, int versionID) throws UnexpectedPostbackException {
|
|
|
postbackManager.postVersionIDForProject(projectName, versionID, postbackKey);
|
|
|
}
|
|
|
|
|
|
- @Override
|
|
|
public void postbackReceivedWithException(String projectName, String postbackKey, SnapshotPostException exception) throws UnexpectedPostbackException {
|
|
|
postbackManager.postExceptionForProject(projectName, exception, postbackKey);
|
|
|
}
|