|
@@ -3,8 +3,12 @@ package uk.ac.ic.wlgitbridge.writelatex.model;
|
|
|
import com.google.gson.JsonElement;
|
|
import com.google.gson.JsonElement;
|
|
|
import uk.ac.ic.wlgitbridge.writelatex.api.request.base.Request;
|
|
import uk.ac.ic.wlgitbridge.writelatex.api.request.base.Request;
|
|
|
import uk.ac.ic.wlgitbridge.writelatex.api.request.getdoc.SnapshotGetDocRequest;
|
|
import uk.ac.ic.wlgitbridge.writelatex.api.request.getdoc.SnapshotGetDocRequest;
|
|
|
|
|
+import uk.ac.ic.wlgitbridge.writelatex.api.request.getdoc.SnapshotGetDocResult;
|
|
|
|
|
+import uk.ac.ic.wlgitbridge.writelatex.api.request.getforversion.SnapshotData;
|
|
|
import uk.ac.ic.wlgitbridge.writelatex.api.request.getforversion.SnapshotGetForVersionRequest;
|
|
import uk.ac.ic.wlgitbridge.writelatex.api.request.getforversion.SnapshotGetForVersionRequest;
|
|
|
|
|
+import uk.ac.ic.wlgitbridge.writelatex.api.request.getforversion.SnapshotGetForVersionResult;
|
|
|
import uk.ac.ic.wlgitbridge.writelatex.api.request.getsavedvers.SnapshotGetSavedVersRequest;
|
|
import uk.ac.ic.wlgitbridge.writelatex.api.request.getsavedvers.SnapshotGetSavedVersRequest;
|
|
|
|
|
+import uk.ac.ic.wlgitbridge.writelatex.api.request.getsavedvers.SnapshotInfo;
|
|
|
|
|
|
|
|
import java.io.IOException;
|
|
import java.io.IOException;
|
|
|
import java.util.*;
|
|
import java.util.*;
|
|
@@ -20,6 +24,9 @@ public class WLProject implements JSONModel {
|
|
|
private final Map<Integer, Snapshot> snapshots;
|
|
private final Map<Integer, Snapshot> snapshots;
|
|
|
private final SortedSet<Integer> versions;
|
|
private final SortedSet<Integer> versions;
|
|
|
private int latestVersionID;
|
|
private int latestVersionID;
|
|
|
|
|
+ private List<Snapshot> snapshotsToAdd;
|
|
|
|
|
+ private SortedSet<Integer> idsToUpdate;
|
|
|
|
|
+ private HashMap<Integer, SnapshotInfo> msg;
|
|
|
|
|
|
|
|
public WLProject(String name) {
|
|
public WLProject(String name) {
|
|
|
this.name = name;
|
|
this.name = name;
|
|
@@ -33,18 +40,25 @@ public class WLProject implements JSONModel {
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- public void update() throws InterruptedException, ExecutionException, IOException {
|
|
|
|
|
|
|
+ public void update() throws Throwable {
|
|
|
getNew();
|
|
getNew();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- private boolean getNew() throws InterruptedException, ExecutionException, IOException {
|
|
|
|
|
- Request getDoc = new SnapshotGetDocRequest(name);
|
|
|
|
|
- Request getSavedVers = new SnapshotGetSavedVersRequest(name);
|
|
|
|
|
|
|
+ private boolean getNew() throws Throwable {
|
|
|
|
|
+ SnapshotGetDocRequest getDoc = new SnapshotGetDocRequest(name);
|
|
|
|
|
+ SnapshotGetSavedVersRequest getSavedVers = new SnapshotGetSavedVersRequest(name);
|
|
|
|
|
|
|
|
getDoc.request();
|
|
getDoc.request();
|
|
|
getSavedVers.request();
|
|
getSavedVers.request();
|
|
|
|
|
|
|
|
- List<Integer> ids = new LinkedList<Integer>();
|
|
|
|
|
|
|
+ List<Integer> fetchedIDs = new LinkedList<Integer>();
|
|
|
|
|
+ fetchedIDs.add(getDoc.getResult().getVersionID());
|
|
|
|
|
+
|
|
|
|
|
+ for (SnapshotInfo snapshotInfo : getSavedVers.getResult().getSavedVers()) {
|
|
|
|
|
+ msg = new HashMap<Integer, SnapshotInfo>();
|
|
|
|
|
+ msg.put(snapshotInfo.getVersionId(), snapshotInfo);
|
|
|
|
|
+ fetchedIDs.add(snapshotInfo.getVersionId());
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
boolean result = false;
|
|
boolean result = false;
|
|
|
|
|
|
|
@@ -52,10 +66,10 @@ public class WLProject implements JSONModel {
|
|
|
|
|
|
|
|
// ids.addAll(getLatestVersionIDs(getSavedVers.getResult()));
|
|
// ids.addAll(getLatestVersionIDs(getSavedVers.getResult()));
|
|
|
|
|
|
|
|
- List<Integer> idsToUpdate = new LinkedList<Integer>();
|
|
|
|
|
|
|
+ idsToUpdate = new TreeSet<Integer>();
|
|
|
|
|
|
|
|
boolean hasNew = false;
|
|
boolean hasNew = false;
|
|
|
- for (Integer id : ids) {
|
|
|
|
|
|
|
+ for (Integer id : fetchedIDs) {
|
|
|
boolean contains = versions.contains(id);
|
|
boolean contains = versions.contains(id);
|
|
|
result = result || contains;
|
|
result = result || contains;
|
|
|
if (!contains) {
|
|
if (!contains) {
|
|
@@ -68,14 +82,27 @@ public class WLProject implements JSONModel {
|
|
|
return result;
|
|
return result;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- private void updateIDs(List<Integer> idsToUpdate) {
|
|
|
|
|
- List<Request> requests = new LinkedList<Request>();
|
|
|
|
|
|
|
+ private void updateIDs(SortedSet<Integer> idsToUpdate) throws Throwable {
|
|
|
|
|
+ List<SnapshotGetForVersionRequest> requests = new LinkedList<SnapshotGetForVersionRequest>();
|
|
|
for (int id : idsToUpdate) {
|
|
for (int id : idsToUpdate) {
|
|
|
SnapshotGetForVersionRequest request = new SnapshotGetForVersionRequest(name, id);
|
|
SnapshotGetForVersionRequest request = new SnapshotGetForVersionRequest(name, id);
|
|
|
requests.add(request);
|
|
requests.add(request);
|
|
|
request.request();
|
|
request.request();
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
|
|
+ for (SnapshotGetForVersionRequest request : requests) {
|
|
|
|
|
+ SnapshotGetForVersionResult result = request.getResult();
|
|
|
|
|
+ SnapshotData data = result.getSnapshotData();
|
|
|
|
|
+ Snapshot snapshot = new Snapshot(request.getVersionID(), data);
|
|
|
|
|
+ snapshots.put(request.getVersionID(), snapshot);
|
|
|
|
|
+ }
|
|
|
|
|
+ snapshotsToAdd = new LinkedList<Snapshot>();
|
|
|
|
|
+ for (int id : idsToUpdate) {
|
|
|
|
|
+ snapshotsToAdd.add(snapshots.get(id));
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public List<Snapshot> getSnapshotsToAdd() {
|
|
|
|
|
+ return snapshotsToAdd;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
}
|
|
}
|