From f103c7e3b5da57a7bcfad92e4dd6a75f9da749eb Mon Sep 17 00:00:00 2001 From: Winston Li Date: Wed, 19 Nov 2014 19:01:18 +0000 Subject: [PATCH] Loading WLProjectStore from database. --- .../wlgitbridge/writelatex/model/WLProject.java | 13 ++++++++++++- .../writelatex/model/WLProjectStore.java | 16 +++++++++++----- .../model/db/PersistentStoreSource.java | 10 ++++++++++ .../writelatex/model/db/WLDatabaseSource.java | 10 ---------- 4 files changed, 33 insertions(+), 16 deletions(-) create mode 100644 services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/model/db/PersistentStoreSource.java delete mode 100644 services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/model/db/WLDatabaseSource.java diff --git a/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/model/WLProject.java b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/model/WLProject.java index 6bca8a4fda..8ec978659a 100644 --- a/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/model/WLProject.java +++ b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/model/WLProject.java @@ -3,6 +3,8 @@ package uk.ac.ic.wlgitbridge.writelatex.model; import uk.ac.ic.wlgitbridge.writelatex.SnapshotFetcher; import uk.ac.ic.wlgitbridge.writelatex.api.request.exception.FailedConnectionException; import uk.ac.ic.wlgitbridge.writelatex.api.request.getdoc.exception.InvalidProjectException; +import uk.ac.ic.wlgitbridge.writelatex.model.db.PersistentStoreAPI; +import uk.ac.ic.wlgitbridge.writelatex.model.db.PersistentStoreSource; import java.util.HashMap; import java.util.Map; @@ -11,7 +13,7 @@ import java.util.SortedSet; /** * Created by Winston on 06/11/14. */ -public class WLProject { +public class WLProject implements PersistentStoreSource { private final String name; private final Map snapshots; @@ -25,6 +27,11 @@ public class WLProject { snapshotFetcher = new SnapshotFetcher(name, snapshots); } + public WLProject(String projectName, PersistentStoreAPI database) { + this(projectName); + initFromPersistentStore(database); + } + public SortedSet fetchNewSnapshots() throws FailedConnectionException, InvalidProjectException { SortedSet newSnapshots = snapshotFetcher.fetchNewSnapshots(); latestSnapshotID = snapshotFetcher.getLatestSnapshot().getVersionID(); @@ -45,4 +52,8 @@ public class WLProject { latestSnapshotID = versionID; } + @Override + public void initFromPersistentStore(PersistentStoreAPI persistentStore) { + + } } diff --git a/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/model/WLProjectStore.java b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/model/WLProjectStore.java index 060aadec41..1c380c71fd 100644 --- a/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/model/WLProjectStore.java +++ b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/model/WLProjectStore.java @@ -1,7 +1,7 @@ package uk.ac.ic.wlgitbridge.writelatex.model; import uk.ac.ic.wlgitbridge.writelatex.model.db.PersistentStoreAPI; -import uk.ac.ic.wlgitbridge.writelatex.model.db.WLDatabaseSource; +import uk.ac.ic.wlgitbridge.writelatex.model.db.PersistentStoreSource; import java.util.ArrayList; import java.util.HashMap; @@ -11,8 +11,9 @@ import java.util.Map; /** * Created by Winston on 17/11/14. */ -public class WLProjectStore implements WLDatabaseSource { +public class WLProjectStore implements PersistentStoreSource { + private PersistentStoreAPI persistentStore; private final Map projects; public WLProjectStore() { @@ -21,7 +22,7 @@ public class WLProjectStore implements WLDatabaseSource { public WLProjectStore(PersistentStoreAPI persistentStore) { this(); - initFromDatabase(persistentStore); + initFromPersistentStore(persistentStore); } public WLProject getProjectWithName(String name) { @@ -31,6 +32,7 @@ public class WLProjectStore implements WLDatabaseSource { } else { project = new WLProject(name); projects.put(name, project); + persistentStore.addProject(name); } return project; } @@ -40,7 +42,11 @@ public class WLProjectStore implements WLDatabaseSource { } @Override - public void initFromDatabase(PersistentStoreAPI database) { - + public void initFromPersistentStore(PersistentStoreAPI persistentStore) { + this.persistentStore = persistentStore; + for (String projectName : persistentStore.getProjectNames()) { + projects.put(projectName, new WLProject(projectName, persistentStore)); + } } + } diff --git a/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/model/db/PersistentStoreSource.java b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/model/db/PersistentStoreSource.java new file mode 100644 index 0000000000..df087be011 --- /dev/null +++ b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/model/db/PersistentStoreSource.java @@ -0,0 +1,10 @@ +package uk.ac.ic.wlgitbridge.writelatex.model.db; + +/** + * Created by Winston on 19/11/14. + */ +public interface PersistentStoreSource { + + public void initFromPersistentStore(PersistentStoreAPI persistentStore); + +} diff --git a/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/model/db/WLDatabaseSource.java b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/model/db/WLDatabaseSource.java deleted file mode 100644 index 58c12aa6f4..0000000000 --- a/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/model/db/WLDatabaseSource.java +++ /dev/null @@ -1,10 +0,0 @@ -package uk.ac.ic.wlgitbridge.writelatex.model.db; - -/** - * Created by Winston on 19/11/14. - */ -public interface WLDatabaseSource { - - public void initFromDatabase(PersistentStoreAPI database); - -}