WLDirectoryNodeSnapshot.java 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. package uk.ac.ic.wlgitbridge.writelatex;
  2. import com.google.gson.JsonArray;
  3. import com.google.gson.JsonElement;
  4. import com.google.gson.JsonObject;
  5. import uk.ac.ic.wlgitbridge.bridge.CandidateSnapshot;
  6. import uk.ac.ic.wlgitbridge.bridge.CandidateSnapshotCallback;
  7. import uk.ac.ic.wlgitbridge.writelatex.filestore.node.FileNode;
  8. import uk.ac.ic.wlgitbridge.writelatex.filestore.node.WLDirectoryNode;
  9. import uk.ac.ic.wlgitbridge.writelatex.model.WLProject;
  10. /**
  11. * Created by Winston on 16/11/14.
  12. */
  13. public class WLDirectoryNodeSnapshot implements CandidateSnapshot {
  14. private final int previousVersionID;
  15. private final String projectName;
  16. private final String projectURL;
  17. private final WLDirectoryNode directoryNode;
  18. private final CandidateSnapshotCallback callback;
  19. public WLDirectoryNodeSnapshot(WLProject project, WLDirectoryNode directoryNode, String hostname, CandidateSnapshotCallback callback) {
  20. previousVersionID = project.getLatestSnapshotID();
  21. projectName = project.getName();
  22. projectURL = "http://" + hostname + "/" + projectName;
  23. this.directoryNode = directoryNode;
  24. this.callback = callback;
  25. System.out.println(getJsonRepresentation());
  26. }
  27. @Override
  28. public JsonElement getJsonRepresentation() {
  29. JsonObject jsonObject = new JsonObject();
  30. jsonObject.addProperty("latestVerId", previousVersionID);
  31. jsonObject.add("files", getFilesAsJson());
  32. jsonObject.addProperty("postbackUrl", projectURL + "/postback");
  33. return jsonObject;
  34. }
  35. private JsonArray getFilesAsJson() {
  36. JsonArray filesArray = new JsonArray();
  37. for (FileNode fileNode : directoryNode.getFileNodes()) {
  38. filesArray.add(getFileAsJson(fileNode));
  39. }
  40. return filesArray;
  41. }
  42. private JsonObject getFileAsJson(FileNode fileNode) {
  43. JsonObject file = new JsonObject();
  44. file.addProperty("name", fileNode.getFilePath());
  45. if (fileNode.isChanged()) {
  46. file.addProperty("url", projectURL + "/" + fileNode.getFilePath());
  47. }
  48. return file;
  49. }
  50. @Override
  51. public int getPreviousVersionID() {
  52. return previousVersionID;
  53. }
  54. @Override
  55. public String getProjectURL() {
  56. return projectURL;
  57. }
  58. @Override
  59. public void approveWithVersionID(int versionID) {
  60. callback.approveSnapshot(versionID, this);
  61. }
  62. @Override
  63. public String getProjectName() {
  64. return projectName;
  65. }
  66. @Override
  67. public WLDirectoryNode getDirectoryNode() {
  68. return directoryNode;
  69. }
  70. }