WLDataModel.java 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. package uk.ac.ic.wlgitbridge.writelatex.model;
  2. import uk.ac.ic.wlgitbridge.bridge.CandidateSnapshot;
  3. import uk.ac.ic.wlgitbridge.bridge.RawDirectoryContents;
  4. import uk.ac.ic.wlgitbridge.bridge.WritableRepositoryContents;
  5. import uk.ac.ic.wlgitbridge.bridge.WriteLatexDataSource;
  6. import uk.ac.ic.wlgitbridge.writelatex.api.request.exception.FailedConnectionException;
  7. import uk.ac.ic.wlgitbridge.writelatex.api.request.getdoc.SnapshotGetDocRequest;
  8. import uk.ac.ic.wlgitbridge.writelatex.api.request.getdoc.exception.InvalidProjectException;
  9. import uk.ac.ic.wlgitbridge.writelatex.filestore.store.WLFileStore;
  10. import java.util.HashMap;
  11. import java.util.List;
  12. import java.util.Map;
  13. /**
  14. * Created by Winston on 06/11/14.
  15. */
  16. public class WLDataModel implements WriteLatexDataSource {
  17. private final Map<String, WLProject> projects;
  18. private final WLFileStore fileStore;
  19. public WLDataModel(String rootGitDirectoryPath) {
  20. projects = new HashMap<String, WLProject>();
  21. fileStore = new WLFileStore(rootGitDirectoryPath);
  22. }
  23. @Override
  24. public boolean repositoryExists(String name) throws FailedConnectionException {
  25. SnapshotGetDocRequest snapshotGetDocRequest = new SnapshotGetDocRequest(name);
  26. snapshotGetDocRequest.request();
  27. try {
  28. snapshotGetDocRequest.getResult().getVersionID();
  29. } catch (InvalidProjectException e) {
  30. return false;
  31. }
  32. return true;
  33. }
  34. @Override
  35. public List<WritableRepositoryContents> getWritableRepositories(String name) throws FailedConnectionException, InvalidProjectException {
  36. return updateProjectWithName(name);
  37. }
  38. @Override
  39. public CandidateSnapshot createCandidateSnapshot(RawDirectoryContents rawDirectoryContents) {
  40. return null;
  41. }
  42. @Override
  43. public void approveCandidateSnapshot(CandidateSnapshot candidateSnapshot) {
  44. }
  45. private List<WritableRepositoryContents> updateProjectWithName(String name) throws FailedConnectionException, InvalidProjectException {
  46. return fileStore.updateForProject(getProjectWithName(name));
  47. }
  48. private WLProject getProjectWithName(String name) {
  49. WLProject project;
  50. if (projects.containsKey(name)) {
  51. project = projects.get(name);
  52. } else {
  53. project = new WLProject(name);
  54. projects.put(name, project);
  55. }
  56. return project;
  57. }
  58. }