SnapshotRepositoryBuilder.java 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. package uk.ac.ic.wlgitbridge.writelatex;
  2. import org.eclipse.jgit.errors.RepositoryNotFoundException;
  3. import org.eclipse.jgit.lib.Repository;
  4. import org.eclipse.jgit.storage.file.FileRepositoryBuilder;
  5. import org.eclipse.jgit.transport.resolver.ServiceNotEnabledException;
  6. import uk.ac.ic.wlgitbridge.bridge.RepositorySource;
  7. import uk.ac.ic.wlgitbridge.bridge.WLBridgedProject;
  8. import uk.ac.ic.wlgitbridge.bridge.WriteLatexDataSource;
  9. import uk.ac.ic.wlgitbridge.writelatex.api.request.exception.FailedConnectionException;
  10. import java.io.File;
  11. import java.io.IOException;
  12. /**
  13. * Created by Winston on 03/11/14.
  14. */
  15. public class SnapshotRepositoryBuilder implements RepositorySource {
  16. private final WriteLatexDataSource writeLatexDataSource;
  17. public SnapshotRepositoryBuilder(WriteLatexDataSource writeLatexDataSource) {
  18. this.writeLatexDataSource = writeLatexDataSource;
  19. }
  20. @Override
  21. public Repository getRepositoryWithNameAtRootDirectory(String name, File rootDirectory) throws RepositoryNotFoundException, ServiceNotEnabledException {
  22. try {
  23. if (!writeLatexDataSource.repositoryExists(name)) {
  24. throw new RepositoryNotFoundException(name);
  25. }
  26. } catch (FailedConnectionException e) {
  27. throw new ServiceNotEnabledException();
  28. }
  29. File repositoryDirectory = new File(rootDirectory, name);
  30. Repository repository = null;
  31. try {
  32. repository = new FileRepositoryBuilder().setWorkTree(repositoryDirectory).build();
  33. new WLBridgedProject(repository, name, writeLatexDataSource).buildRepository();
  34. } catch (FailedConnectionException e) {
  35. e.printStackTrace();
  36. throw new ServiceNotEnabledException();
  37. } catch (IOException e) {
  38. throw new ServiceNotEnabledException();
  39. }
  40. return repository;
  41. }
  42. }