WLProject.java 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. package uk.ac.ic.wlgitbridge.writelatex.model;
  2. import com.google.gson.JsonElement;
  3. import uk.ac.ic.wlgitbridge.writelatex.api.request.base.Request;
  4. import uk.ac.ic.wlgitbridge.writelatex.api.request.getdoc.SnapshotGetDocRequest;
  5. import uk.ac.ic.wlgitbridge.writelatex.api.request.getforversion.SnapshotGetForVersionRequest;
  6. import uk.ac.ic.wlgitbridge.writelatex.api.request.getsavedvers.SnapshotGetSavedVersRequest;
  7. import java.io.IOException;
  8. import java.util.*;
  9. import java.util.concurrent.ExecutionException;
  10. /**
  11. * Created by Winston on 06/11/14.
  12. */
  13. public class WLProject implements JSONModel {
  14. private final String name;
  15. public static final int VERSION_ID_INVALID = -1;
  16. private final Map<Integer, Snapshot> snapshots;
  17. private final SortedSet<Integer> versions;
  18. private int latestVersionID;
  19. public WLProject(String name) {
  20. this.name = name;
  21. snapshots = new HashMap<Integer, Snapshot>();
  22. versions = new TreeSet<Integer>();
  23. latestVersionID = VERSION_ID_INVALID;
  24. }
  25. @Override
  26. public void updateFromJSON(JsonElement json) {
  27. }
  28. public void update() throws InterruptedException, ExecutionException, IOException {
  29. getNew();
  30. }
  31. private boolean getNew() throws InterruptedException, ExecutionException, IOException {
  32. Request getDoc = new SnapshotGetDocRequest(name);
  33. Request getSavedVers = new SnapshotGetSavedVersRequest(name);
  34. getDoc.request();
  35. getSavedVers.request();
  36. List<Integer> ids = new LinkedList<Integer>();
  37. boolean result = false;
  38. // ids.add(getLatestVersionID(getDoc.getResult()));
  39. // ids.addAll(getLatestVersionIDs(getSavedVers.getResult()));
  40. List<Integer> idsToUpdate = new LinkedList<Integer>();
  41. boolean hasNew = false;
  42. for (Integer id : ids) {
  43. boolean contains = versions.contains(id);
  44. result = result || contains;
  45. if (!contains) {
  46. idsToUpdate.add(id);
  47. }
  48. }
  49. updateIDs(idsToUpdate);
  50. return result;
  51. }
  52. private void updateIDs(List<Integer> idsToUpdate) {
  53. List<Request> requests = new LinkedList<Request>();
  54. for (int id : idsToUpdate) {
  55. SnapshotGetForVersionRequest request = new SnapshotGetForVersionRequest(name, id);
  56. requests.add(request);
  57. request.request();
  58. }
  59. }
  60. }